【问题标题】:onRestoreInstanceState is not being called on Back button pressedonRestoreInstanceState 没有在按下后退按钮时被调用
【发布时间】:2016-07-20 20:17:49
【问题描述】:

我正在尝试将应用程序状态保存并恢复为 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 {

    }
}

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

有什么帮助吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    来自开发者指南:

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

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

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

    并将状态保存在任何存储选项中,例如SharedPreference

    【讨论】:

      猜你喜欢
      • 2012-12-26
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      相关资源
      最近更新 更多