Feladatok ütemezése a WorkManagerrel Az Android Jetpack része.
A WorkManager egy API, amely megkönnyíti a halasztható, aszinkron feladatok ütemezését, amelyek várhatóan akkor is elindulnak, ha az alkalmazás kilép vagy a készülék újraindul. A WorkManager API alkalmas és ajánlott helyettesítője az összes korábbi Android háttér-ütemező API-nak, beleértve aFirebaseJobDispatcher, a GcmNetworkManager és a Job Scheduler API-kat. A WorkManager egy modern, konzisztens API-ban foglalja magába elődei funkcióit, amely a 14. API-szintig működik vissza, miközben az akkumulátor élettartamát is szem előtt tartja.
A motorháztető alatt a WorkManager egy mögöttes munkaközvetítő szolgáltatást használ, amely a következő kritériumokon alapul:
Figyelem: Ha az alkalmazás az Android 10 (API 29. szint) vagy annál magasabb szintű Androidot célozza, aFirebaseJobDispatcher és a GcmNetworkManager API-hívások már nem fognak működni az Android Marshmallow (6.0) vagy annál magasabb szintű Androidot futtató eszközökön. A migrációhoz kövesse aFirebaseJobDispatcher és a GcmNetworkManager migrációs útmutatóját. Lásd továbbá az Unifying Background Task Scheduling onAndroidannouncement (Háttérfeladat-ütemezés egységesítése az Androidon) című közleményt, amely további információkat tartalmaz ezek visszavonásával kapcsolatban.
Features
A WorkManager az egyszerűbb és konzisztens API biztosítása mellett számos más kulcsfontosságú előnnyel is rendelkezik, többek között:
Work Constraints
Declarative define the optimal conditions for your work to run using WorkConstraints.(Például csak akkor fusson, ha az eszköz Wi-Fi, ha az eszköz üresjáratban van, vagy ha elegendő tárhellyel rendelkezik stb.)
Biztos ütemezés
A WorkManager lehetővé teszi a munka egyszeri vagy ismétlődő futtatásának ütemezését rugalmas ütemezési ablakok segítségével. A munkákat címkézni és megnevezni is lehet, lehetővé téve az egyedi, helyettesíthető munkák ütemezését, valamint a munkacsoportok együttes felügyeletét vagy törlését. Az ütemezett munka egy belsőleg kezelt SQLite adatbázisban tárolódik, és a WorkManager gondoskodik arról, hogy ez a munka megmaradjon, és az eszköz újraindításakor is újra legyen ütemezve. Emellett a WorkManager betartja az energiatakarékos funkciókat és a legjobb gyakorlatokat, például a Doze módot, így nem kell aggódnia emiatt.
Flexible Retry Policy
A munka néha meghiúsul. A WorkManager rugalmas újrapróbálási szabályzatot kínál, beleértve a konfigurálható exponenciális visszalépési szabályzatot is.
Munkaláncolás
Összetett, összefüggő munkák esetén az egyes munkafeladatokat egy folyékony, természetes felület segítségével láncolhatja össze, amely lehetővé teszi annak szabályozását, hogy mely részek fussanak egymás után, és melyek párhuzamosan.
Kotlin
WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()
Java
WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();
Minden munkafeladathoz meghatározhatja az adott munka bemeneti és kimeneti adatait. A munkák összekapcsolásakor a WorkManager automatikusan átadja a kimeneti adatokat az egyik munkafeladatról a következőre.
Beépített szálak közötti átjárhatóság
A WorkManager zökkenőmentesen integrálódik azRxJava és aCoroutines programokkal, és rugalmasságot biztosít a saját aszinkron API-k csatlakoztatásához.
A WorkManager használata halasztható és megbízható munkákhoz
A WorkManager olyan munkákhoz készült, amelyek halaszthatóak – azaz nem szükséges azonnal lefutniuk – és amelyeknek megbízhatóan kell futniuk akkor is, ha az alkalmazás kilép vagy a készülék újraindul. Például:
- Naplók vagy elemzések küldése háttértárszolgáltatásokba
- Az alkalmazás adatainak rendszeres szinkronizálása egy kiszolgálóval
A WorkManager nem a folyamaton belüli háttérmunkára szolgál, amely biztonságosan leállítható, ha az alkalmazás folyamata megszűnik, vagy olyan munkára, amely azonnali végrehajtást igényel. Kérjük, olvassa el a háttérfeldolgozási útmutatót, hogy megnézze, melyik megoldás felel meg az Ön igényeinek.
Kezdés
Nézze meg a Getting startedguide-ot, hogy elkezdhesse használni aWorkManager-t az alkalmazásában.