2023-02-08
2023-02-07 本文已影响0人
Glide_Retrofit
关于解决Activity的onDestroy方法延迟执行的问题
关于这个问题,我们先回顾一下Activity的生命周期。
从A页面跳到B页面
A.onCreate() ----->A.onStart()------> A.onResume() ---->A.onPause()
----> B.onCreate() ---->B.onStart()----->B.onResume()-----A.onStop()
B显示后 点击返回按钮 回调的方法
B.onPause()------>A.onRestart()---->A.onStart()---->A.onResume()
----->B.onStop()------>B.onDestroy()
这样就很清楚了,如果我在A页面的onStart或者onResume方法里做了某些耗时操作就会导致B页面的onStop方法和onDestroy方法执行的慢了。
如果在B页面的onDestroy方法了写了释放资源的代码,就会出现资源关闭不及时的问题(比如B页面是播放页,在onDestroy方法里做了销毁视频播放的操作,就会出现返回到A页面后,视频的声音仍然存在几秒钟。)
所以解决办法我想到两种,1.释放资源的代码写到onPause里,判断一下当前页finsh的状态,如果true就直接释放资源,因为这样就算耗时操作导致onDestroy方法延迟也不会影响释放资源。
2.就是笨方法了,比如我是因为A页面一个无限循环的动画导致的耗时,我就在进入B页面的时候,关闭动画,然后返回来的时候延时一秒在重新开启动画,这样B页面就有时间走完onDestroy方法了。