Прежде всего, я полный нуб Android.Уже некоторое время искали решения, но пока не можем найти полезных советов в правильном направлении.Как правило, это может быть вызвано самой природой проблемы, являющейся весьма нишевым.
Рабочий код, приведенный ниже, основан на кодовой лаборатории по адресу https://codelabs.developers.google.com/codelabs/realtime-asset-tracking.
.было упомянуто в нескольких ресурсах как предпочтительный способ, как сделать что-то подобное на основе Android Work Manager вместо Сервиса с постоянным уведомлением?
public class TrackerService extends Service {
@Override
public void onCreate() {
super.onCreate();
requestLocationUpdates();
}
private void requestLocationUpdates() {
LocationRequest request = new LocationRequest();
request.setInterval(5 * 60 * 1000);
request.setFastestInterval(30 * 1000);
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
FusedLocationProviderClient client = LocationServices.getFusedLocationProviderClient(this);
int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
if (permission == PackageManager.PERMISSION_GRANTED) {
client.requestLocationUpdates(request, new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
Location location = locationResult.getLastLocation();
if (location != null) {
Log.d(TAG, "location update " + location);
}
}
}, null);
}
}
}
С моим опытом работы с веб-проектами вышеКод устанавливает «слушатель» на основе FusedLocationProviderClient.Как только появится новое обновление местоположения, оно будет вызывать onLocationResult
с соответствующим результатом местоположения.
Что я узнал о Work Manager до сих пор, так это то, что вы можете настроить Worker with Work Manager на doWork()
один раз или периодически.Эффективно, как задание cron ...
Чего я не понимаю, если в фоновом режиме не будет запущенной службы, где будет инициироваться Worker и запрос на обновление местоположения?И как они будут работать вместе?