我可以阻止应用在被其他进程杀死时恢复吗?
我在Singleton
中有Application class
类实例时遇到问题,它通过应用程序保存了有关用户和从API
收集的内容的所有信息。当我从后台打开应用程序时(如果它被某些进程杀死)我在用户模型上获得null
(图片路径,名称...)和应用程序粉碎。
对我而言,最好的方法是从启动器屏幕重新启动应用程序并再次获取所有信息,而不是恢复。对此有何解决方案?
答案 0 :(得分:0)
我可以阻止应用在被其他进程杀死时恢复吗?
通过调用 onCreate
, onStart
或,可以通过三种方式“恢复”应用“ onResume
即可。调用哪一个取决于您的应用程序如何“暂停”,以及在此状态下会发生什么。
onResume
跟随 onPause
,当其他应用程序被带到前台时会发生。
onStart
( onRestart
)跟随 onStop
,当您的应用为否时更长的可见。
onCreate
会跟随 onPause
或 onStop
,如果您的内存丢失到其他应用中。
当我从后台打开应用程序时(如果它被某些进程杀死)我 在用户模型上获取Null(图片路径,名称......)
尝试在 onSaveInstanceState
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putString(STATE_USER, mUser);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
并在 onCreate
或 onRestoreInstanceState
static final String STATE_USER = "user";
private String mUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore user data from saved state
mUser = savedInstanceState.getString(STATE_USER);
}
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
text.setText(savedInstanceState.getString(STATE_USER));
}