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 的实例也死亡了。

  • 相关阅读:
    农历查询
    C#颜色转换函数
    在IIS部署Silverlight网站
    silverlight双击事件处理
    关于List.Sort想到的
    sql获取总列数
    NHibernate的no persister for
    如何快速构建React组件库
    如何用canvas拍出 jDer's工作照
    Picker 组件的设计与实现
  • 原文地址:https://www.cnblogs.com/evilKing/p/4409432.html
Copyright © 2011-2022 走看看