当按下后退按钮并弹出当前活动时,是否会调用ondestroy?它好像不是在呼唤我
答案 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)
在某些情况下,您的活动会因此被销毁 正常的应用程序行为,例如当用户按下后退按钮或时 你的活动通过调用finish()来表示自己的破坏。