我遇到的问题是我的服务实现了LocationListener,它似乎每500毫秒收到一次GPSupdate。无论我在requestLocationUpdates函数中放入什么minTime。
我的代码:
public class LocationService extends Service implements LocationListener {
LocationManager locMan;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER;
locMan.requestLocationUpdates( LocationManager.GPS_PROVIDER, 60000, 1, this);
}
public void onLocationChanged(Location location) {
Log.d( "Loc", "Location has been changed" );
}
}
在我的主要活动中的一个按钮中,我将调用startService(),之后它应该在后台运行,但它会持续更新。
答案 0 :(得分:1)
我发现你的情况有些不对劲:
GPS的准确度最多约为3米,而且处于最佳状态。因此,如果位置改变1米,请求更新是没有意义的。当实际上设备静止不动时,GPS噪声可以很容易地指示移动。将minDistance设为至少10是我的建议。
我不明白你为什么要调用isProviderEnabled(),因为你没有对返回的值做任何事情。
你说在startService()之后应该在后台运行,但事实并非如此。除非您为其创建某种后台线程,否则服务不会在后台运行。在这个答案中有太多内容可以解释服务是如何运作的。上网并做一些阅读,或者获得一本关于Android开发的好书。