在什么情况下activity 不会调用onDestory

Android 码拜 8年前 (2016-05-16) 1817次浏览
如题,求高手指导.。
解决方案

15

这个情况比较多,只能说说什么情况下会onDestory
1.一般你点击系统的返回键就会杀死当前的Activity,这个时候onDestory就被调用了。
2.要么就你主要的去调用finish()方法,activity也会ondestroy。
3.在极端的情况下,系统内存不足的情况也会根据优先级来杀死一些Activity,这个时候他们的ondestory()方法也会被调用。
4.利用intent跳转时加入一些启动标识,如CLEAN_TASK之类的也会导致一些acitivity被销毁,ondestory()触发
值得说明的是点击系统的home键回到桌面的时候,onDestory()是没有触发的。

5

一个activity的销毁是调用onDestroy(),假如想你的activity不被销毁,可以重写onDestroy(),再去掉这句代码super.onDestroy();

10

finish函数仅仅把当前Activity退出了,但是并没有释放他的资源。安卓系统回收机制本人决定何时从内存中释放应用程序。当系统没有可用内存到时候,会按照优先级,释放部分应用。所以建议一些业务逻辑最好不要写在onDestory()方法中,可以写到例如onPause()方法中。

10

例如弹出一个对话框但没覆盖原 Activity 的时候,跳转 Activity 但没执行 finish 的时候,手动按 home 回到主界面时候,内存充足不会杀掉后台Activity 的时候等等,建议题主写个 Demo 亲自感受一下,就是在onDestory 中写个 Log.d 看下日志,到底什么时候 onDestory 被调用了,这样更加直观一点

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在什么情况下activity 不会调用onDestory
喜欢 (0)
[1034331897@qq.com]
分享 (0)