Próbuję wysłać lokalizację urządzenia z Androidem do serwera co 10 minut. Używam Firebase dyspozytora pracy to zrobićZaplanuj pracę cykliczną za pomocą dyspozytora zadań Firebase
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this));
Job myJob = dispatcher.newJobBuilder()
.setService(UpdateLocationService.class)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(10, 20))
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
.setTag("location-update-job")
.setLifetime(Lifetime.FOREVER)
.build();
dispatcher.mustSchedule(myJob);
UpdateLocationService
dostaje lokalizację i wysyła do serwera.
Mój problem: sprawy w większości działają dobrze. Tylko, że zadania są planowane z różnicą 4m, 6m, 7m, 8m, 10m, 16m, 23m ...
Czy ktoś może mi pomóc zrozumieć, co się dzieje.
Aktualizacja: chcę raz na lokalizację w 10-20 minut. W powyższym kodzie wartość jest zbyt niska, tylko dla celów testowych:
Jeśli zadanie nie powiedzie się, to wyobrażam sobie, że istnieje wstrzymanie. Sądzę też, że nie ma gwarancji na bieganie w tym momencie. Łączenie czasu zwolnienia ze zmiennym czasem rozpoczęcia będzie uwzględniało czasy. Czy zwróciłeś właściwą wartość logiczną w 'onStopJob()'? –
@ kranthi117 znalazłeś odpowiedź na to? –
@SharpEdge jeszcze nie :( – kranthi117