Android生命周期问题

Android生命周期问题,android,android-lifecycle,Android,Android Lifecycle,在阅读了有关活动生命周期的官方文档后,我遇到了一个问题—如何在onDestroy()中理解我的活动是由系统终止的还是由用户完成的?我认为,在官方页面上,还不完全清楚: 如果活动暂停或停止,系统可以将其从 通过请求它完成(调用其finish()方法)或 只是扼杀了它的进程。再次打开活动时(之后 完成或杀死),它必须在所有地方创建 但是lower写了关于onDestroy()的下一步: 在活动被销毁之前调用。这是最后一个电话 该活动将收到。它也可以被称为,因为 活动正在完成(有人对其调用finish

在阅读了有关活动生命周期的官方文档后,我遇到了一个问题—如何在onDestroy()中理解我的活动是由系统终止的还是由用户完成的?我认为,在官方页面上,还不完全清楚:

如果活动暂停或停止,系统可以将其从 通过请求它完成(调用其finish()方法)或 只是扼杀了它的进程。再次打开活动时(之后 完成或杀死),它必须在所有地方创建

但是lower写了关于onDestroy()的下一步:

在活动被销毁之前调用。这是最后一个电话 该活动将收到。它也可以被称为,因为 活动正在完成(有人对其调用finish()),或者因为 系统正在临时销毁此要保存的活动实例 空间您可以使用 isFinishing()方法


因此,我建议,在终止我的活动时,系统可以调用finish()(那么我如何区分?我的活动是由系统终止的还是由onDestroy()中的用户完成的?

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

onDestroy()
不保证被调用(例如,您的应用程序位于后台,操作系统实际上会将其杀死以获取资源),因此您没有任何理由在此处检查
isFinishing()

onPause()
中处理您需要的内容,检查
isFinishing()
,如果您想知道它是否即将完成


如果您想在用户已触发应用程序结束的特定场景中执行更多操作,请将其添加到
onUserLeavesHint()
,它将在
onPause()之前调用-如果此操作需要在您在
onPause()中执行的某些操作之后执行
然后你可以在
活动中设置一个
boolean
标志,从一开始就设置为false,然后在
onUserLeavesHint()
中设置为true,并在你的
onPause()
中查询,看看
onUserLeaveHint()
我会测试它,谢谢!你在“应用程序的一部分”下是什么意思?基本上,应用程序中的任何代码都可以调用Activity.finish-Activity本身、另一个Activity、某些服务、广播接收器等。