アプリケーション アクティビティでウィンドウ リークが発生しましたが、これを修正しました。しかし、Android のメモリ アナライザー ツール - ヒストグラム ビューを使用してアプリをテストすると、アクティビティの 2 つのインスタンスが見つかりました。
クラス名 | オブジェクト | 浅いヒープ | 保持ヒープ
. MATDemoActivity. | | | | | |
com.pace.mat.MATDemoActivity | 2 | 368 |
合計: 1 エントリ (2,195 フィルタ)| | | | |
メモリリークがないのに、どうやって2つのオブジェクトになるのでしょうか? MAT結果のデータを理解するのを手伝ってください....よろしくお願いします
このリンクで完全なコードと関連する議論を見つけてください。
=================
Activity 1st -> 2nd -> 1st から始めるとわかりました。1 番目のアクティビティ クラスの浅いヒープ = 2 および 2 番目のアクティビティ クラス = 1 で、1 番目から移動する場合 -> 2 番目 -> 1 番目 -> 2 番目 ... 1 番目のアクティビティ クラスの浅いヒープ = 1 および 2 番目のアクティビティ クラス = 2。
だから私は起動モードで試しました。すべてのアクティビティに android:launchMode="singleTask" を設定しました。現在、両方のアクティビティの浅いヒープは、ページに移動した回数と同じです。しかし、この起動モードでは複数のインスタンスが許可されていないため、浅いヒープ オブジェクトのカウントが 1 にならないのはなぜですか?
これをよりよく理解するのに役立つアイデアを共有してください。