我对onSaveInstanceState有一些问题,但可能是因为我误解了它是如何工作的。
我有一个Arraylist我希望在切换活动时保存,然后在我回来时恢复。
所以我有这个方法
@Override
protected void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
bundle.putStringArrayList("History", History);
和我的onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if( savedInstanceState != null ) {
History = savedInstanceState.getStringArrayList("History");
}
}
出于某种原因,这个循环没有被初始化
if( savedInstanceState != null ) {
History = savedInstanceState.getStringArrayList("History");
}
我非常确定它的东西相当简单,但我对Java仍然很陌生。
答案 0 :(得分:0)
如果您只是简单地切换活动,它将在后台保持“活着”(除非操作系统决定将其杀死以释放内存)。 Read this article for more information on Activity state
在这种情况下,当活动恢复时,将不会调用onCreate()
,因为它已经创建并且只是onResume()
- 编辑。
您应该查看另一种在{{1}中存储History
值的方法,例如SharedPreferences
,数据库或应用程序类实例中的持久对象(符合您的偏好)方法并在onPause()
中恢复这些值。
onResume()
用于当一个活动被杀死时,如方向改变或操作系统杀死。