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

时间:2017-01-21 09:58:01

标签: android

确实,当你的应用程序需要保存一些持久数据时,除了onPause()方法之外,你应该总是在onStop()方法中执行它,因为如果android OS杀死你的进程那么{{1永远不会调用和onStop()方法?

2 个答案:

答案 0 :(得分:2)

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

中执行

答案 1 :(得分:0)

  

确实,当你的应用程序需要保存一些持久数据时,除了onStop()方法之外,你应该总是在onPause()方法中执行它

简短回答: TRUE,onPause()onStop()更可靠。在不调用onStop()onDestroy()的情况下杀死流程的可能性最高。

为什么?

活动生命周期图是此方案中的最佳帮助:

enter image description here

您可以清楚地看到调用方法的顺序。您可以看到最安全的选择是onPause(),它提供了用户离开您的Activity的第一个指示,然后是onStop(),表示应用已进入Stopped状态。最后是onDestroy()方法。因此,最安全的做法是尽早选择onPause()来保存持久数据。

FURTHERMORE: 表格中明确提供了活动状态和弹射之间的机会和相关性:Activity state and ejection from memory