我的Android应用中的状态相当少,我希望确保持久保存。它很小,大约有50个字符。
看Android Storage Options page,他们给出了一些选择,最简单的似乎是共享偏好。现在这些不是应用程序首选项,更多是应用程序所在位置的简短指示。
我担心偏好会不经常变化,因此可能的用例可能不会处理很多变化。很多,我的意思是每秒大约一次,取决于用户的活动。
所以我想确定两件事。
首先,上面链接的页面上的示例代码的首选项是在onStop
方法中写出的。我们是否保证在应用程序退出时会运行,无论如何?
如果是这样,我可以将状态保持在内存中并使用它来持续保存,然后这个更新频率问题就会消失。
基本上,我想确保我的应用程序无法在没有保存状态的情况下停止(当然不会发生灾难性故障)。
否则,我宁愿在改变时保存这个状态,以免丢失任何东西。
其次,这一点很重要,只要我每次更改都必须保存状态,是否有任何缺点可以保存首选项每秒一次?如上所述,我不确定它是否专为频繁更新而设计。
答案 0 :(得分:1)
如果应用程序正常退出,则会调用onStop()
。如果应用程序是后台运行的(即通过主页按钮/被调用),则调用onPause()
,调用onStop()
。如果应用程序退出(即使用后退按钮),则会调用onPause()
,调用onStop()
,其中onDestroy()
会调用nullpointerException
。但是,当应用程序崩溃时(即通过onStop()
,settingsContainerObject
未被调用,应用程序只会崩溃)。
就个人而言,我大多使用某种onStop()
,只是在onStop()
方法中将我的偏好写入内部存储。效果很好。
简而言之:是的,当应用程序处于后台或退出时,始终会调用try/catch
。
您也可以在{{1}}区块中停止申请,以便始终保存您的设置。