现在是2018年。
我一直在onPause
而非onStop
期间保存我的应用数据,因为我坚信onStop
不能保证被调用。
来源:https://developer.android.com/reference/android/app/Activity.html
对于那些被标记为可填充的方法,在该方法之后 返回托管活动的进程可能被系统杀死 在任何时候都没有执行其代码的另一行。因为 对此,您应该使用onPause()方法来编写任何持久性 数据(例如用户编辑)到存储。
基本上,表格告诉
onPause
不可用。保证被召唤。onStop
都是可以播放的。 不保证被调用。但是,在桌子下面,另一行文字打破了我的坚定信念。
从Honeycomb开始,应用程序不处于可充电状态 直到它的onStop()返回。
我多次读同一个句子。这意味着onStop
不可杀??这有些与上表信息相反。
我读了https://developer.android.com/guide/components/activities/activity-lifecycle.html#onpause以找出真相
因此,您不应使用onPause()来保存应用程序或 用户数据,进行网络呼叫或执行数据库事务;这样 在方法完成之前,工作可能无法完成。相反,你应该 在onStop()期间执行重载关闭操作。
它建议我们在onStop
期间保存应用程序数据。这是否意味着总是调用onStop
?
我的问题是
onStop
? (适用于Android 4及更高版本)onPause
或onStop
?答案 0 :(得分:1)
您误读了文档表和/或其后的代码段。
对于标记为可填充的方法,在该方法返回之后,系统可能会终止托管该活动的进程
onPause()
被标记为可预留的Honeycomb,并且onStop()
被标记为可用于所有API级别的Killable。所以这意味着预蜂窝,你的应用程序在onPause()
之后可以使用,而在Honeycomb +上你的应用程序在onStop()
之后可以使用。这就是他们说
从Honeycomb开始,应用程序在返回onStop()之前不处于killable状态。
答案 1 :(得分:0)
除非应用程序崩溃,否则将始终调用onStop。