JobScheduler – Kódování ve službě Flow

Od systému Android Oreo už nečinné aplikace nemohou udržovat spuštěné služby na pozadí. Pokud tedy potřebujete provádět operace, i když vaše aplikace neběží v popředí, měli byste místo toho použít JobScheduler.
V tomto videu takový JobScheduler nastavíme vytvořením třídy, která rozšiřuje JobService, a následným plánováním pomocí JOB_SCHEDULER_SERVICE.
V třídě JobService přepíšeme onStartJob a onStopJob. V onStartJob spustíme vlákno na pozadí, které bude provádět některé dlouhodobé (falešné) operace. V onStopJob zrušíme naši práci, protože systém uvolní wakelock, když již nejsou splněna kritéria pro naši úlohu (například jsme požadovali neměřenou síť a uživatel vypne WiFi). V takovém případě naši úlohu přeplánujeme, abychom se o to pokusili později.
Při plánování naší úlohy předáme JobScheduleru objekt JobInfo, který bude definovat, za jakých okolností chceme, aby systém naši úlohu provedl. Zde můžeme nastavit kritéria jako setRequiresDeviceCharging, setRequiredNetworkType, setPeriodic a další. Můžeme dokonce zařídit, aby přežila restartování zařízení pomocí setPersisted.
Nakonec zaregistrujeme naši službu JobService v manifestu s oprávněním android.permission.BIND_JOB_SERVICE a systém pak spustí naši službu ve vhodnou dobu, i když naše aplikace není spuštěná.

.