在我的应用程序开发的开始阶段,我onSaveInstanceState()
用来保存数据Bundle
并onCreate()
在Activity中恢复我的状态-例如,这有助于在轮换期间进行快速测试。然后,我决定在运行之间应保留我的某些数据(比如说一个整数),因此我决定将其写成私有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
上面的部分。
不,在任何情况下您都不会进入onPause方法(除非您在onCreate中调用finish),因为该方法是Activity生命周期的主要部分。
但是有一种情况是在4.0+设备中不会调用onSaveInstanceState。如果设备上的内存极低,并且需要大量内存的新活动将在屏幕上显示,则可能会发生这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句