JobScheduler – Koodaus Flow’ssa
Android Oreosta lähtien käyttämättömät sovellukset eivät voi enää pitää taustapalveluita käynnissä. Joten jos sinun täytyy tehdä toimintoja, vaikka sovelluksesi ei ole etualalla käynnissä, sinun kannattaa käyttää sen sijaan JobScheduleria.
Tässä videossa perustamme tällaisen JobSchedulerin luomalla luokan, joka laajentaa JobService-luokkaa, ja sitten ajastamme sen JOB_SCHEDULER_SERVICE:llä.
JobService-luokassa ohitamme onStartJob- ja onStopJob-luokat. Kohdassa onStartJob käynnistämme taustasäikeen tekemään joitain pitkäaikaisia (tekaistuja) operaatioita. Kohdassa onStopJob peruutamme työmme, koska järjestelmä vapauttaa wakelockin, kun työmme kriteerit eivät enää täyty (esimerkiksi vaadimme mittaamatonta verkkoa ja käyttäjä poistaa WiFi:n käytöstä). Tässä tapauksessa ajoitamme tehtävämme uudelleen yrittääksemme myöhemmin uudelleen.
Kun ajoitamme työmme, välitämme JobSchedulerille JobInfo-olion, joka määrittelee, missä olosuhteissa haluamme järjestelmän suorittavan työmme. Tässä voimme asettaa kriteerejä, kuten setRequiresDeviceCharging, setRequiredNetworkType, setPeriodic ja muita. Voimme jopa saada sen selviytymään laitteen uudelleenkäynnistyksistä setPersistedin avulla.
Viimeiseksi rekisteröimme JobService-palvelumme manifestissa android.permission.BIND_JOB_SERVICE-oikeudella, jolloin järjestelmä käynnistää palvelumme sopivana ajankohtana, vaikka sovelluksemme ei olisi käynnissä.