我请求网络获取数据然后显示到百度地图覆盖物上,
mThread = new Thread(new Runnable() {
public void run() {
mHandler.sendEmptyMessage(1);
Drawable er = getResources().getDrawable(
R.drawable.icon_a); // 得到需要标在地图上的资源
mMapView.getOverlays().add(
new OverItemT(er, BaiduMapActivity.this)); // 添加ItemizedOverlay实例到mMapView
mHandler.sendEmptyMessage(2);
}
});
mThread.start();
isRun = true;
就是如何正确的销毁这个线程呢?我目前用到的是用这个线程判断
if (isRun) {
mThread.stop();
isRun = false;
}
但是会在返回这个activity再进的时候会报错,这该怎么解决?
mThread = new Thread(new Runnable() {
public void run() {
mHandler.sendEmptyMessage(1);
Drawable er = getResources().getDrawable(
R.drawable.icon_a); // 得到需要标在地图上的资源
mMapView.getOverlays().add(
new OverItemT(er, BaiduMapActivity.this)); // 添加ItemizedOverlay实例到mMapView
mHandler.sendEmptyMessage(2);
}
});
mThread.start();
isRun = true;
就是如何正确的销毁这个线程呢?我目前用到的是用这个线程判断
if (isRun) {
mThread.stop();
isRun = false;
}
但是会在返回这个activity再进的时候会报错,这该怎么解决?
其次不推荐使用stop方法。正确的销毁退出线程的方法是让线程run方法结束,或者抛出异常或错误。
但是如果遇到了阻塞等问题,不会进行退出flag check的时候,要用到其他方法。
http://www.cnblogs.com/slider/archive/2011/12/09/2272253.html
这个介绍的就不错。如果是一个需要大量计算读写耗时的method的话。我建议你重写他的方法。
比如一个FileOutputStream类
InterruptibleFileOutputStream
你去重写他最耗时的write类。通过一个flag,每过一段时间就进行check,如果中断,就抛出一个异常。
在线程中再补货这个异常来结束这段耗时的方法。