Android Back按钮调用ondestroy?

时间:2011-11-15 21:05:39

标签: android

当按下后退按钮并弹出当前活动时,是否会调用ondestroy?它好像不是在呼唤我

4 个答案:

答案 0 :(得分:1)

似乎会调用onStop。 onPause也会在屏幕锁定或来电等等上被调用...

似乎处理活动pop的正确方法是onstop()

答案 1 :(得分:0)

这取决于。如果此时系统不受约束和/或您的Activity没有占用大量内存,则可能会调用onStop()。这允许您的活动保留在内存中,并在用户切换回它时快速返回。稍后,如果用户暂时没有使用您的活动并且系统需要释放一些内存,则会调用onDestroy()

也就是说,如果系统受内存限制,或者您的Activity使用了大量内存,则只要按下后退按钮然后回家就可以调用onDestroy()

有关活动生命周期的更多信息,请read the documentation here

答案 2 :(得分:0)

查看有关stackoverflow的讨论,很好地解答onDestroy问题,关于何时调用它。

Activity OnDestroy never called?

您应该将代码放在onPause和onStop中,以及onSaveInstanceState / onRestoreInstanceState。

对于需要清理并设置为null的对象,请使用onDestroy。内存管理和垃圾收集过程将定期销毁后台进程,调用onDestroy。

但是,要确保您的应用程序释放保留内存,请在不再需要时手动清理对象。

我之前曾提到过使用system.gc强制调用onDestroy的一些建议。

但是,不能信任system.gc强制调用onDestroy,开发人员不应该依赖onDestroy来清理内存分配对象。

所以,我编辑了我的答案,并删除了对system.gc的引用。

cdeange在评论中提到的文章是一篇很好的文章,说明为什么依赖于调用system.gc是一种不好的做法。 https://stackoverflow.com/a/2414120/323696

答案 3 :(得分:0)

来自Android Developers

  

在某些情况下,您的活动会因此被销毁   正常的应用程序行为,例如当用户按下后退按钮或时   你的活动通过调用finish()来表示自己的破坏。