Trwała praca Zawiera Android Jetpack.

Praca jest trwała, gdy zostaje zaplanowana przez ponowne uruchamianie aplikacji i system restartów. Zalecane rozwiązanie do trwałej pracy to WorkManager. Przetwarzanie w tle wymaga zwykle wytrwałej pracy, WorkManager jest więc również głównym zalecanym interfejsem API do obsługi tła o przetwarzaniu danych.

Rodzaje pracy długotrwałej

WorkManager obsługuje 3 typy trwałej pracy:

  • 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ą trwać dłużej, niż 10 minut.
  • 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.

Trwała praca może być natychmiastowa, długotrwała lub z możliwością odroczenia.
Rysunek 1. Rodzaje ciężkiej pracy.

Analogicznie w poniższej tabeli przedstawiamy różne rodzaje zadań.

Typ Okresowość Sposób uzyskiwania dostępu
Natychmiast jednorazowy OneTimeWorkRequestWorker. Jeśli chcesz przyspieszyć pracę, zadzwoń pod numer setExpedited() w swoim żądaniu OneTimeWorkRequest.
Długotrwałe Jednorazowo lub okresowo Dowolne WorkRequest lub Worker. Wywołaj setForeground() w instancji roboczej, aby obsłużyć powiadomienie.
Z opóźnieniem Jednorazowo lub okresowo PeriodicWorkRequestWorker.

Więcej informacji o konfigurowaniu usługi WorkManager znajdziesz w sekcji Definiowanie Przewodnik po WorkRequests.

Funkcje WorkManagera

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.

Elastyczne zasady ponawiania

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 zadań połącz poszczególne zadania razem za pomocą funkcji intuicyjny interfejs pozwalający kontrolować, które elementy działają sekwencyjnie i które działają 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. Podczas tworzenia łańcuchów współpracy WorkManager automatycznie przekazuje dane wyjściowe z od 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 niezawodnego działania, nawet jeśli użytkownik opuści ekran, aplikacja wyjdzie z aplikacji lub urządzenie uruchomi się ponownie. 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

Regiony są zalecanym rozwiązaniem w niektórych przypadkach, ale nie należy ich używać do trwałej pracy, Warto zauważyć, że współrzędne to platforma równoczesności, a WorkManager to biblioteka w naszej pracy. Analogicznie programu AlarmManager należy używać tylko do zegarków lub 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. Do długotrwałej pracy używaj narzędzia WorkManager.
AlarmManager Tylko alarmy. W przeciwieństwie do WorkManagera AlarmManager wybudza urządzenie z trybu uśpienia. Jest to więc mało wydajne pod względem zarządzania energią i zasobami. Używaj jej tylko do alarmów precyzyjnych i powiadomień (np. o wydarzeniach w kalendarzu), a nie do działania w tle.

Zastąp wycofane interfejsy API

Interfejs WorkManager API to zalecany zamiennik Androida interfejsów API do planowania w tle, w tym FirebaseJobDispatcher, GcmNetworkManager i JobScheduler.

Rozpocznij

Zapoznaj się z przewodnikiem dla początkujących, aby zacząć korzystać z WorkManagera w .

Dodatkowe materiały

Poniższe sekcje zawierają dodatkowe materiały.

Filmy

Blogi

Próbki