私はAndroidのアクティビティのライフサイクルに精通していますが、ここでかなり明白なはずの何かが欠けているように感じます。
マルチアクティビティのAndroidアプリを持っています。(アプリケーションクラスの)静的変数を使用して、さまざまなビューで使用されるさまざまなオブジェクトのハンドルを保持します。この問題は、アプリが一時停止(終了)し、Android(おそらく)がフォアグラウンドプロセスを維持するためにメモリをクリーンアップするときに発生します。ユーザーがアプリを再開すると、ときどき(常にではない)、ユーザーが残したアクティビティで再開して再開するように見えますが、静的変数はnullになっています。さらに悪いことに、静的変数がまだ存在しているが、オブジェクトの内部変数がnullになっていると、アクティビティが再開するように見えることがあります。
最終的に、単純な健全性チェックを実装しました。これは、統計がnullになっていないこと(および関連するオブジェクトの最も重要な内部変数)をチェックし、失敗した場合にアプリを起動するように返します。これにより、問題が大幅に削減されましたが、resume()ごとにすべてをチェックすることは実際的ではないため、これには時折問題が発生することがあります。
私が本当に必要としているのは、Android OSが、アプリが非アクティブのときにメモリからGC以外のものをすべてクリーンアップする必要があると判断した場合に、アプリを最初から再起動することです。これを行うには優雅な方法があるはずだと思いますが、ドキュメントには何も気づいていません。
何かご意見は?他の人はこの問題をどのように回避しますか?