【问题标题】:Android contradicting documentation about lifecycle callbacks onPause() and onStop()Android 与关于生命周期回调 onPause() 和 onStop() 的文档相矛盾
【发布时间】:2017-04-14 15:30:59
【问题描述】:

直观地说,最适用的回调是onPause()。然而,文档中似乎存在矛盾:

根据https://developer.android.com/guide/components/activities/activity-lifecycle.html

onPause() 执行时间很短,而且不一定负担得起 足够的时间来执行保存操作。因此,您应该 不要使用 onPause() 来保存应用程序或用户数据,建立网络 调用或执行数据库事务;此类工作可能无法完成 在方法完成之前。相反,您应该执行重载 onStop() 期间的关闭操作

您还应该使用 onStop() 来执行相对 CPU 密集型的操作 关闭操作。例如,如果你找不到更合适的 是时候将信息保存到数据库了,您可以在 onStop()。

根据https://developer.android.com/reference/android/app/Activity.html

请注意上表中的“Killable”列——对于那些方法 被标记为可杀死的,在该方法返回之后 托管活动的进程可能随时被系统杀死 没有另一行代码被执行。 因此,您 应该使用 onPause() 方法来写入任何持久性数据(例如 用户编辑)到存储

那么,应该在哪里以及在另一个衍生线程上完成?这通常是怎么做的?

【问题讨论】:

    标签: android android-activity android-lifecycle


    【解决方案1】:

    好收获!

    总结几点:

    • 不要将 onPause() 用于真正重负载关机操作​​”,否则您可能会获得负面的用户体验通过减慢 “在此方法返回之前要恢复的下一个活动。” 在其他情况下,继续使用它;
    • 如果您仍然犹豫,请使用onSaveInstanceState()。它在onPause()onStop() 之间被调用,并且AFAIK 保证被调用。系统依赖于方法“这样当一个activity被杀死时,系统可以在未来恢复它的状态”;
    • 关于onStop(),我个人从来没有!经历过在方法返回之前杀死我的应用程序的进程,但看到 SO 问题说明了这一点,据我们所知,这与官方文档相对应。但是,这真的非常罕见。因此,是否依赖它取决于您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 2014-10-29
      相关资源
      最近更新 更多