Android 我们能依靠调用onStop()吗?

Android 我们能依靠调用onStop()吗?,android,android-lifecycle,activity-lifecycle,Android,Android Lifecycle,Activity Lifecycle,关于Android的活动生命周期,我看到它(在某某和其他地方)广泛宣称应该将持久数据保存在onPause()方法中,因为无法保证会调用onStop(),因为如果系统资源不足,操作系统可能需要杀死活动以回收其资源 然而,在我正在读的一本书中,却有相反的说法: 实际上,操作系统不会回收可见的(暂停的)或 恢复)>活动活动在 调用onStop()并完成执行。 [谈论隐藏 状态和活动记录位] 请注意,您的活动可以进入隐藏状态,而无需 正在调用onDestroy()您可以依靠onStop()和 onSav

关于Android的活动生命周期,我看到它(在某某和其他地方)广泛宣称应该将持久数据保存在onPause()方法中,因为无法保证会调用onStop(),因为如果系统资源不足,操作系统可能需要杀死活动以回收其资源

然而,在我正在读的一本书中,却有相反的说法:

实际上,操作系统不会回收可见的(暂停的)或 恢复)>活动活动在 调用onStop()并完成执行。

[谈论隐藏 状态和活动记录位]

请注意,您的活动可以进入隐藏状态,而无需 正在调用onDestroy()您可以依靠onStop()和 onSaveInstanceState(Bundle)被调用(除非发生了某些情况 设备上出现了可怕的错误)覆盖onStop()以保存任何 永久数据,例如用户正在编辑的内容,因为 此方法返回后,可以随时终止活动

p70-71,《Android编程:大书呆子牧场指南》,第三版 (强调矿山)


多部分问题:
  • 这是否是(在启动onStop()之前,应用程序被杀死的可能性) (被称为)在中不再真实并且仍然存在的事物 传播,还是这本书完全错了

  • 是否有一些细微差别的时候或为什么一个活动可能会被杀死 回答“有时?”

  • 如果这本书是正确的,为什么这种误解会如此广泛地传播?(例如,和)


请参考官方文件。

这是活动生命周期的说明:

据报道,

onPause()执行非常简短,不一定能完成 有足够的时间执行保存操作。因此,你应该 不要使用onPause()保存应用程序或用户数据,请使网络 调用或执行数据库事务;这样的工作可能无法完成 在方法完成之前。相反,您应该执行重载操作 停止()期间的关机操作。。有关 在onStop()期间要执行的适当操作

有一种情况,当应用程序从
onPause()
转到
onCreate()
而没有
onStop()
时,
onDestroy()
是另一个优先级更高的应用程序需要内存,如图所示

此外,可以在不调用
onStart()
的情况下销毁活动,
onStop()
当您在
onCreate()上调用
finish()
方法时。

Edit:添加了指向其他关于onPause()与onStop()的答案的链接