我尝试将应用程序状态保存并恢复为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 {
}
}
按下主页按钮时该代码有效。但是,如果我按下后退按钮,再次运行应用程序,它就无法正常工作。
任何帮助?
答案 0 :(得分:2)
来自开发者指南:
当您的活动因用户按下Back或活动自行完成而被销毁时,该Activity实例的系统概念将永远消失,因为该行为表明不再需要该活动。但是,如果系统由于系统约束(而不是正常的应用程序行为)而破坏活动,那么虽然实际的Activity实例已经消失,但系统会记住它存在,如果用户导航回它,系统会创建一个新的活动的实例,使用一组保存的数据来描述销毁时的活动状态。系统用于恢复先前状态的已保存数据称为"实例状态"并且是存储在Bundle对象中的键值对的集合。
换句话说,当您按下后退按钮时,您将无法恢复活动,活动的生命周期被视为已完成且不再需要,因此您无需恢复实例状态。 如果确实需要,可以覆盖
@Override
public void onBackPressed() {
super.onBackPressed();
}
并将状态保留在SharedPreference
等任何存储选项中。