私が理解しているように、アプリが破壊され、アプリの「見かけのライフサイクル」で数回再作成される可能性があるため、シングルトンがAndroidアプリで永続データを保持することは期待できません。これ自体は私にとって問題ではありません。問題は、アプリがこの破棄->作成プロセスを通過したときに正確に何が起こるかにあります。
私はフォーラムでアプリが新しいプロセスで再作成されることを読みました、そして私はすべてのメモリ管理を備えた古いプロセスが破壊されると思います。ただし、これは、相互参照を保持するノードを持つすべてのシングルトンと論理ツリーをクリーンアップするのは開発者の責任であることを意味しますか?または、プロセスを破棄すると、すべてが自動的にクリーンアップされますか?私は経験豊富なJava開発者ではないので、GCについてはまだ多くのことがわかりません。
私が取り組んでいる特定のプロジェクトは、デバイスの稼働時間全体で1つのアプリのみを実行します。デスクトップ用語では、アプリケーションはデバイスのシャットダウン時にのみシャットダウンし、常に同じプロセスで動作するため、シングルトンを介したメモリリークの危険性はありません。ただし、Androidではさらに困難になります。
ちなみに、エミュレータを使用するAndroid用の優れたメモリリーク検出器は何ですか?