kli*_*ifa 14 android android-lifecycle android-activity android-database
我知道这个问题已被问了一百万次,我自己虽然我已经知道了答案,而且正确的一个是唯一有保证的电话是onPause(),所以你应该把数据保存在那里.
但是,在android文档的许多地方,他们总是建议不要在onPause()方法中做繁重的工作(比如在数据库中写数据),因为它会延迟活动之间的转换.
onPause():此方法通常用于向持久数据提交未保存的更改,停止动画以及可能消耗CPU的其他内容,等等.它应该尽快做任何事情,因为下一个活动在返回之前不会恢复.
Killable:是的
然后根据类似表中的Android Developer Reference Guide.
它说同样的事情但是:
Killable:Pre-HONEYCOMB
并且他们添加了一个说明:
请注意,这些语义在针对从HONEYCOMB开始的平台的应用程序与针对先前平台的平台之间会略有不同.从Honeycomb开始,应用程序在其onStop()返回之前不处于killable状态.这可能会在调用onSaveInstanceState(Bundle)时产生影响(可以在onPause()之后安全地调用它,并允许和应用程序安全地等到onStop()以保存持久状态.
Killable
请注意上表中的"Killable"列 - 对于那些被标记为可填充的方法,在该方法返回之后,托管该活动的进程可能在任何时候被系统杀死而不执行其代码的另一行.
对于POST-HONEYCOMB(我不关心早期版本): 那么,可以假设任何Android设备(包括不同的ROMS)将确保在活动上调用onStop吗?这是任何耗费存储写入应用程序的最佳位置?
注意:这是非常令人困惑的,因为这里的大多数答案,网站,书籍,甚至在线Android测试都是正确的答案,你应该将它保存在onPause而不是onStop.
Com*_*are 16
何时将数据保存到数据库,onPause()或onStop()?
无论是.它们几乎完全相同,特别是在Android 3.0+上.
如果接管前景的活动是典型的全屏活动,那么之前的活动将不再可见,onPause()并将onStop()快速连续调用.
如果接管前景的活动主题更像是一个对话框,其中较早的活动仍然可见,onPause()将被调用,但不会onStop(),直到活动不再可见(例如,用户现在按下HOME) ).
大多数应用程序并不担心"为主题的更像一个对话框"的情况下,在这种情况下onPause()和onStop()后下一个被称为一个正确的,你可以派生的后台线程来保存数据,无论那些对你有意义.
但是,在android文档的许多地方,他们总是建议不要在onPause()方法中做繁重的工作(比如在数据库中写数据),因为它会延迟活动之间的转换.
同样的情况也是如此onStop(),因为在主应用程序线程上调用了这两个方法.
那么,可以假设任何Android设备(包括不同的ROMS)都能确保在活动上调用onStop吗?
双方onPause()并onStop()会从进程终止的立场相同的特性.两者都应该被调用(正常情况)或两者都不会被调用(例如,你崩溃,电池弹出电话背面).
这是任何耗费存储写入应用程序的最佳位置?
在后台线程上触发工作的任何一个onPause()或者onStop()是好的地方,以保存您的数据.如果您喜欢这样做onStop(),我们绝对欢迎您这样做.就个人而言,我是一个onPause()人.
| 归档时间: | 
 | 
| 查看次数: | 7063 次 | 
| 最近记录: |