从后台

时间:2017-03-15 20:43:44

标签: android

我可以阻止应用在被其他进程杀死时恢复吗?

我在Singleton中有Application class类实例时遇到问题,它通过应用程序保存了有关用户和从API收集的内容的所有信息。当我从后台打开应用程序时(如果它被某些进程杀死)我在用户模型上获得null(图片路径,名称...)和应用程序粉碎。

对我而言,最好的方法是从启动器屏幕重新启动应用程序并再次获取所有信息,而不是恢复。对此有何解决方案?

1 个答案:

答案 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));
}