一般会遇到这样的情况:在一个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 的实例也死亡了。

最新文章

  1. C#开源日志Nlog入门
  2. 利用Properties来读取JDBC配置文件
  3. 关于java序列化中的一个细节
  4. as3 中文转拼音
  5. MVC的路径查找顺序
  6. Java中static静态关键字的使用
  7. UISlider控件属性及方法(转)
  8. php 修改 AppServ 下Apache 端口
  9. Windows脚本
  10. struts2 最新S2-016-S2-017漏洞通杀struts2所有版本及修复方法
  11. 使用URL读取网络图片资源
  12. 视差滚动(Parallax Scrolling)效果的原理与实现
  13. C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装
  14. this语句
  15. I/O多路转接模型
  16. css清除浮动方法小结
  17. 在Android中使用AlarmManager
  18. Alpha冲刺阶段评分发布
  19. 2.启动MySql服务
  20. Dijkstra和Prim算法的区别

热门文章

  1. c语言 nmealib-0.5.3 学习 简单代码 ,供参考
  2. spring data jpa实现多条件查询(分页和不分页)
  3. LVS+Keepalived小试牛刀
  4. Spring事务管理1-------环境搭建
  5. img标签替换为mip-img标签的方法
  6. xdebug调试的原理
  7. JKD1.8新特性
  8. python logging模块【转载】
  9. Java学习笔记-内部类
  10. bootstrap table checkbox获得选中得数据