Android生命周期问题

时间:2014-10-01 09:41:41

标签: android android-lifecycle

在阅读有关Activity Lifecycle的官方文档后,我遇到了一个问题 - 我如何理解onDestroy(),我的Activity被系统杀死还是被用户完成?我认为,在官方网页上还不完全清楚:

  

如果活动暂停或停止,系统可以将其从中删除   通过要求它完成(调用它的finish()方法),或者   简单地杀死它的过程。当活动再次打开时(之后)   完成或杀死),它必须全部创建。

但接下来写了一些关于onDestroy()的文章:

  

在活动被销毁之前调用。这是最后的召唤   活动将收到。它可以被称为因为   活动正在完成(有人称之为完成()),或者因为   系统暂时销毁要保存的活动实例   空间。你可以用这两种情况来区分   isFinishing()方法。

所以,我建议,在杀死我的活动期间,系统可以调用finish()(那么我怎么能区分 - 我的活动是被系统杀死的还是用户在onDestroy()中完成的?

2 个答案:

答案 0 :(得分:1)

系统在杀死您的活动时不会调用finish()。如果isFinishing()返回true,则应用程序的某些部分调用finish()或用户按下后退按钮。

答案 1 :(得分:1)

onDestroy()不能保证被调用(例如你的应用程序在后台,操作系统实际上已经杀了它以获得资源),所以你真的没有理由在这里检查isFinishing()

onPause()中处理您需要的内容,如果您想知道它是否会完成,请检查isFinishing()那里。

如果您想在用户触发应用程序结束的特定方案中执行更多操作,请将其添加到onUserLeavesHint(),这将在onPause()之前调用 - 如果此内容需要在您onPause()中执行的某些操作之后发生,然后您可以在boolean中将Activity标记从get-go设置为false,然后在{{1}中设置为true在您的onUserLeavesHint()中查询并查询。