按下后退按钮时未调用onRestoreInstanceState

时间:2016-07-20 11:55:12

标签: android

我尝试将应用程序状态保存并恢复为savedInstanceState。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putInt(STATE_Tracker, 1);
    super.onSaveInstanceState(savedInstanceState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

   int value = savedInstanceState.getInt(STATE_Tracker);

    if (value==1){

    }
    else {

    }
}

按下主页按钮时该代码有效。但是,如果我按下后退按钮,再次运行应用程序,它就无法正常工作。

任何帮助?

1 个答案:

答案 0 :(得分:2)

来自开发者指南:

  

当您的活动因用户按下Back或活动自行完成而被销毁时,该Activity实例的系统概念将永远消失,因为该行为表明不再需要该活动。但是,如果系统由于系统约束(而不是正常的应用程序行为)而破坏活动,那么虽然实际的Activity实例已经消失,但系统会记住它存在,如果用户导航回它,系统会创建一个新的活动的实例,使用一组保存的数据来描述销毁时的活动状态。系统用于恢复先前状态的已保存数据称为"实例状态"并且是存储在Bundle对象中的键值对的集合。

换句话说,当您按下后退按钮时,您将无法恢复活动,活动的生命周期被视为已完成且不再需要,因此您无需恢复实例状态。 如果确实需要,可以覆盖

@Override
public void onBackPressed() {
    super.onBackPressed();
}

并将状态保留在SharedPreference等任何存储选项中。