活动onDestroy混乱

时间:2014-01-26 16:13:32

标签: android

到目前为止我所理解的是onDestroyonStop(在Honeycomb之后)如果Activity处于后台并且系统需要终止内存进程,则不会被调用。< / p>

如果onDestroy正常完成,onStopActivity将始终被调用。

让我们举例说,我在onCreate内的静态字段中添加一个监听器,并删除onDestroy内的监听器。现在有两件事情可以发生。

  • 如果app被系统破坏,系统会终止其进程。所以 那个静态字段中的所有监听器都将消失。
  • 如果应用程序正常完成,那么它 将从onDestroy
  • 中删除自己的侦听器

对吗?我知道android只杀死进程但是有一些条件,android只杀死Activity(不调用onDestroy)而不是进程吗?

4 个答案:

答案 0 :(得分:0)

当您致电finish()时,活动将被销毁,而不是整个过程

答案 1 :(得分:0)

在生命周期部分的android活动documentation中,查看表1,它有活动生命周期的回调方法的摘要。

之后有一个名为killable的列?并且在onDestroy方法中,之后的killable是。

标有“Killable after?”的栏目指示系统是否可以在方法返回后随时终止托管活动的进程,而不执行活动代码的另一行。

这意味着如果android终止进程,则根本不需要在onDestroy方法中使用的代码。

如果调用destroy,您的acitivity将从堆栈中删除,并且无论如何都可以自由进行垃圾收集,其中包含仅由活动引用的所有资源。

仅当系统资源不足(内存,CPU时间等)时才会调用

onDestroy(),并决定终止您的活动/应用程序,或者当某人对您的活动调用finish()时。

答案 2 :(得分:0)

这是完成流程的另一种方法。在manifest.xml中:

<activity android:name=".Name" android:noHistory="true" ... />

答案 3 :(得分:0)

  

是否有一些条件,android只杀死Activity(不调用onDestroy)而不是进程?

根据android官方网站,

  

在某些情况下,系统会在不调用此方法(或其他任何方法)的情况下简单地终止活动的托管过程,因此不应该使用它来执行过程消失后要保留的内容。

没有官方文档说过如果不调用onDestroy就可以杀死活动,但是进程会活着。关于android,只有在极端情况下onDestroy才会被调用,这个过程也会被杀死。

refer to here