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

  • 相关阅读:
    parseInt()的用法
    报文
    express的中间件与next()
    前后端分离与前后端不分离
    jQuery中四个绑定事件的区别 on,bind,live,delegate
    TCP传输的三次握手四次挥手策略
    报文
    HTTP和HTTPS以及两者的区别
    前后端不分离与分离
    express中间件的next()方法
  • 原文地址:https://www.cnblogs.com/evilKing/p/4409432.html
Copyright © 2011-2022 走看看