Android与生命周期回调onPause()和onStop()相矛盾的文档

时间:2017-04-14 15:30:59

标签: android android-activity android-lifecycle

直观地说,执行其中内容的最适用的回调是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()方法来编写任何持久数据(例如   用户编辑)到存储

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

1 个答案:

答案 0 :(得分:1)

好抓!

总结的一些注意事项:

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