Planowanie zadań za pomocą WorkManagera Zawiera Android Jetpack.
Zalecane rozwiązanie do trwałej pracy to WorkManager. Praca to jest trwała, gdy jest zaplanowana przez ponowne uruchamianie aplikacji i ponowne uruchamianie systemu. Przetwarzanie w tle wymaga zwykle wytrwałej pracy, WorkManager to główny zalecany interfejs API do przetwarzania w tle.
Rodzaje pracy długotrwałej
WorkManager obsługuje 3 typy trwałych zadań:
- Natychmiastowe: zadania, które muszą się rozpocząć od razu i wkrótce zostać wykonane. Może być przyspieszonych.
- Długotrwałe: zadania, które mogą działać dłużej, czyli nawet dłużej niż 10. min.
- Z możliwością odroczenia: zaplanowane zadania, które zaczynają się w późniejszym czasie i mogą być uruchamiane. okresowo.
Rysunek 1 pokazuje, w jaki sposób różne rodzaje trwałej pracy są związane z 1 innego użytkownika.
Poniżej znajdziesz tabelę z różnymi typami pracy.
Typ | Okresowość | Jak uzyskać dostęp |
---|---|---|
Natychmiast | jednorazowy | OneTimeWorkRequest i Worker .
Jeśli chcesz przyspieszyć pracę, zadzwoń pod numer |
Długotrwałe | jednorazowy lub okresowy. | Dowolne WorkRequest lub Worker . Wywołaj setForeground() w instancji roboczej, aby obsłużyć powiadomienie.
|
Możliwość odroczenia | Jednorazowo lub okresowo | PeriodicWorkRequest i Worker .
|
Więcej informacji o konfigurowaniu usługi WorkManager znajdziesz w sekcji Definiowanie Przewodnik po WorkRequests.
Funkcje
Poza prostszym i bardziej spójnym interfejsem API WorkManager ma też wiele innych ważnych korzyści:
Ograniczenia pracy
Deklaratywnie zdefiniuj optymalne warunki pracy przy użyciu funkcji praca Na przykład: uruchamiaj tylko wtedy, gdy urządzenie jest w sieci bez pomiaru sieci, gdy urządzenie jest nieaktywne lub gdy bateria jest wystarczająco naładowana.
Zaawansowane planowanie
WorkManager umożliwia planowanie pracy jednorazowo lub wielokrotnie w ramach elastycznych okresów planowania. Praca można oznaczać tagami i nadawać im nazwy Pozwala też zaplanować unikalne, zastępcze prace i monitorować lub anulować w różne grupy.
Zaplanowane zadania są przechowywane w zarządzanej wewnętrznie bazie danych SQLite, WorkManager dba o to, aby ta praca była kontynuowana i została przełożona. po ponownym uruchomieniu urządzenia.
Dodatkowo WorkManager działa zgodnie ze sprawdzonymi metodami i funkcjami oszczędzania energii. np. tryb uśpienia, więc nie musisz się tym przejmować.
Praca przyspieszona
Za pomocą WorkManager możesz zaplanować natychmiastowe wykonanie w tle. W przypadku zadań, które są ważne dla użytkownika, należy użyć opcji Przyspieszona praca użytkownika, które zakończą się w ciągu kilku minut.
Elastyczna zasada ponownych prób
Czasami nie wszystko działa. WorkManager oferuje elastyczne zasady ponawiania prób, w tym konfigurowalną zasadę ponowienia wykładniczego.
Łańcuch pracy
W przypadku złożonych powiązanych zadań możesz łatwo łączyć poszczególne zadania za pomocą intuicyjnego interfejsu, który pozwala kontrolować, które elementy mają być wykonywane sekwencyjnie, a które równolegle.
Kotlin
val continuation = WorkManager.getInstance(context) .beginUniqueWork( Constants.IMAGE_MANIPULATION_WORK_NAME, ExistingWorkPolicy.REPLACE, OneTimeWorkRequest.from(CleanupWorker::class.java) ).then(OneTimeWorkRequest.from(WaterColorFilterWorker::class.java)) .then(OneTimeWorkRequest.from(GrayScaleFilterWorker::class.java)) .then(OneTimeWorkRequest.from(BlurEffectFilterWorker::class.java)) .then( if (save) { workRequest<SaveImageToGalleryWorker>(tag = Constants.TAG_OUTPUT) } else /* upload */ { workRequest<UploadWorker>(tag = Constants.TAG_OUTPUT) } )
Java
WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();
Możesz zdefiniować dane wejściowe i wyjściowe dotyczące każdego zadania roboczego. Gdy łączysz ze sobą zadania, WorkManager automatycznie przekazuje dane wyjściowe z jednego zadania do następnego.
Wbudowana interoperacyjność wątków
WorkManager płynnie integruje się z narzędziami Coroutines i RxJava i zapewnia elastyczność, dzięki której możesz podłączyć własne asynchroniczne interfejsy API.
Niezawodna praca dzięki usłudze WorkManager
WorkManager jest przeznaczony do pracy, która wymaga bezpiecznego działania nawet wtedy, gdy użytkownik opuszcza ekran, zamyka aplikację lub urządzenie jest ponownie uruchamiane. Dla: przykład:
- Wysyłanie logów lub statystyk do usług backendu.
- Okresowe synchronizowanie danych aplikacji z serwerem.
Aplikacja WorkManager nie jest przeznaczona do pracy w tle, którą można bezpiecznie zostanie zakończone, jeśli proces aplikacji przestanie działać. Nie jest to również ogólne rozwiązanie dotyczące wszystkich zadań, które wymagają natychmiastowego wykonania. Zapoznaj się z informacjami przewodniku po przetwarzaniu danych, aby sprawdzić, które rozwiązanie spełnia Twoje potrzeby.
Relacja z innymi interfejsami API
W niektórych przypadkach zalecamy stosowanie współrzędnych nie używają ich do długotrwałej pracy. Warto zauważyć, że współrzędne są platformy równoczesności, a WorkManager to biblioteka do pracy trwałej. Podobnie jak w przypadku AlarmManagera, należy używać go tylko w przypadku zegarów i kalendarzy.
Interfejs API | Zalecane dla: | Relacja z WorkManagerem |
---|---|---|
Korutyny | Wszystkie operacje asynchroniczne, które nie muszą być trwałe. | Korutyny to standardowy sposób opuszczenia głównego wątku w usłudze Kotlin. Po zamknięciu aplikacji pozostawiają one jednak wspomnienie. W przypadku pracy długotrwałej użyj WorkManagera. |
AlarmManager | tylko alarmy. | W przeciwieństwie do WorkManagera AlarmManager wybudza urządzenie z trybu uśpienia. Nie jest więc wydajny pod względem zarządzania energią i zasobami. Używaj go tylko do precyzyjnych alarmów lub powiadomień, takich jak wydarzenia w kalendarzu, a nie do pracy w tle. |
Zastępowanie wycofanych interfejsów API
Interfejs WorkManager API to zalecany zamiennik Androida interfejsów API do planowania w tle, w tym FirebaseJobDispatcher, GcmNetworkManager i Job Scheduler.
Pierwsze kroki
Zapoznaj się z przewodnikiem dla początkujących, aby zacząć korzystać z WorkManagera w .
Dodatkowe materiały
Więcej informacji o usłudze WorkManager
znajdziesz tutaj
i zasobami Google Cloud.
Próbki
Filmy
- Workmanager – MAD Skills, seria filmów
- Temat Working with WorkManager z Android Dev Summit 2018
- WorkManager: Beyond the basics (WorkManager: więcej niż podstawy), wystąpienie z Android Developer Summit 2019
Blogi
Polecane dla Ciebie
- Uwaga: tekst linku wyświetla się, gdy JavaScript jest wyłączony
- Uruchamianie aplikacji