2014-10-01 167 views
0

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

如果活动被暂停或停止,该系统可以通过要求它结束(调用finish()方法),或 从 内存砸简单地杀死它的过程。当活动再次打开时(在 完成或死亡后),它必须全部创建。

但低一点的next()写的onDestroy:

叫活性被破坏之前。这是活动将收到的最后一个电话号码 。可以调用它,因为 活动正在完成(有人称之为finish()),或者因为 系统暂时销毁活动的此实例以节省 空间。您可以使用isFinishing()方法区分这两种情况。

所以,我建议,完成()可以通过系统杀死我的活动(在被称为那么,如何区分? - 我的活动是由系统中的onDestroy()

+1

看看'onUserLeaveHint()'http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint() – 2014-10-01 09:49:47

+0

我会测试它,谢谢! – 2014-10-01 09:57:32

回答

1

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

onPause()处理您所需要的内容,如果您想知道它是否正在完成,请在此处检查isFinishing()

如果你想要做更多的具体方案,其中用户已经触发结束应用程序,然后将其添加到onUserLeavesHint(),这将只是onPause()之前调用 - 如果这些东西需要经过一些东西发生你在onPause()做,那么你可以Activityboolean标志设置为false从开始,然后为onUserLeavesHint()为真,并在您的onPause()查询。

1

杀死或成品由用户如果isFinishing()返回true,则应用程序的某个部分调用finish()或用户按下了返回按钮。

+0

“你的应用程序的一部分”下的含义是什么? – 2014-10-01 09:56:07

+0

基本上,您应用程序中的任何代码都可以调用Activity.finish - 活动本身,另一个活动,一些服务,广播接收器等。 – Okas 2014-10-01 09:57:34