在什么情况下activity 不会调用onDestory,activityondestory
如题,求大神指导.。。。。。。。。。。。。。解决方案
1.一般你点击系统的返回键就会杀死当前的Activity,这个时候onDestory就被调用了。
2.要么就你主要的去调用finish()方法,activity也会ondestroy。
3.在极端的情况下,系统内存不足的情况也会根据优先级来杀死一些Activity,这个时候他们的ondestory()方法也会被调用。
4.利用intent跳转时加入一些启动标识,如CLEAN_TASK之类的也会导致一些acitivity被销毁,ondestory()触发
值得说明的是点击系统的home键回到桌面的时候,onDestory()是没有触发的。 一个activity的销毁是调用onDestroy(),如果想你的activity不被销毁,可以重写onDestroy(),再去掉这句代码super.onDestroy(); finish函数仅仅把当前Activity退出了,但是并没有释放他的资源。安卓系统回收机制自己决定何时从内存中释放应用程序。当系统没有可用内存到时候,会按照优先级,释放部分应用。所以建议一些业务逻辑最好不要写在onDestory()方法中,可以写到比如onPause()方法中。 比如弹出一个对话框但没覆盖原 Activity 的时候,跳转 Activity 但没执行 finish 的时候,手动按 home 回到主界面时候,内存充足不会杀掉后台Activity 的时候等等,建议楼主写个 Demo 亲自感受一下,就是在onDestory 中写个 Log.d 看下日志,到底什么时候 onDestory 被调用了,这样更加直观一点
用户评论