私はこの「特性」に悩まされてきました: 戻るボタンを使用してアプリを終了すると、onDestroy() が呼び出されたことがわかりますが、次回アプリを実行すると、Activity クラスのすべての静的メンバーがまだ保持されます。値。以下のコードを参照してください。
public class HelloAndroid extends Activity {
private static int mValue; // a static member here
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText((mValue != 0) ?
("Left-over value = " + mValue) : "This is a new instance");
setContentView(tv);
}
public void onDestroy() {
super.onDestroy();
mValue++;
}
}
上記のコードは、残りの値を mValue に表示し、セッションが終了すると増加するため、onDestroy() が呼び出されたことを確認できます。
このフォーラムで役立つ回答を見つけました。上記のコードでは、mValue がインスタンス メンバーではなくクラス メンバーであることを理解しています。しかし、この特定のケースでは、HelloAndroid アクティビティが 1 つしかないので、彼が死ぬとすべてがクリーンアップされ、次に戻ってきたときにすべてが最初からやり直されるというのは本当ではないでしょうか? (または、システム内に、 onDestroy() の後にまだそれを保持していて、それが死なないようにしている他の不思議なものがありますか???)
(上記は単なる変数です。オブジェクト参照の束である場合はどうなるでしょうか?各ピースは個別に再収集可能なメモリです。GC がそれらの一部を収集する可能性はありますが、すべてかゼロかではありませんか?これは本当に私を悩ませます. )