我们可以将android工作管理器配置为在根据距离发生位置更改时运行吗?

时间:2019-03-27 15:38:11

标签: android google-maps android-location android-workmanager foreground-service

我需要为我的应用程序连续运行的后台服务。我在网上寻找了不同的方式,例如前台服务,该服务连续显示android 8,Work Manager和Job Scheduler以上版本的通知。我认为Work Manager在后台运行方面适合我的要求,但不确定是否可以根据位置距离的变化来触发它。

https://developer.android.com/topic/libraries/architecture/workmanager

我看到我们可以像每15分钟进行一次定期更新,但想知道是否可以根据位置距离更改本身进行配置。

https://medium.com/@prithvibhola08/location-all-the-time-with-workmanager-8f8b58ae4bbc

例如,如果我为位置请求设置了setSmallestDisplacement(10m),则应在每10m距离更改时触发工作人员管理器,并将位置发送给服务器。

https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest

1 个答案:

答案 0 :(得分:1)

对于我的应用程序,我将让位置服务不按计划运行。但是,我将在位置管理器中指定更改的最小距离,以调用这样的更新。

private void onStartListening() {  
   //init location manager.
   LocationManager mLm = (LocationManager) getSystemService(LOCATION_SERVICE);

   //binding listener to manager with network provider.    
   mLm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 10, mNetworkListener);
}

我的requestLocationUpdates()的第三个参数是两次位置更新之间的最小距离(以米为单位)。

另外,第二个是位置更新之间的最小时间间隔(以毫秒为单位)。如果您也想为位置更新指定时间标准。