9

我很困惑Activity.onDestroy()。当我的 Activity 被销毁时,我需要释放一些资源,但似乎 onDestroy() 只是在我按下“返回”键时被调用,而不是在我的 Activity 被 Dalvik 杀死时调用。我只是通过添加日志来测试它:

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

在 onCreate() 方法中也是如此:

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

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

onDestroy() called
onCreate() called 

然后我按“主页”键并再次转到我的活动,日志不会改变。在这里好了。

然后我再次按“Home”键并启动一些真正“繁重”的应用程序。在日志中与 onDestroy() 无关,但是当我再次启动我的活动时,我在日志中看到:onCreate() called!所以, onDestroy() 没有被调用,但是我的 Activity 被杀死了。怎么了?

4

1 回答 1

8

onDestroy()文档中:

[..] 在某些情况下,系统将简单地终止活动的托管进程而不在其中调用此方法(或任何其他方法),因此不应使用它来执行打算在进程消失后保留的事情。

在 Android 中,您不会得到保证的onDestroy()通话。
如果你想释放一些资源,你应该这样做onPause()

于 2011-12-29T11:02:17.183 回答