Articles

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:

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.

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.