2016-06-21 4 views
2

は、向きの変更の非同期タスクがメモリリークにつながることができますどのように同じのより深い理解を持っていると思います。私は研究の私のビットを行っているが、向きの変更は、Androidのフレームワークは、(ゴミが割り当てられたメモリを収集)し、新しいものを作成し、活動を破棄するとき、通常、正確なソリューションどのように非同期のタスクとカーソルがメモリリークにつながる?

答えて

0

を見つけることができませんでした。

AsyncTaskを実行していて、Activityクラスオブジェクトへの参照を保持し、方向が変更されているとします。ここで、Androidフレームワークはアクティビティを破棄することはできません(それはまだあなたのAsyncTaskによって参照されています)。新しいフレームワークが作成されます。これはメモリリークがどのように起こるかの1つです。

0

あなたはAsyncTaskのインスタンスを作成するとき、あなたは「この」またはコンテキストを使用して、その中にアクティビティの参照を渡します。 asyncTaskが動作しているときにデバイスをローテーションすると、アクティビティが再作成され、メモリリークの原因となるAsyncTaskで以前のインスタンスを使用できるようになります。

ベストプラクティスpostExecuteでyourActivity.this.isFinishing()をチェックすると、UIを更新しないです。 cancel()メソッドを使用してasyncTaskを取り消すことができます。

関連する問題