我在做的一个功能是过几分钟就提交一次坐标到服务器,进行保存,跟踪司机地理位置。

主线程:

private static final String CONTEXT = Context.LOCATION_SERVICE; // 环境

LocationManager locationManager;

/** 获得LocationManager实例 */

public LocationManager getLocationManager() {

return (LocationManager) getSystemService(CONTEXT);

}

onCreate方法:

{

Thread t = new Thread(new getLocation(provider));

t.setDaemon(true);// 设置为后台线程

t.start();

}

Handler h = new Handler() {

@Override

public void handleMessage(Message msg) {

LocationManager l = getLocationManager();

try {

String provider1 = getProvider(getLocationManager());

TimeUnit.MICROSECONDS.sleep(100);

l.requestLocationUpdates(provider1, 0, 0, locationListener);

Location location = l.getLastKnownLocation(provider1);

//打印效果。

System.out.println(location.getLatitude()

+ "{}{}{}{}{}{}{}{}___");

// 为绘制标志的类设置坐标,非常重要,刷新Location

mapOverlay.setLocation(location);

Thread t = new Thread(new getLocation(provider1));

t.start();

Thread.yield();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

super.handleMessage(msg);

}

};

private class getLocation implements Runnable {

@Override

public void run() {

Message m = new Message();

h.handleMessage(m); // Handler的实例

Thread.yield();

}

}

getLocation 和handler 这2个线程,让他们相互调用,形成死循环状态。

mapOverlay.setLocation(location); 这个方法太重要了。。。

程序总是出现在线程错误,不知道哪位大侠能够指点下原因:

下面是截图

更多相关文章

  1. Android中简单的电话管理与短信管理App编写实例
  2. Android(安卓)viewpager 拿到当前显示的 fragment 的实例
  3. Android中一种ThreadPool的实现
  4. Android之SimpleAdapter简单实例和SimpleAdapter参数说明
  5. Android(安卓)Service那些不得不说的事-之一
  6. Android之实现手电筒实例
  7. Android(安卓)Audio相关 AudioFlinger类
  8. Android/J2SE计算两个位置坐标之间的距离

随机推荐

  1. 图片阴影
  2. :Android(安卓)a2sd各种版本和技术解释
  3. Xutils3.0使用详解
  4. android 使用SimpleCursorAdapter将SQLit
  5. Android(安卓)源码 listview 重用机制 浅
  6. Android(安卓)系统(framework)定制、修改
  7. Channel is unrecoverably broken and wi
  8. Android之旅十六 android中各种资源的使
  9. Android由一个activity 间隔5秒自动跳转
  10. 问题文件Android(安卓)Studio 安装完成不