android 位置服务是一个在后台运行的模块,因此您无需将其分离到另一个线程中。
但是,我根本不建议您使用 java 线程类或可运行接口,而是使用异步任务来为您执行所有线程管理。看看 android 开发者博客Painless Threading。
要在位置更新上更新您的 UI 线程,您可以使用更新处理程序。每次有可用的 GPS 数据时,都会向主 ui 线程中的更新处理程序传输一条消息。
例如
public void onLocationChanged(Location location) {
location = this.lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
try {
this.mLongitude = location.getLongitude();
this.mLatitude = location.getLatitude();
Message msg = Message.obtain();
msg.what = UPDATE_LOCATION;
this.SystemService.myViewUpdateHandler.sendMessage(msg);
} catch (NullPointerException e) {
Log.i("Null pointer exception " + mLongitude + "," + mLatitude, null);
}
}
在您的主要活动课程中:
Handler myViewUpdateHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_LOCATION:
//do something
}
super.handleMessage(msg);
}
};