当初、マネージコードやガベージコレクションなどの性質上、Androidでのメモリリークの可能性についてはあまり注意を払っていませんでした。これは少しナイーブだったのではないかと思います。ここに質問があります:
アクティビティがあるとしましょう-MyActivity。OSが起動すると、onCreate()で別のクラス(MyOtherClass)がインスタンス化され、そのクラスへの参照が保持されます。ただし、MyOtherClassのインスタンスは、コンテキストへの参照も保持していると言います。これは、MyActivityのインスタンスへの参照でもあります。
ここで何かが起こります-画面が回転するとします。OSはアクティビティonDestroy()を呼び出し、MyActivityの古いインスタンスへの参照を削除します。ただし、そのアクティビティインスタンスには、引き続きMyOtherClassのインスタンスへの参照があり、MyOtherClassにはアクティビティへのインスタンスがあります。
それで、私はこれらの2つのクラスがお互いを永遠に生き続けるだろうと思っているのは正しいですか?
もしそうなら、考えられる答えは、(a)コンテキスト参照を保持しない、別の方法で取得する、または(b)アクティビティonDestroy()で、他の参照を削除することです。そうすれば、すべてが崩壊するはずです。 。