从 android Oreo 我们不能使用一些隐式广播接收器(网络状态等)。取而代之的是,我们可以使用作业调度程序或调度程序。但在 I/O 2018 中,谷歌引入了一个名为 workmanager 的新库。
但是这里出现了一个问题,我如何在工作管理器中处理系统事件(通话接收、网络状态更改、GPS 开/关等)?或者我如何在特定时间安排我的工作(不使用时间计算)?
如果有人对此有任何想法,请告诉我。提前致谢。
从 android Oreo 我们不能使用一些隐式广播接收器(网络状态等)。取而代之的是,我们可以使用作业调度程序或调度程序。但在 I/O 2018 中,谷歌引入了一个名为 workmanager 的新库。
但是这里出现了一个问题,我如何在工作管理器中处理系统事件(通话接收、网络状态更改、GPS 开/关等)?或者我如何在特定时间安排我的工作(不使用时间计算)?
如果有人对此有任何想法,请告诉我。提前致谢。
您可以简单地使用 LocationService 类中的 setInterval 方法进行归档。
按照指南使用 FusedLocaation 创建侦听器,这可以为您提供更好的位置逻辑结果。 https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setInterval(5000);
// in milliseconds in you case change into 3600000
locationRequest.setFastestInterval(1000);
locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
然后用回调启动一个fusedLocation
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(locationActivity);
mFusedLocationClient.requestLocationUpdates(locationRequest, new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
super.onLocationAvailability(locationAvailability);
}
},null);
谢谢