2

在我的应用程序开发的开始阶段,我onSaveInstanceState()用来保存我的数据Bundle并在 Activity 中恢复我的状态onCreate()- 例如,这有助于在轮换期间进行快速测试。然后我决定我的一些数据,比如说一个整数,应该在运行之间持久化,所以我决定SharedPreferencesonPause(). 问题是:我可以安全地删除 Bundle 保存/恢复版本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上面的部分。

4

1 回答 1

1

不,没有任何情况下您不会进入onPause方法(除非您在 onCreate 中调用完成),因为此方法是 Activity 生命周期的主要部分。

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

于 2014-09-12T10:13:50.067 回答