我对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被杀了。怎么了?
答案 0 :(得分:8)
来自onDestroy()文档:
[..]在某些情况下,系统会简单地杀死活动 托管过程中没有调用此方法(或任何其他方法),所以 它不应该被用来做那些意图留下来的东西 过程消失后。
在Android中,您无法获得有保证的onDestroy()
电话
如果您想要发布一些资源,请改为onPause()
。