requestLocationUpdates在Android中的间隔不会更新

Ban*_*der 5 gps android location locationmanager

我有一个问题,我的服务实现了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" );
    }
}
Run Code Online (Sandbox Code Playgroud)

从我的主要活动中的一个按钮,我将调用startService(),之后它应该在后台运行,但它会提供持续的更新.

Dav*_*ean 2

我发现您的情况存在一些问题:

GPS 的精度最多约为 3 米,这是在最佳条件下的情况。因此,如果位置改变 1 米,则请求更新是没有意义的。GPS 噪音很容易表明设备正在移动,而实际上设备是静止的。我建议将 minDistance 至少设置为 10。

我不明白您为什么要调用 isProviderEnabled() 因为您没有对返回值执行任何操作。

您说在 startService() 之后,事情应该在后台运行,但事实并非如此。除非您为其创建某种后台线程,否则服务不会在后台运行。这个答案要涵盖的内容太多,无法解释服务的工作原理。上网阅读一些书籍,或者获取一本有关 Android 开发的好书。