Schedule tasks with WorkManager Część Android Jetpack.
WorkManager jest API, które ułatwia planowanie odraczalnych, asynchronicznych zadań, które są oczekiwane nawet po wyjściu z aplikacji lub ponownym uruchomieniu urządzenia. WorkManager API jest odpowiednim i zalecanym zamiennikiem dla wszystkich poprzednich API harmonogramowania tła Androida, włączając w to FirebaseJobDispatcher, GcmNetworkManager i Job Scheduler. WorkManager łączy w sobie cechy swoich poprzedników w nowoczesnym, spójnym API, które działa na poziomie API 14, dbając jednocześnie o żywotność baterii.
Pod maską WorkManager używa bazowej usługi wysyłania zadań opartej na następujących kryteriach:
Uwaga: Jeśli twoja aplikacja jest przeznaczona na system Android 10 (poziom API 29) lub wyższy, wywołania API FirebaseJobDispatcher i GcmNetworkManager nie będą już działać na urządzeniach z systemem Android Marshmallow (6.0) i wyższym. Postępuj zgodnie z przewodnikami migracji dlaFirebaseJobDispatcher i GcmNetworkManager, aby uzyskać wskazówki dotyczące migracji. Zobacz również ogłoszenie Unifying Background Task Scheduling onAndroid, aby uzyskać więcej informacji na temat ich deprecjacji.
Features
Oprócz prostszego i spójnego API, WorkManager posiada szereg innych kluczowych korzyści, w tym:
Work Constraints
Deklaratywnie zdefiniuj optymalne warunki, w jakich twoja praca ma być wykonywana za pomocą WorkConstraints.(Na przykład, uruchom tylko gdy urządzenie jest Wi-Fi, gdy urządzenie jest bezczynne, lub gdy ma wystarczającą przestrzeń dyskową, itp.)
Robust Scheduling
WorkManager pozwala na zaplanowanie pracy do jednorazowego lub wielokrotnego uruchomienia przy użyciu elastycznych okien harmonogramu. Praca może być oznaczona i nazwana, co pozwala na zaplanowanie unikalnej, wymiennej pracy i monitorowanie lub anulowanie grup pracy razem. Zaplanowane prace są przechowywane w wewnętrznie zarządzanej bazie danych SQLite, a WorkManager dba o to, by były one trwałe i mogły być ponownie zaplanowane po ponownym uruchomieniu urządzenia. Dodatkowo, WorkManager stosuje się do zasad oszczędzania energii i najlepszych praktyk, takich jak tryb Doze, więc nie musisz się o to martwić.
Flexible Retry Policy
Czasami praca kończy się niepowodzeniem. WorkManager oferuje elastyczną politykę retryfikacji, w tym konfigurowalną wykładniczą politykę backoff Policy.
Work Chaining
Dla złożonych, powiązanych ze sobą prac, połącz poszczególne zadania razem, używając płynnego, naturalnego interfejsu, który pozwala kontrolować, które elementy są uruchamiane kolejno, a które równolegle.
Kotlin
WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()
Java
WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();
Dla każdego zadania można zdefiniować dane wejściowe i wyjściowe dla tego zadania. Podczas łączenia zadań WorkManager automatycznie przekazuje dane wyjściowe z jednego zadania do następnego.
Wbudowana współpraca z wątkami
WorkManager bezproblemowo integruje się zRxJava i Coroutines i zapewnia elastyczność w podłączaniu własnych asynchronicznychAPI.
Używaj WorkManagera do odroczonej i niezawodnej pracy
WorkManager jest przeznaczony do pracy, która jest odroczona, to znaczy nie jest wymagana do natychmiastowego uruchomienia i jest wymagana do niezawodnego działania, nawet jeśli aplikacja wyjdzie z użycia lub urządzenie uruchomi się ponownie. Na przykład:
- Wysyłanie logów lub analiz do usług backendowych
- Okresowa synchronizacja danych aplikacji z serwerem
WorkManager nie jest przeznaczony do pracy w tle, która może być bezpiecznie zakończona, jeśli proces aplikacji odejdzie lub do pracy, która wymaga natychmiastowego wykonania. Proszę przejrzeć przewodnik przetwarzania w tle, aby sprawdzić, które rozwiązanie spełnia twoje potrzeby.
Rozpoczynanie
Zapoznaj się z przewodnikiem rozpoczynania pracy, aby zacząć używaćWorkManagera w swojej aplikacji.