Android - 将onPause()保存在onSaveInstanceState()中保存吗?

时间:2013-09-21 22:29:05

标签: android

当我处于应用开发的开始阶段时,我使用onSaveInstanceState()将数据保存在Bundle中,并在活动中的onCreate()中恢复我的状态 - 这有助于在例如,轮换。然后我决定我的一些数据,比如只是一个整数,应该在运行之间保持不变,所以我决定在SharedPreferences中的Activity的私有onPause()中编写它。 问题是:我是否可以安全地删除onSaveInstanceState()中的捆绑保存/恢复版本,并且只依赖于保存的持久版本,或者我应该同时保留这两个版本并在onCreate()中检查两个来源,取其中任何一个?

我在这里挖了很多类似的帖子,有些人说他们在onCreate()中使用了以下模式:

if (savedInstance != null && ...contains the saved data...) {
    ...use the saved data...
} else {
    ...load the saved data from preferences...
}

所以我想知道是否有一个场景会经历onSaveInstanceState()而不是onPause(),这会让我在Bundle中保存相同的内容?我只想使用上面的 else 部分。

1 个答案:

答案 0 :(得分:1)

不,没有你没有进入 onPause 方法的情况(除了你在onCreate中调用完成),因为这个方法是Activity生命周期的主要部分。

但是有一种情况是在4.0+设备中不会调用 onSaveInstanceState 。如果设备上的内存极低,并且屏幕上会显示需要大量内存的新活动,就会发生这种情况。