我请求网络获取数据然后显示到百度地图覆盖物上,
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再进的时候会报错,这该怎么解决?

解决方案 »

  1.   

    首先要发报错log。
    其次不推荐使用stop方法。正确的销毁退出线程的方法是让线程run方法结束,或者抛出异常或错误。
    但是如果遇到了阻塞等问题,不会进行退出flag check的时候,要用到其他方法。
    http://www.cnblogs.com/slider/archive/2011/12/09/2272253.html
    这个介绍的就不错。如果是一个需要大量计算读写耗时的method的话。我建议你重写他的方法。
    比如一个FileOutputStream类
    InterruptibleFileOutputStream
    你去重写他最耗时的write类。通过一个flag,每过一段时间就进行check,如果中断,就抛出一个异常。
    在线程中再补货这个异常来结束这段耗时的方法。
      

  2.   

    谢谢了,我已经解决了,是一个空指针的问题。我还有个问题,android这一块访问网络获取json,然后用这些数据更新ui,这个多线程要怎么实现呢?用Handler怎么接收这个json呢?
      

  3.   

    用线程获取json,解析他,放到内存当中,用handler通知ui,来调用内存中解析完了的数据,刷新界面。