在阅读有关Activity Lifecycle的官方文档后,我遇到了一个问题 - 我如何理解onDestroy(),我的Activity被系统杀死还是被用户完成?我认为,在官方网页上还不完全清楚:
如果活动暂停或停止,系统可以将其从中删除 通过要求它完成(调用它的finish()方法),或者 简单地杀死它的过程。当活动再次打开时(之后) 完成或杀死),它必须全部创建。
但接下来写了一些关于onDestroy()的文章:
在活动被销毁之前调用。这是最后的召唤 活动将收到。它可以被称为因为 活动正在完成(有人称之为完成()),或者因为 系统暂时销毁要保存的活动实例 空间。你可以用这两种情况来区分 isFinishing()方法。
所以,我建议,在杀死我的活动期间,系统可以调用finish()(那么我怎么能区分 - 我的活动是被系统杀死的还是用户在onDestroy()中完成的?
答案 0 :(得分:1)
系统在杀死您的活动时不会调用finish()。如果isFinishing()返回true,则应用程序的某些部分调用finish()或用户按下后退按钮。
答案 1 :(得分:1)
onDestroy()
不能保证被调用(例如你的应用程序在后台,操作系统实际上已经杀了它以获得资源),所以你真的没有理由在这里检查isFinishing()
在onPause()
中处理您需要的内容,如果您想知道它是否会完成,请检查isFinishing()
那里。
如果您想在用户触发应用程序结束的特定方案中执行更多操作,请将其添加到onUserLeavesHint()
,这将在onPause()
之前调用 - 如果此内容需要在您onPause()
中执行的某些操作之后发生,然后您可以在boolean
中将Activity
标记从get-go设置为false,然后在{{1}中设置为true在您的onUserLeavesHint()
中查询并查询。