到目前为止我所理解的是onDestroy
和onStop
(在Honeycomb之后)如果Activity
处于后台并且系统需要终止内存进程,则不会被调用。< / p>
如果onDestroy
正常完成,onStop
和Activity
将始终被调用。
让我们举例说,我在onCreate
内的静态字段中添加一个监听器,并删除onDestroy
内的监听器。现在有两件事情可以发生。
onDestroy
对吗?我知道android只杀死进程但是有一些条件,android只杀死Activity(不调用onDestroy
)而不是进程吗?
答案 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才会被调用,这个过程也会被杀死。