直观地说,执行其中内容的最适用的回调是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()方法来编写任何持久数据(例如 用户编辑)到存储。
那么,它应该在哪里完成并在另一个衍生线程上?这通常是怎么做的?
答案 0 :(得分:1)
好抓!
总结的一些注意事项:
onPause()
用于“真正重负载关机操作”,否则您可能会面临负面影响通过减慢“下一个要恢复的活动直到此方法返回的用户体验。”在其他情况下使用它; onSaveInstanceState()
。它在onPause()
和onStop()
之间调用,并保证调用AFAIK。系统依赖于“方法,以便当一个活动被杀死时,系统可以恢复将来返回它的状态”; onStop()
,我个人从不!经历了杀死我的应用程序的过程,直到该方法返回,但看到SO问题如此说明,正如我们所知,这对应于官方文档。但是,这真的非常罕见。所以由你决定是否依赖它。