public static class GoBack {
public static Stack<Bundle> goBackStack;
}
私のAndroidアプリでは、親がアプリケーションであるクラスを作成し、上記のコードとして内部クラスを宣言します。
私の質問は、アプリがバックグラウンドで長時間実行されてからアプリに戻った後、 goBackStack は常に null です。どうしてか分かりません?どうすればそれを回避できますか?
public static class GoBack {
public static Stack<Bundle> goBackStack;
}
私のAndroidアプリでは、親がアプリケーションであるクラスを作成し、上記のコードとして内部クラスを宣言します。
私の質問は、アプリがバックグラウンドで長時間実行されてからアプリに戻った後、 goBackStack は常に null です。どうしてか分かりません?どうすればそれを回避できますか?
Android がアプリケーションを強制終了するとすぐに、 YourgoBackStack
は null になります。この変数は別の場所で初期化されるため、アプリの再起動後も null のままです (2 回目には初期化されないため)。
解決策は簡単です。静的変数は永続ストレージであるため、考慮しないでください。ではない。SharedPreferences
代わりに、SQLite
データベースまたはファイル システムを使用してください。
問題は、プロセス全体が最終的に強制終了されることです。ガベージ コレクターは、静的に参照されるオブジェクトを収集しません。
データの再初期化または の利用を検討してくださいonSavedInstanceState
。または、データベースを使用するかSharedPreferences
、データを永続化することもできます。