JobScheduler – Coding in Flow
De la Android Oreo, aplicațiile inactive nu mai pot menține serviciile de fundal în funcțiune. Așadar, dacă aveți nevoie să efectuați operații chiar dacă aplicația dvs. nu rulează în prim-plan, ar trebui să utilizați în schimb un JobScheduler.
În acest videoclip vom configura un astfel de JobScheduler prin crearea unei clase care extinde JobService și apoi programarea acestuia cu JOB_SCHEDULER_SERVICE.
În clasa JobService, vom suprascrie onStartJob și onStopJob. În onStartJob vom porni un fir de execuție în fundal pentru a efectua unele operații (false) de lungă durată. În onStopJob ne vom anula activitatea, deoarece sistemul va elibera wakelock-ul atunci când criteriile pentru jobul nostru nu mai sunt îndeplinite (de exemplu, am solicitat o rețea nemăsurată și utilizatorul dezactivează WiFi). În acest caz, ne vom reprograma sarcina pentru a încerca din nou mai târziu.
Când ne programăm lucrarea, transmitem un obiect JobInfo către JobScheduler, care va defini circumstanțele în care dorim ca sistemul să execute lucrarea noastră. Aici putem seta criterii precum setRequiresDeviceCharging, setRequiredNetworkType, setPeriodic și altele. Putem chiar să-l facem să supraviețuiască repornirii dispozitivului cu setPersisted.
În cele din urmă, înregistrăm JobService-ul nostru în manifest cu permisiunea android.permission.BIND_JOB_SERVICE și sistemul va porni serviciul nostru la momentul potrivit, chiar dacă aplicația noastră nu rulează.
.