2017-11-17 8 views
1

メソッド内でasynctaskとして作成しました。しかし、警告が表示されます。このAsyncTaskクラスは静的でなければならないか、リークが発生する可能性があります。

このAsyncTaskクラスには、静的であるべきか、漏れが静的フィールドは、コンテキストをリークします。..(匿名 android.os.AsyncTask)以下を発生する可能性があります。 非静的内部クラスは、外部の クラスへの暗黙の参照を持ちます。その外部クラスが例えばフラグメントまたはアクティビティの場合、 この参照は、長時間実行するハンドラ/ローダ/タスクが ガベージコレクションを取得できないようにするアクティビティへの参照を保持することを意味します。同様に、アクティビティ へのダイレクトフィールド参照およびこれらのより長い実行中のインスタンスからのフラグメントは、リークを引き起こす可能性があります。 ViewModelクラスはビューまたは非アプリケーション コンテキストを指してはなりません。

この警告を回避するにはどうすればよいですか?

答えて

0

あなたの携帯電話のメモリ内であなたの活動/断片を漏らすことができるということです。

アクティビティコンテキストを使用するAsyncTaskを作成した場合、またはAsyncTaskがアクティビティ/フラグメントの子である場合、アクティビティ/フラグメントはメモリ内に保持されます。 periodeでローテーションまたはアクティビティを変更すると、AsyncTaskが実行されます。古いアクティビティー・インスタンスをメモリー内に保持し、アクティビティー/フラグメントをリークしています。

関連する問題