zoukankan      html  css  js  c++  java
  • 判断Actiivty是否已经被销毁

      一般会遇到这样的情况:在一个Activity中启动一个异步任务,异步任务中需要返回值,然后被Activity使用,但是当异步任务还未结束时,按下home键,如果这个时候系统内存比较紧张,这个Activity有可能被销毁(如果使用小米手机进行真机调试,可以在开发者选项中开启不保留活动选项),这个时候异步任务返回后会报异常,那如何解决这种问题,最简单的办法是在异步任务返回后做一下判断,若Activity已经被销毁了,则直接返回,不做任何处理。

      一般我们会使用activity.isFinishing()方法,若Activity被结束,这返回true,否则的话返回false。在实际的项目中发现这样还不行,还需要使用activity.isDestoryed()方法来判断activity是否被销毁,但是有个问题是isDestoryed()方法支持的最低版本为Level 17,那对于17版本以下的如何去处理呢?

      可以使用FragmentManager对象来判断,即

            if(fragmentManager.isDestroyed) return;

    API doc 下这样写道:

    /**

    * Returns true if the final {@link android.app.Activity#onDestroy() Activity.onDestroy()}
    * call has been made on the FragmentManager's Activity, so this instance is now dead.
    */
    public abstract boolean isDestroyed();

    意思很明显,如果Activity被销毁的话,那么fragmentManager 的实例也死亡了。

  • 相关阅读:
    第三周星期三
    第三周星期二
    导入oc动态库(framework)到C++项目中混编出现的问题
    webrtc项目编译报错(image not found)
    OpenGL-综合案例:旋转的大小球
    使用OpenGL来画个甜甜圈
    OpenGL-深度测试和颜色混合
    OpenGL 绘制正方形的基本步骤
    数据结构与算法-基础
    关于iOS离屏渲染的深入研究
  • 原文地址:https://www.cnblogs.com/evilKing/p/4409432.html
Copyright © 2011-2022 走看看