首页 > 其他 > 详细

判断Actiivty是否已经被销毁

时间:2015-04-09 15:04:38      阅读:6250      评论:0      收藏:0      [点我收藏+]

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

判断Actiivty是否已经被销毁

原文:http://www.cnblogs.com/evilKing/p/4409432.html

(4)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!