10 以上のアクティビティで構成される Android アプリケーションを開発しています。ほとんどすべてのアクティビティでアクセスする状態オブジェクトがいくつかあります。この目的のために、これらは MyApplication クラスのグローバル静的変数として実装されました。
ユーザーがアプリケーションの「内」にいる限り、このアプローチは問題ないことに気付きました。ただし、彼がホーム ボタンを押して別のアプリを開き、[最近のアクティビティ] ボタンからアプリに戻ると、Android システムが MyApplication からの静的情報をリセットするので、NullPointerExceptions に対処する必要があります。この動作は、Android がアプリケーション プロセスを強制終了して再作成することによって引き起こされることを知っています。
この種のデータを永続化する最善の方法は、SharedPreferences または SQLite を使用することであり、onCreate で MyState==null を確認して復元するのに問題はありませんが、問題は、適切なタイミングがわからないことです。状態オブジェクトを (設定またはデータベースに) 保存します。MyApplication の finalize() をオーバーライドしようとしました - ダメです。onLowMemory が呼び出されない可能性があることがわかりました。onPause、OnStop などを使用する方法がわかりません。シリアライゼーションのデシリアライゼーションが非常に多くのアクティビティを持っているためです。アプリを遅くします。
何かご意見は?前もって感謝します!