JobScheduler – Kodowanie w Flow

Od czasu Android Oreo, bezczynne aplikacje nie mogą już utrzymywać usług działających w tle. Jeśli więc musisz wykonywać operacje nawet wtedy, gdy Twoja aplikacja nie jest uruchomiona na pierwszym planie, powinieneś zamiast tego użyć JobSchedulera.
W tym filmie skonfigurujemy taki JobScheduler, tworząc klasę, która rozszerza JobService, a następnie nadając jej harmonogram za pomocą JOB_SCHEDULER_SERVICE.
W klasie JobService nadpisujemy onStartJob i onStopJob. W onStartJob uruchomimy wątek tła, aby wykonać pewne długo działające (fałszywe) operacje. W onStopJob anulujemy naszą pracę, ponieważ system zwolni wakelock, kiedy kryteria naszego zadania nie będą już spełnione (np. wymagaliśmy sieci nieopomiarowanej a użytkownik wyłączył WiFi). W tym przypadku ponownie zaplanujemy nasze zadanie, aby spróbować ponownie później.
Gdy zaplanujemy nasze zadanie, przekazujemy obiekt JobInfo do JobSchedulera, który określi w jakich okolicznościach chcemy, aby system wykonał nasze zadanie. Tutaj możemy ustawić kryteria takie jak setRequiresDeviceCharging, setRequiredNetworkType, setPeriodic i inne. Możemy nawet sprawić, że przetrwa on restart urządzenia dzięki setPersisted.
Na koniec rejestrujemy naszą usługę JobService w manifeście z uprawnieniem android.permission.BIND_JOB_SERVICE, a system uruchomi naszą usługę w odpowiednim czasie, nawet jeśli nasza aplikacja nie jest uruchomiona.

.