JobScheduler – Codering in Flow

Sinds Android Oreo kunnen inactieve apps geen achtergronddiensten meer draaien. Dus als je bewerkingen moet uitvoeren, zelfs als je app niet op de voorgrond draait, moet je in plaats daarvan een JobScheduler gebruiken.
In deze video zetten we zo’n JobScheduler op door een klasse te maken die JobService uitbreidt en deze vervolgens in te plannen met de JOB_SCHEDULER_SERVICE.
In de JobService-klasse overriden we onStartJob en onStopJob. In onStartJob starten we een achtergrond thread om een aantal langlopende (nep) operaties uit te voeren. In onStopJob annuleren we ons werk omdat het systeem de wakelock zal vrijgeven wanneer niet meer aan de criteria voor onze job wordt voldaan (bijvoorbeeld we hadden een unmetered netwerk nodig en de gebruiker schakelt WiFi uit). In dit geval zullen we onze taak opnieuw plannen om het later opnieuw te proberen.
Wanneer we onze taak plannen, geven we een JobInfo object door aan de JobScheduler, die zal definiëren onder welke omstandigheden we willen dat het systeem onze taak uitvoert. Hier kunnen we criteria instellen zoals setRequiresDeviceCharging, setRequiredNetworkType, setPeriodic en meer. We kunnen zelfs zorgen dat het apparaat reboots overleeft met setPersisted.
Ten slotte registreren we onze JobService in het manifest met de android.permission.BIND_JOB_SERVICE permissie en het systeem zal dan onze service starten op het juiste moment, zelfs als onze app niet draait.