我正在开发一个必须在后台运行并将位置更新发送到服务器的应用程序。
代码非常简单,正常工作。有一个服务有一个定时器,它每 15 秒向服务器发送一次更新,它还实现了 LocationListener 接口。
我不认为提供所有代码会有用,这是我设置课程的方式:
@Override
public void onCreate() {
super.onCreate();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER , 5000, 10.0f, this);
locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER , 5000, 10.0f, this);
//Ping Task sends updates to the Server
Ping_Timer.scheduleAtFixedRate( new Ping_Task(), 5000, Ping_Task.TIME_GET_JOBS*1000 );
}
在实践中,我的代码存在一些问题。服务应该在后台工作,即使服务停止,也有一个 GCM 系统可以在后台重新启动服务。
即使有了这些保护,我仍然遇到问题,有时应用程序不再更新位置,即使很明显该服务仍在运行。在谷歌地图应用程序上,我可以看到位置正确,但在我的应用程序中不正确。这怎么可能,为什么我不再收到“onLocationChanged”事件了。
谢谢你的帮助。