onPause,onStop,onDestory剖析
2020-06-02 本文已影响0人
那个阳光下奔跑的少年
onDestory一定会调用么?
正常点击返回键: onDestroy方法一定会执行;
从后台强杀分两种情况:
第一种:当前仅有一个activity,这时候,强杀,是会执行onDestroy方法的;
第二种:栈里面的第一个没有销毁的activity会执行ondestroy方法,其他的不会执行。
比如说:从mainactivity跳转到activity-A(或者继续从activity-A再跳转到activity-B),这时候,从后台强杀,只会执行mainactivity的onDestroy方法,activity-A(以及activity-B)的onDestroy方法都不会执行
同时,我们看下官方对onDestory是怎么说的
onDestory.png
有两种方式会调到onDestory,一种是主动调用finish,还有一种是调用系统空间不足杀掉activity时,这两种方式可以通过isFinishing区分。
如果要保存数据建议在onPause或onSaveInstanceState(Bundle),这个方法经常用于释放线程资源。
onPause可以做耗时操作么?
onPause.png假如你从A activity调到到B activity,直到A activity onPause执行完,才会开始B activity oncreate,所以不可以做耗时操作。
onPause通常用于保存一些永久的数据。
onStop一定会执行么?
如果B是个透明的窗口,或者是对话框的样式,就不会执行。
onstop.pngonstop用于停止更新UI,停止动画和其他视觉的事情。