Articles

Plánování úloh pomocí WorkManageru Součást Android Jetpack.

WorkManager je rozhraní API, které usnadňuje plánování asynchronních úloh s možností odkladu, které se mají spustit i po ukončení aplikace nebo restartu zařízení. API WorkManager jevhodnou a doporučenou náhradou všech předchozích API pro plánování úloh na pozadí systému Android, včetněFirebaseJobDispatcher,GcmNetworkManager a Job Scheduler. WorkManagerzahrnuje funkce svých předchůdců do moderního, konzistentního API, které pracuje zpětně na úrovni API 14 a zároveň bere ohled na životnost baterie.

Pod kapotou WorkManager používá základní službu pro dispečink úloh založenou na následujících kritériích:

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.

Poznámka: Pokud je vaše aplikace zaměřena na systém Android 10 (úroveň API 29) nebo vyšší, volání rozhraní API FirebaseJobDispatcher a GcmNetworkManager již nebudou fungovat na zařízeních se systémem Android Marshmallow (6.0) a vyšším. Postupujte podle migračních příruček proFirebaseJobDispatcher a GcmNetworkManager, kde naleznete pokyny pro migraci. Další informace o jejich zastarání naleznete také v oznámení Unifying Background Task Scheduling onAndroid.

Features

Kromě toho, že WorkManager poskytuje jednodušší a konzistentní API, má řadu dalších klíčových výhod, včetně:

Work Constraints

Deklarativně definujte optimální podmínky pro běh vaší práce pomocí WorkConstraints.(Například spustit pouze tehdy, když je zařízení Wi-Fi, když je zařízení v nečinnosti nebo když má dostatek úložného prostoru atd.)

Robustní plánování

WorkManager umožňuje naplánovat práci k jednorázovému nebo opakovanému spuštění pomocí flexibilních plánovacích oken. Práce lze také označovat a pojmenovávat, což umožňuje plánovat jedinečné, nahraditelné práce a sledovat nebo rušit skupiny prací společně. Naplánovaná práce je uložena v interně spravované databázi SQLite aWorkManager se stará o to, aby tato práce přetrvávala a byla přeplánována i po restartu zařízení. WorkManager navíc dodržuje funkce pro úsporu energie a osvědčené postupy, jako je režim Doze,takže se o něj nemusíte starat.

Pružná politika opakování

Někdy se práce nezdaří. WorkManager nabízí flexibilní politiku opakování, včetně konfigurovatelné exponenciální politiky zpětného zpoždění.

Řetězení prací

Pro komplexní související práci můžete jednotlivé pracovní úlohy řetězit dohromady pomocí plynulého, přirozeného rozhraní, které vám umožní řídit, které části běží postupně a které paralelně.

Kotlin

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

Java

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

Pro každou pracovní úlohu můžete definovat vstupní a výstupnídata pro tuto práci. Při řetězení prací WorkManager automaticky předávávýstupní data z jedné pracovní úlohy do další.

Vestavěná interoperabilita s vlákny

WorkManager se bezproblémově integruje sRxJava aCoroutines a poskytuje flexibilitu pro připojení vlastních asynchronníchAPI.

Používejte WorkManager pro odkladnou a spolehlivou práci

WorkManager je určen pro práci, která je odkladná – to znamená, že se nevyžaduje její okamžité spuštění – a vyžaduje se její spolehlivé spuštění i v případě ukončení aplikace nebo restartu zařízení. Například:

  • Odesílání protokolů nebo analýz do backendových služeb
  • Periodická synchronizace dat aplikace se serverem

WorkManager není určen pro práci na pozadí v procesu, která může být bezpečně ukončena, pokud proces aplikace odejde, nebo pro práci, která vyžaduje okamžité provedení. Prostudujte si prosím průvodce zpracováním na pozadí, abyste zjistili, které řešení vyhovuje vašim potřebám.

Začínáme

Podívejte se na průvodce Začínáme, abyste mohli začít používatWorkManager ve své aplikaci.