美文网首页
2023-02-08

2023-02-08

作者: Glide_Retrofit | 来源:发表于2023-02-07 16:08 被阅读0次

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

    相关文章

      网友评论

          本文标题:2023-02-08

          本文链接:https://www.haomeiwen.com/subject/qatfkdtx.html