2023-02-08

                   关于解决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方法了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容