android 判断 activity 状态
2015-08-22 15:49
274 查看
转自:http://fengweipeng1208.blog.163.com/blog/static/212773180201391523739889/
由于多线程下载,在下载完成时,要回调Activity中的方法,但是,有可能用户在此期间已经点击了Back,Activity的onDestroy方法已经被调用,Activity已经被销毁,所以,下载线程在完成下载,回调时,要先判断Activity的状态,是否已经销毁掉,在网上查找答案,结果遇到一个说:
((Activity) mContext).isDestroyed();
可是到MyEclipse中,写了一下,代码提示,根本没有这个方法,真心坑爹啊,不过,有一个activity#isFinishing,写了个测试代码,发现可用,Activityon在Destroy之前,activity#isFinishing返回false,Activityon在Destroy之后,返回true。
测试线程代码如下:
import android.app.Activity;
public class MyThread extends Thread {
Activity activity;
public MyThread(Activity activity) {
super();
this.activity = activity;
}
@Override
public void run() {
super.run();
for (int i = 0; i < 3; i++) {
System.out.println(i + " activity:" + activity);
System.out.println(i + " isFinishing:" + activity.isFinishing());
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
ps:1.activity#isFinishing是4.2之后才有的方法。
2.((FragmentActivity)
mContext).isDestroyed();
由于多线程下载,在下载完成时,要回调Activity中的方法,但是,有可能用户在此期间已经点击了Back,Activity的onDestroy方法已经被调用,Activity已经被销毁,所以,下载线程在完成下载,回调时,要先判断Activity的状态,是否已经销毁掉,在网上查找答案,结果遇到一个说:
((Activity) mContext).isDestroyed();
可是到MyEclipse中,写了一下,代码提示,根本没有这个方法,真心坑爹啊,不过,有一个activity#isFinishing,写了个测试代码,发现可用,Activityon在Destroy之前,activity#isFinishing返回false,Activityon在Destroy之后,返回true。
测试线程代码如下:
import android.app.Activity;
public class MyThread extends Thread {
Activity activity;
public MyThread(Activity activity) {
super();
this.activity = activity;
}
@Override
public void run() {
super.run();
for (int i = 0; i < 3; i++) {
System.out.println(i + " activity:" + activity);
System.out.println(i + " isFinishing:" + activity.isFinishing());
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
ps:1.activity#isFinishing是4.2之后才有的方法。
2.((FragmentActivity)
mContext).isDestroyed();
相关文章推荐
- 利用Theme自定义Activity间的切换动画
- Android 关于获取摄像头帧数据解码
- android利用剪切板传递数据
- Android中Bitmap,byte[],Drawable相互转化
- [Android] 输入系统(二)
- Android Studio 'The same input jar is specified twice'
- 加速Android Studio/Gradle构建
- ViewPager内嵌ViewPager以及与SwipeRefreshLayout冲突的问题
- Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作
- 【android ndk】macos环境下Android Studio中利用gradle编译jni模块及配置
- android中的window
- andoid 测试logcat的使用
- Android快速开发,十个最常用的框架
- IM项目,使用openfire服务,Smack的android端概述
- Android笔记一
- (三)android中Toast的使用
- [Android]在ListView嵌套GridView中出现的点击事件处理以及gridview显示不全的问题
- android sqlite使用
- Android中Java与web通信
- android之interpolator的用法详解