Articles

Schemalägga uppgifter med WorkManager En del av Android Jetpack.

WorkManager är ett API som gör det enkelt att schemalägga asynkrona uppgifter som kan skjutas upp och som förväntas starta även om appen avslutas eller enheten startas om. API:et WorkManager är en lämplig och rekommenderad ersättare för alla tidigare bakgrundsplanerings-API:er för Android, inklusive FirebaseJobDispatcher, GcmNetworkManager och Job Scheduler. WorkManager innehåller funktionerna från sina föregångare i ett modernt, enhetligt API som arbetar tillbaka till API-nivå 14 samtidigt som det tar hänsyn till batteritiden.

Under huven använder WorkManager en underliggande tjänst för jobbfördelning baserad på följande kriterier:

If the device is running on API Level 23 or higher, JobScheduler is used. OnAPI Levels 14-22, GcmNetworkManager is chosen if it's available, otherwise, acustom AlarmManager and BroadcastReciever implementation is used as afallback.

Notera: Om din app är inriktad på Android 10 (API-nivå 29) eller senare kommer dina API-anrop för FirebaseJobDispatcher och GcmNetworkManager inte längre att fungera på enheter som kör Android Marshmallow (6.0) eller senare. Följ migreringsguiderna för FirebaseJobDispatcher och GcmNetworkManager för vägledning om migrering. Se även tillkännagivandet Unifying Background Task Scheduling onAndroid för mer information om deras avveckling.

Funktioner

Inom att tillhandahålla ett enklare och enhetligt API har WorkManager ett antal andra viktiga fördelar, bland annat:

Work Constraints

Deklarera de optimala förutsättningarna för att ditt arbete ska kunna köras genom att använda WorkConstraints.(Till exempel, kör endast när enheten har Wi-Fi, när enheten är inaktiv eller när den har tillräckligt med lagringsutrymme osv.)

Robust schemaläggning

WorkManager gör det möjligt att schemalägga arbete som ska köras en gång eller upprepade gånger med hjälp av flexibla schemaläggningsfönster. Arbete kan också märkas och namnges, så att du kan schemalägga unikt, utbytbart arbete och övervaka eller avbryta grupper av arbete tillsammans. Schemalagt arbete lagras i en internt hanterad SQLite-databas och WorkManager ser till att detta arbete finns kvar och att det schemaläggs på nytt vid omstarter av enheten. Dessutom följer WorkManager energisparfunktioner och bästa praxis som Doze-läge, så att du inte behöver oroa dig för det.

Flexibel policy för omprövning

Ibland misslyckas arbetet. WorkManager erbjuder flexibla omprövningsprinciper, inklusive en konfigurerbar exponentiell backoffpolicy.

Work Chaining

För komplexa relaterade arbeten kan du kedja ihop enskilda arbetsuppgifter med hjälp av ett naturligt, naturligt gränssnitt som gör det möjligt för dig att styra vilka delar som körs sekventiellt och vilka som körs parallellt.

Kotlin

WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()

Java

WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();

För varje arbetsuppgift kan du definiera input- och outputdata för det arbetet. När du kedjar ihop arbete skickar WorkManager automatiskt utdata från en arbetsuppgift till nästa.

Inbyggd trådinteroperabilitet

WorkManager integreras sömlöst med RxJava och Coroutines och ger dig flexibiliteten att koppla in dina egna asynkrona API:er.

Använd WorkManager för uppskjutbart och tillförlitligt arbete

WorkManager är avsett för arbete som kan skjutas upp – det vill säga som inte behöver köras omedelbart – och som måste köras på ett tillförlitligt sätt även om appen avslutas eller om enheten startas om. Till exempel:

  • Sända loggar eller analyser till backend-tjänster
  • Periodiskt synkronisera programdata med en server

WorkManager är inte avsedd för bakgrundsarbete i en process som säkert kan avslutas om app-processen avslutas eller för arbete som kräver omedelbar utförande. Läs igenom guiden för bakgrundsbehandling för att se vilken lösning som passar dina behov.

Kom igång

Kontrollera guiden Kom igång för att börja användaWorkManager i din app.