我有一个不时报告位置的 Android 后台服务。当我通过 wifi 在本地进行测试时,它工作得很好,但是当在 3G 连接中进行测试时(有时在 Edge 上),我发现应用程序显然进入了瓶颈并且不执行onLocationChanged方法。没关系,因为可能会丢失信号等。然而,过了一段时间(可能在重新建立连接时)它开始立即更新所有请求,在几秒钟内多次执行onLocationChanged方法。
有谁知道如何解决这个问题?是否可以在方法locationManager.requestLocationUpdates中添加超时?
我的听众
public class MyListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
//report location to server
HttlCallToUpdatePostion(loc.Latitude, loc.Longitude, loc.Accuracy);
}
}
我的服务
Handler handler = null;
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
MyListener listener = new MyListener();
protected void doWork() {
Looper.prepare();
handler = new Handler();
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, listener);
Looper.loop();
}