我有一个包含菜单项列表的应用。单击菜单项时,它会打开相应的活动。现在,在单击后退按钮并返回主列表的新活动中,该活动将被杀死,并且当您再次启动它时它不会返回到其过去的状态。
我的问题是,你离开它时是否有可能不杀死它?
我尝试保存这样的值:
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("TO_REMEMBER", "Remember this");
}
但是,一旦活动被杀死并重新启动,oncreate方法就不会读取任何数据:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
//This is not getting fired
Toast.makeText(this, savedInstanceState.getString("TO_REMEMBER"), Toast.LENGTH_LONG).show();
}
}
对此有任何帮助表示赞赏。
答案 0 :(得分:2)
您正在使用onSaveInstanceState
保存状态,但这并不意味着当您按下时会在活动生命周期中保存状态。这意味着在方向变化等方面保存状态。如果你想在方向变化中保存一些状态,那么就需要这样做,所以你就在那里。
现在,为了在活动生命周期中保存某些内容,您有两种选择:
getPreferences
并使用此存储它。这将仅为该特定活动存储它。如果你试图存储活动状态,我会推荐这个。编辑:
将活动保持活着不是推荐/记录的方法。您可以在后台运行Service
,但不会像Activity
那样包含用户界面。如果按Home键而不是Back,那么它将起到类似方向更改的作用。
简而言之,Activity负责保存其状态。也就是说,一些UI控件自己保存状态,所以你不必保存状态示例EditText将保存其状态。
价:
答案 1 :(得分:-1)