Android:当Dalvik杀死此活动时,不会调用Activity.onDestroy()

时间:2011-12-29 10:59:39

标签: android android-activity ondestroy

我对Activity.onDestroy()感到困惑。当我的Activity被销毁时我需要释放一些资源,但是当我按下“后退”键时,似乎调用了onDestroy(),但是当我的活动被Dalvik杀死时却没有。我只是通过添加日志来测试它:

Log.v("my_tag", "onDestroy() called");

和onCreate()方法也一样:

Log.v("my_tag", "onCreate() called");

然后我开始我的活动,我在日志中看到:onCreate() called。我按“返回”键然后再次启动活动,然后我看到:

onDestroy() called
onCreate() called 

然后我按“Home”键再次转到我的Activity,日志不会改变。好的,就在这里。

然后我再次按下“Home”键并启动一些非常“重”的应用程序。在日志中没有关于onDestroy(),但是当我再次启动我的Activity时,我会在日志中看到:onCreate() called!因此,没有调用onDestroy(),但我的Activity被杀了。怎么了?

1 个答案:

答案 0 :(得分:8)

来自onDestroy()文档:

  

[..]在某些情况下,系统会简单地杀死活动   托管过程中没有调用此方法(或任何其他方法),所以   它不应该被用来做那些意图留下来的东西   过程消失后。

在Android中,您无法获得有保证的onDestroy()电话 如果您想要发布一些资源,请改为onPause()