我試圖在後臺終止它之後恢復應用程序。它試圖訪問「config」變量時總是崩潰,因爲它是空的,即使它已經保存在onSaveInstanceState(它總是,我已經在調試模式下測試過,並且outstate在它的映射中有對象)。當在後臺中終止應用程序時,Bundle savedInstanceState parcelable對象爲空= null
讓我困惑的是,這對旋轉情況非常有效。所以我認爲從包裹的對象構造沒有任何問題。當我在後臺殺死應用程序時,它不起作用。
當我在後臺殺死應用程序後,在onCreate中記錄savedInstanceState時,Config.BUNDLE返回null = null(無鍵,無值),但是類似的對象Account.BUNDLE是完好無損的。
此外,我試着添加另一個字符串對象到savedInstanceState,它也被正確保存。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
Config config = savedInstanceState.getParcelable(Config.BUNDLE);
Config.setInstance(config);
Account account = savedInstanceState.getParcelable(Account.BUNDLE);
Account.setInstance(account);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(Config.BUNDLE, Config.getInstance());
outState.putParcelable(Account.BUNDLE, Account.getInstance());
}
'onSaveInstanceState'和'捆綁savedInstanceState'旨在用於旋轉箱子或其他,臨時的,破壞/重新創建場景。在後臺關閉應用程序相當於將電池拉出應用程序,因此在這種情況下,沒有任何生命週期方法可用。 – DeeV
我認爲你需要將你的包參數轉換成Config –