我试图在后台终止它之后恢复应用程序。它试图访问“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 –