zoukankan      html  css  js  c++  java
  • Activity onDestroy() 回调缓慢问题分析及完美解决方案

      说到Activity的onDestroy,对所有的Android开发者都很熟悉,但是不一定都知道里面存在着一些坑,分享给大家,以后踩中的时候可以应急

    用Activity的时候,会发现如下问题:

      有时候会发现Activity的onDestroy方法回调比较缓慢(可以达到好几秒钟之后才调用),即使之前使用finish方式关闭Activity也一样

    onDestroy回调慢带来什么问题呢?

      有可能再次打开Activity的时候,都走完了onCreate,onResume之后上一次的onDestroy方法才被调用,想想如果在onResume和

    onDestroy中共同维护了一个变量(isActivityShowing --> Activity是否正在显示),这个时候这个状态就错了。

    解决方法与建议

      所以建议不要在Activity的onDestroy方法中做有关于数据存储,状态维护的事情,回收资源也最好不要完全依赖这个方法,可以用下面的方式

    比较靠谱的解决方式

        private boolean isDestroyed = false;
    
        private void destroy()  {
            if (isDestroyed) {
                return;
            }
            // 回收资源
         isDestroyed = true;
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            if (isFinishing()) {
                destroy();
            }
        }
    
        @Override
        public void onDestroy() {
            destroy();
        }
    试了一下,只有走回收流程的时候(返回键)的那种onPause,isFinishing才为true

    普通的切到后台或者另外一个Activity盖上来的是那个isFinishing是false

    参考了另外一篇文章:http://blog.csdn.net/z1074971432/article/details/10517449

  • 相关阅读:
    week8
    2020中国大学生程序设计竞赛(CCPC)-网络选拔赛 题解
    卷积形式dp的多项式求逆做法
    多项式乘法逆(review)
    LaTex学习
    BZOJ 2653 middle
    BZOJ3207 花神的嘲讽计划Ⅰ
    BZOJ1901 Zju2112 Dynamic Rankings
    POJ2104 K-th Number
    平衡树总结专题
  • 原文地址:https://www.cnblogs.com/popfisher/p/5364804.html
Copyright © 2011-2022 走看看