我需要为我的应用程序连续运行的后台服务。我在网上寻找了不同的方式,例如前台服务,该服务连续显示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
答案 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()
的第三个参数是两次位置更新之间的最小距离(以米为单位)。
另外,第二个是位置更新之间的最小时间间隔(以毫秒为单位)。如果您也想为位置更新指定时间标准。