Android 是否在onPause()或onStop()中保存持久数据?

Android 是否在onPause()或onStop()中保存持久数据?,android,Android,确实,当您的应用程序需要保存一些持久数据时,除了onStop()方法之外,您还应该始终在onStop()方法中进行保存,因为如果android操作系统杀死您的进程,那么onStop()和onDestroy()永远不会调用方法?您应该将任何关键数据保存在onPause中,因为当您的活动失去焦点或用户退出应用程序时,它总是被调用。另一方面,onStop仅在用户退出应用程序时调用,而不是在用户切换到其他活动(失去焦点)时调用。此外,当您的活动处于后台时,android会在内存不足的情况下强制终止您的应

确实,当您的应用程序需要保存一些持久数据时,除了
onStop()
方法之外,您还应该始终在
onStop()
方法中进行保存,因为如果android操作系统杀死您的进程,那么
onStop()
onDestroy()
永远不会调用方法?

您应该将任何关键数据保存在
onPause
中,因为当您的活动失去焦点或用户退出应用程序时,它总是被调用。另一方面,
onStop
仅在用户退出应用程序时调用,而不是在用户切换到其他活动(失去焦点)时调用。此外,当您的活动处于后台时,android会在内存不足的情况下强制终止您的应用程序进程,在这种情况下,不会调用
onStop
,而是调用
onDestroy
。因此,
onPause
是您应该运行持久性代码的地方,无需在
onStop

确实,当应用程序需要保存一些持久数据时,除了onStop()方法外,还应该始终在onPause()方法中保存

简短回答:正确,
onPause()
甚至比
onStop()更可靠。不调用
onStop()
onDestroy()
而终止进程的几率最高

为什么?

在这种情况下,活动生命周期图是最好的帮助:

您可以清楚地看到调用方法的顺序。如您所见,最安全的选择是
onPause()
,它提供了用户正在离开您的活动的第一个指示,然后是
onStop()
,它指示应用程序已进入停止状态。最后是
ondestory()
方法。因此,最安全的做法是选择
onPause()
尽早保存持久数据

此外:
此表清楚地提供了活动状态和弹出之间的机会和相关性:

暂停时是唯一可以保证的地方。@KonstantinPribluda我的答案是你的评论的详细版本查看生命周期图,似乎有一个用例,应用程序在没有
onPause()的情况下被终止
被调用。@prole什么<代码>暂停
始终被调用。图表清楚地显示了tooSee,这就是我的想法。在
onPause()
onStop()中保存数据将捕获所有可能的用例。当然,也许
onPause()
是“最安全的”,但我希望应用程序是万无一失的,而不仅仅是安全的。在什么情况下,应用程序会跳过onPause(),直接转到onStop()?