Programarea sarcinilor cu WorkManager Face parte din Android Jetpack.
WorkManager este un API care facilitează programarea de sarcini asincrone, care pot fi amânate și care se așteaptă să fie executate chiar dacă aplicația se închide sau dispozitivul se repornește. API-ul WorkManager este un înlocuitor adecvat și recomandat pentru toate API-urile anterioare de programare în fundal pentru Android, inclusivFirebaseJobDispatcher, GcmNetworkManager și Job Scheduler. WorkManagerîncorporează caracteristicile predecesorilor săi într-o API modernă și coerentă, care revine la nivelul API 14, fiind în același timp atentă la durata de viață a bateriei.
Sub capotă WorkManager utilizează un serviciu subiacent de dispecerizare a lucrărilor bazat pe următoarele criterii:
Nota: Dacă aplicația dvs. vizează Android 10 (nivel API 29) sau mai sus, apelurile APIFirebaseJobDispatcher și GcmNetworkManager nu vor mai funcționa pe dispozitivele care rulează Android Marshmallow (6.0) și mai sus. Urmați ghidurile de migrare pentruFirebaseJobDispatcherși GcmNetworkManagerpentru îndrumări privind migrarea. De asemenea, consultați anunțul Unifying Background Task Scheduling onAndroid pentru mai multe informații cu privire la devalorizarea acestora.
Caracteristici
Pe lângă faptul că oferă un API mai simplu și mai coerent, WorkManager are o serie de alte beneficii cheie, inclusiv:
Work Constraints
Definiți în mod clar condițiile optime pentru ca munca dvs. să ruleze folosind WorkConstraints.(De exemplu, rulați numai atunci când dispozitivul este Wi-Fi, când dispozitivul este inactiv sau când are suficient spațiu de stocare etc.)
Programare robustă
WorkManager vă permite să programați lucrările pentru a fi executate o singură dată sau în mod repetat folosind ferestre de programare flexibile. Lucrările pot fi, de asemenea, etichetate și denumite, permițându-vă să programați lucrări unice, înlocuibile și să monitorizați sau să anulați grupuri de lucrăriîmpreună. Munca programată este stocată într-o bază de date SQLite gestionată intern, iarWorkManager are grijă să se asigure că această muncă persistă și este reprogramatăîntre repornirile dispozitivului. În plus, WorkManager aderă la funcțiile de economisire a energiei și la cele mai bune practici, cum ar fi modul Doze,astfel încât nu trebuie să vă faceți griji în această privință.
Politică flexibilă de reluare a activității
Uneori munca eșuează. WorkManager oferă politici flexibile de reluare a încercărilor,inclusiv o politică de revenire exponențială configurabilă.
Work Chaining
Pentru lucrări complexe legate între ele, înlănțuiți sarcinile de lucru individuale folosind o interfață fluentă, naturală, care vă permite să controlați care piese se execută secvențial și care se execută în paralel.
Kotlin
WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()
Java
WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();
Pentru fiecare sarcină de lucru, puteți defini datele de intrare și de ieșire pentru lucrarea respectivă. Atunci când se înlănțuie lucrările împreună, WorkManager trece automat datele de ieșire de la o sarcină de lucru la următoarea.
Interoperabilitate de fire de execuție încorporată
WorkManager se integrează fără probleme cuRxJava șiCoroutinesși oferă flexibilitatea de a vă conecta propriileAPI asincrone.
Utilizați WorkManager pentru lucrări care pot fi amânate și fiabile
WorkManager este destinat lucrărilor care pot fi amânate – adică care nu trebuie să se execute imediat – și care trebuie să se execute în mod fiabil chiar dacă aplicația iese din aplicație sau dacă dispozitivul se repornește. De exemplu:
- În trimiterea de jurnale sau analize către servicii backend
- Sincronizarea periodică a datelor aplicației cu un server
WorkManager nu este destinat lucrărilor de fundal în proces care pot fi terminate în siguranță dacă procesul aplicației dispare sau lucrărilor care necesită o execuție imediată. Vă rugăm să consultați ghidul de procesare în fundal pentru a vedea ce soluție răspunde nevoilor dumneavoastră.
Getting Started
Consultați ghidul Getting started pentru a începe să utilizațiWorkManager în aplicația dumneavoastră.
.