3

Android アプリケーションでメモリ リークに関する問題が発生しました。

アクティビティ 1 からアクティビティ 2 に startActivity を使用し、戻るボタンを押してアクティビティ 1 に戻ります。サーバー時間を繰り返します。adb シェルは、アプリケーションの RSS が上昇し、ドロップダウンできないことを示しています。最後に VM がシャットダウンされます。

次に、MAT を使用して次のことを見つけます。

Leak Suspects» Leaks» Problem Suspect 1 Description
59 instances of "android.database.ContentObserver$Transport", loaded by "<system class loader>" occupy 1,569,864 (39.41%) bytes. 

Keywords
android.database.ContentObserver$Transport

 Reference Pattern
Class Name Shallow Heap Retained Heap Percentage 
class android.database.ContentObserver$Transport @ 0x40308cc0 0 0 0.00% 

しかし、私はそのクラスを使用したことはありません.どうすれば本当の理由を見つけることができますか?

4

1 に答える 1

0

CursorAdapter を使用していますか? 適切に初期化されていない場合、ContentObserver に作成され、リークが発生する可能性があります。

CursorAdapter には、このコンストラクターを使用する必要があります。フラグ 0 は、独自の ContentObserver の作成を停止します。

new CursorAdapter(context, cursor, 0) 
于 2013-07-06T10:59:56.743 に答える