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

  • 相关阅读:
    devexpress13学习系列(三)PDFViewer(3)
    devexpress13学习系列(一)PDFViewer(2)
    devexpress13学习系列(一)PDFViewer(1)
    Android图像处理之Bitmap类(zz)
    laravel 制作购物车流程
    数据类型转换
    http返回值
    前段框架
    开启GD拓展
    PHP初级程序员出路
  • 原文地址:https://www.cnblogs.com/popfisher/p/5364804.html
Copyright © 2011-2022 走看看