如何初始化onSaveInstanceState?

时间:2014-12-29 00:45:38

标签: java android

我对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仍然很陌生。

1 个答案:

答案 0 :(得分:0)

如果您只是简单地切换活动,它将在后台保持“活着”(除非操作系统决定将其杀死以释放内存)。 Read this article for more information on Activity state

在这种情况下,当活动恢复时,将不会调用onCreate(),因为它已经创建并且只是onResume() - 编辑。

您应该查看另一种在{{1}中存储History值的方法,例如SharedPreferences,数据库或应用程序类实例中的持久对象(符合您的偏好)方法并在onPause()中恢复这些值。

onResume()用于当一个活动被杀死时,如方向改变或操作系统杀死。