WorkManager

Interfejs WorkManager API ułatwia planowanie opóźnionych, asynchronicznych zadań, które muszą być wykonywane niezawodnie. Te interfejsy API umożliwiają tworzenie zadań i przekazywanie ich do WorkManagera do wykonania po spełnieniu ograniczeń.
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
30 października 2024 r. 2.10.0 - - -

Deklarowanie zależności

Aby dodać zależność od WorkManager, musisz dodać do projektu repozytorium Google Maven:

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Odlotowe

dependencies {
    def work_version = "2.9.1"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Kotlin

dependencies {
    val work_version = "2.9.1"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation("androidx.work:work-multiprocess:$work_version")
}

Informacje o korzystaniu z rozszerzeń Kotlina znajdziesz w dokumentacji ktx.

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Daj nam znać, jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 2.10

Wersja 2.10.0

30 października 2024 r.

androidx.work:work-*:2.10.0 został zwolniony. Wersja 2.10.0 zawiera te komity.

Znaczące zmiany od wersji 2.9.1

  • Dodano tagi śledzenia do zadań z WorkManager, dzięki czemu polecenie „adb shell dumpsys jobscheduler” jest znacznie łatwiejsze do zrozumienia, ponieważ zawiera nazwę wykonywanego zadania. Dodano też sekcje śledzenia wokół kluczowych obszarów WorkManager.
  • Dodano element sterujący Configuration.workerCoroutineContext do kontrolowania modułu rozsyłającego, w którym wykonywane jest działanie CoroutineWorker.
  • Deweloperzy mogą określić NetworkRequest jako ograniczenie dla instancji roboczej za pomocą metody Constraints.setRequiredNetworkRequest. Dzięki temu możesz dokładniej określić, w której sieci ma działać ta instancja robocza.
  • WorkManager Wersja 2.10.0 jest teraz skompilowana z pakietem SDK 35 i zawiera różne zmiany zapewniające zgodność z tym pakietem.

Wersja 2.10.0-rc01

24 października 2024 r.

androidx.work:work-*:2.10.0-rc01 został zwolniony. Wersja 2.10.0-rc01 zawiera te komisy.

Wersja 2.10.0-beta01

2 października 2024 r.

androidx.work:work-*:2.10.0-beta01 został zwolniony. Wersja 2.10.0-beta01 zawiera te komity.

Wersja 2.10.0-alpha04

18 września 2024 r.

androidx.work:work-*:2.10.0-alpha04 został zwolniony. Wersja 2.10.0-alpha04 zawiera te komity.

Zmiany w interfejsie API

  • Dodaj przyczynę zatrzymania STOP_REASON_FOREGROUND_SERVICE_TIMEOUT, gdy instancja robocza na pierwszym planie zostanie zatrzymana z powodu przekroczenia limitu czasu wykonywania na podstawie typu usługi na pierwszym planie. (Ibd0af)

Wersja 2.10.0-alpha03

4 września 2024 r.

androidx.work:work-*:2.10.0-alpha03 został zwolniony. Wersja 2.10.0-alpha03 zawiera te komity.

Nowe funkcje

  • Dodano tagi śledzenia do zadań z WorkManager, dzięki czemu polecenie „adb shell dumpsys jobscheduler” jest znacznie łatwiejsze do zrozumienia, ponieważ zawiera nazwę wykonywanego zadania. Dodano też sekcje śledzenia wokół kluczowych obszarów WorkManager.

Zmiany w interfejsie API

  • WorkManager 2.10.0 jest teraz kompilowany z pakietem SDK 35.
  • Napraw problem z usługami na pierwszym planie typu „short service” i „data sync”, które powodują przekroczenie limitu czasu i wywołują ANR, gdy WorkManager nie wywołuje stopSelf(). Ta poprawka dotyczy tylko urządzeń z interfejsem API 34 i 35, na których wprowadzono typy usług na pierwszym planie. (ca06b2, b/364508145)
  • Nowe interfejsy API WorkerParameters, które umożliwiają przełączanie procesu zdalnego, do którego Worker się łączy podczas korzystania z WorkerFactory. (Ibdc8a, Ie8a90, I7373f)

Poprawki błędów

  • Rozwiązanie problemu awarii spowodowanego przez próbę ponownego uruchomienia przez WorkManager trwającej przez długi czas instancji roboczej (czyli roboczej na pierwszym planie), gdy typ pracy na pierwszym planie miał uprawnienia wymagane przez Androida 14, które zostały cofnięte. (b/333957914)
  • Usunięto ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji przy użyciu AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)

Wersja 2.10.0-alpha02

17 kwietnia 2024 r.

androidx.work:work-*:2.10.0-alpha02 został zwolniony. Wersja 2.10.0-alpha02 zawiera te komity.

Zmiany w interfejsie API

  • Dodaliśmy możliwość emitowania zakresów przechwytywania za pomocą konfigurowalnego elementu @RestrictTo Tracer w elementach WorkManager. (I17d7f, b/260214125)
  • Dodano element sterujący Configuration.workerCoroutineContext do kontrolowania modułu rozsyłającego, w którym wykonywane jest działanie CoroutineWorker. Pomaga to całkowicie uniknąć używania Dispatchers.Default w elementach WorkManager. (Icd1b7)
  • Dodaj niestandardowe moduły obsługi wyjątków dla Workers (Ib1b74, b/261190695)
  • Funkcje OneTimeWorkRequest.BuilderPeriodicWorkRequest.Builder można teraz tworzyć za pomocą KClass zamiast Class: val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • Klasa WorkManager została przeniesiona do Kotlina. Teraz metody zwracające LiveData, ListenableFuture lub Flow podają prawidłowe informacje o możliwości wystąpienia wartości null. Może to wymagać wprowadzenia zmian w kodzie źródłowym klienta, jeśli założenia dotyczące możliwości występowania wartości null w tym kodzie były nieprawidłowe. (If6757)

Wersja 2.10.0-alpha01

24 stycznia 2024 r.

androidx.work:work-*:2.10.0-alpha01 został zwolniony. Wersja 2.10.0-alpha01 zawiera te commity.

Nowe funkcje

  • Deweloperzy mogą określić NetworkRequest jako ograniczenie dla pracownika za pomocą metody Constraints.setRequiredNetworkRequest. Dzięki temu możesz dokładniej określić, w której sieci ma działać ta instancja robocza.

Zmiany w interfejsie API

  • Dodanie możliwości określenia NetworkRequest jako ograniczenia. (Id98a1, b/280634452)

Wersja 2.9

Wersja 2.9.1

7 sierpnia 2024 r.

androidx.work:work-*:2.9.1 został zwolniony. Wersja 2.9.1 zawiera te komity.

Poprawki błędów

  • Rozwiązanie problemu awarii spowodowanego przez próbę ponownego uruchomienia przez WorkManager długo działającego workera (czyli workera na pierwszym planie), gdy typ pracy na pierwszym planie miał cofniętą uprawnienie wymagane w Androidzie 14. (b/333957914)

Wersja 2.9.0

29 listopada 2023 r.

androidx.work:work-*:2.9.0 został zwolniony. Wersja 2.9.0 zawiera te commity.

Ważne zmiany od wersji 2.8.0

  • Dostrzegalność za pomocą Flow. Zamiast LiveData postępy pracownika można teraz obserwować za pomocą metod WorkManager.getWorkInfosFlow i podobnych metod.
  • Teraz WorkManager zawiera wskazówkę, dlaczego instancja robocza została wcześniej zatrzymana. Możesz go użyć, wysyłając zapytanie z poziomu instancji roboczej za pomocą metody getStopReason() lub z poziomu WorkInfo za pomocą metody getStopReason().
  • Dokładne planowanie okresowych pracowników za pomocą setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który może służyć do implementowania zaawansowanych funkcji, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie prób ponownego wykonania czy uruchamianie zadania dotyczącego kanału z wiadomościami przed każdym porannym wstaniem użytkownika bez przesunięcia. Aby uniknąć anulowania obecnie działającego zadania podczas planowania kolejnego, należy używać funkcji ExistingPeriodicWorkPolicy.UPDATE.
  • Testowanie WorkManagera z wykorzystaniem wątków dopasowanych do produkcji. ExecutorsMode.PRESERVE_EXECUTORS można użyć w funkcji initializeTestWorkManager, aby zachować wykonawców ustawionych w funkcji Configuration i użyć rzeczywistego wątku głównego.
  • Interfejsy API dotyczące coroutine, takie jak CoroutineWorker, zostały przeniesione z dodatkowego artefaktu work-runtime-ktx do głównego artefaktu work-runtime. work-runtime-ktx jest teraz pusty.

Zmiany w interfejsie API

  • Do grupy WorkInfo został dodany użytkownik stopReason. Dostęp do zmiennej stopReason jest możliwy po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniu stopReason, ponieważ po zatrzymaniu zadania można bardzo szybko zatrzymać całą aplikację. (I21386)
  • Umożliw ustawienie wartości Clock w konfiguracji i używanie jej do określania kolejności wykonywania testów Worker. (Ic586e)
  • Do metody getStopReason() dodano metodę ListenableWorker, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060)
  • Dodano WorkManagerTestInitHelper#closeWorkDatabase(), aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49)
  • Konstruktor klasy WorkInfo jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335)
  • work-runtime-ktx jest teraz pusty, a CoroutineWorker i inne narzędzia do Kotlina są teraz dostępne w głównym artefakcie środowiska uruchomieniowego. (I71a9a)
  • Dodano metodę setNextScheduleTimeOverride, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da).
  • Dodano getNextScheduleTimeMillis, aby uzyskać informacje o planowanym czasie działania, do WorkInfo. (I797e4)
  • Informacje o początkowym opóźnieniu i częstotliwości są dodawane do WorkInfo. (I52f2f)
  • Dodano metodę observe workers via Flows za pomocą metod getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a).
  • Do konstruktorów i właściwości Constraints dodano brakujące adnotacje @RequiresApi(...). Zostały one dopasowane do odpowiednich adnotacji w metodach settera w bibliotece Constraints.Builder, które istniały już w pierwszych wersjach biblioteki WorkManager. (I6d7d2)
  • WorkManager ma teraz osobny limit dla pracowników odpowiedzialnych za URI treści, aby zapewnić im gwarantowane sloty w JobScheduler i zapobiec braku aktualizacji treści w przypadku dużego obciążenia. Limit można skonfigurować za pomocą Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
  • Do WorkInfo dodano ograniczenia. (I162c0)

Wersja 2.9.0-rc01

18 października 2023 r.

androidx.work:work-*:2.9.0-rc01 został zwolniony. Wersja 2.9.0-rc01 zawiera te zatwierdzenia.

  • Brak zmian od ostatniej wersji beta

Wersja 2.9.0-beta01

6 września 2023 r.

androidx.work:work-*:2.9.0-beta01 został zwolniony. Wersja 2.9.0-beta01 zawiera te commity.

Zmiany w interfejsie API

Wersja 2.9.0-alpha02

26 lipca 2023 r.

androidx.work:work-*:2.9.0-alpha02 został zwolniony. Wersja 2.9.0-alpha02 zawiera te commity.

Nowe funkcje

  • Teraz WorkManager zawiera wskazówkę, dlaczego usługa została wcześniej zatrzymana. Możesz go użyć, aby zapytać o dane dotyczące pracownika za pomocą metody getStopReason() lub WorkInfo za pomocą metody getStopReason().

Zmiany w interfejsie API

  • Do grupy WorkInfo został dodany użytkownik stopReason. Udostępnia ona stopReason po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniu stopReason, ponieważ po zatrzymaniu zadania można bardzo szybko zatrzymać całą aplikację. (I21386)
  • Zezwalanie na ustawianie zegara za pomocą konfiguracji i używanie go do określania kolejności wykonywania testów Worker. (Ic586e)
  • Do metody getStopReason() dodano metodę ListenableWorker, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060)
  • Dodano WorkManagerTestInitHelper#closeWorkDatabase(), aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49)

Poprawki błędów

  • Dodano możliwość pominięcia overrideNextScheduleTime za pomocą TestDriver oraz rozwiązano problemy z testowalnością. (Ic2905)

Wersja 2.9.0-alpha01

7 czerwca 2023 r.

androidx.work:work-*:2.9.0-alpha01 został zwolniony. Wersja 2.9.0-alpha01 zawiera te commity.

Nowe funkcje

  • Dostrzegalność za pomocą Flow-s. Zamiast LiveData postępy pracownika można teraz obserwować za pomocą metod WorkManager.getWorkInfosFlow i podobnych metod.
  • Dokładne planowanie okresowych pracowników za pomocą setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który może służyć do implementowania zaawansowanych funkcji, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie prób ponownego wykonania czy uruchamianie zadania dotyczącego kanału z wiadomościami przed każdym porannym wstaniem użytkownika bez przesunięcia. Aby uniknąć anulowania obecnie działającego zadania podczas planowania następnego, należy używać funkcji ExistingPeriodicWorkPolicy.UPDATE.
  • WorkManager testuje wątki dopasowane do produkcji. ExecutorsMode.PRESERVE_EXECUTORS można użyć, aby zachować wykonawców ustawionych w Configuration i używać rzeczywistego wątku głównego.
  • Interfejsy API dotyczące coroutines, takie jak CoroutineWorker, zostały przeniesione z dodatkowego artefaktu work-runtime-ktx do głównego artefaktu work-runtime. Pole work-runtime-ktx jest teraz puste.

Zmiany w interfejsie API

  • Konstruktor WorkInfo jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335)
  • work-runtime-ktx jest teraz pusty, a CoroutineWorker i inne narzędzia do obsługi Kotlina są teraz dostępne w głównym artefakcie work-runtime. (I71a9a)
  • Dodano metodę setNextScheduleTimeOverride, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da).
  • Nazwa getEarliestRunTimeMillis została zmieniona na getNextScheduleTimeMillis. (I2bd7a)
  • Informacje o czasie następnego zaplanowanego uruchomienia są dodawane do WorkInfo. (I797e4)
  • Informacje o początkowym opóźnieniu i częstotliwości są dodawane do WorkInfo. (I52f2f)
  • Dodano metodę observe workers via Flows za pomocą metod getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a).
  • Do konstruktorów i właściwości ograniczeń dodano brakujące adnotacje @RequiresApi(...). Zostały one dopasowane do odpowiednich adnotacji w metodach settera w bibliotece Constraints.Builder, które istniały już w pierwszych wersjach biblioteki WorkManager. (I6d7d2)
  • WorkManager ma teraz osobny limit dla pracowników zajmujących się URI treści, aby zapewnić im gwarantowane miejsca w JobScheduler i zapobiec braku aktualizacji treści w przypadku dużego obciążenia. Limit można skonfigurować za pomocą Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
  • Do WorkInfo dodano ograniczenia. (I162c0)

Wersja 2.8

Wersja 2.8.1

22 marca 2023 r.

androidx.work:work-*:2.8.1 został zwolniony. Wersja 2.8.1 zawiera te commity.

Poprawki błędów

  • Naprawiono błąd w RescheduleReceiver, który powodował, że ANR nie obsługiwał prawidłowo 2 jednoczesnych transmisji. (b/236906724)

Wersja 2.8.0

8 lutego 2023 r.

androidx.work:work-*:2.8.0 został zwolniony. Wersja 2.8.0 zawiera te commity.

Ważne zmiany od wersji 2.7.0

Nowe funkcje

Zmiany w interfejsie API

  • Dodano WorkManager.updateWork, aby zaktualizować pracę, zachowując jej pierwotny czas kolejkowania i łańcuchowanie.(I9a248, b/219446409)
  • Dodano użytkownika ExistingPeriodicWorkPolicy.UPDATE Te zasady umożliwiają aktualizację okresowego dzieła pod kątem nazwy. Jest ona podobna do obecnej funkcji REPLACE, ale mniej inwazyjna: nie anuluje zadania, jeśli jest ono obecnie wykonywane, i zachowuje czas kolejkowania – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu kolejkowania, a nie czasu aktualizacji. REPLACE zostało wycofane, aby zmniejszyć ryzyko pomylenia funkcji o bardzo podobnych nazwach REPLACE i UPDATE. Jeśli nadal chcesz zachować poprzednią semantykę REPLACE, możesz użyć nowo dodanego elementu CANCEL_AND_REENQUEUE, który jest identyczny z elementem REPLACE. (I985ed, b/219446409)
  • Dodano możliwość przechwytywania wyjątków harmonogramu, podając Consumer<Throwable> za pomocą funkcji setSchedulingExceptionHandler.
  • Dodano możliwość przekazania wartości Consumer<Throwable> za pomocą metody setInitializationExceptionHandler, aby określić, czy podczas inicjowania WorkManagera wystąpiły problemy.
  • Pomoce w wersji inline dla funkcji OneTimeWorkRequestPeriodicWorkRequest zostały przeniesione z funkcji androidx.work:work-runtime-ktx do funkcji androidx.work:work-runtime (I0010f, b/209145335).
  • Dodano pomocnicze metody WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNamesWorkQuery.fromTags, aby umożliwić bezpośrednie tworzenie obiektów WorkQuery. (b/199919736) (If48f2, b/199919736)
  • Dodano getForegroundInfo do Worker. (Ic1ead)
  • RxWorker zarówno w przypadku RxJava 2, jak i RxJava 3 ma teraz metodę setForeground zwracającą Completable, którą można użyć zamiast metody setForegroundInfoAsync zwracającej ListenableFuture.
  • RxWorker zarówno w przypadku RxJava 2, jak i RxJava 3 ma metodę getForegroundInfo zwracającą Single, którą można użyć zamiast metody getForegroundInfoAsync zwracającej ListenableFuture. (b/203851459)
  • Ograniczenia można teraz tworzyć bezpośrednio zamiast używać funkcji Constraints.Builder, co jest wygodne dla użytkowników Kotlina. (Idc390, b/137568653)
  • Dodano możliwość sprawdzenia, czy WorkManager została zainicjalizowana. Dodaliśmy też nowy interfejs API getConfiguration() dla programistów bibliotek, który umożliwia uzyskanie konfiguracji, z którą została zainicjowana biblioteka WorkManager. (I6eff3, b/212300336)

Poprawki błędów

  • Rozwiązaliśmy problem z łatwym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie podprocesów podczas obciążenia. (I9686b, b/248111307)
  • Dodaliśmy uprawnienie @RequiresPermission do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w pakiecie SDK 33 lub nowszym. (Ie542e, b/238790278)
  • Rozpowszechnianie anulowań w CoroutineScopeListenableFuture przy użyciu suspendCancellableCoroutine.

Wersja 2.8.0-rc01

7 grudnia 2022 r.

androidx.work:work-*:2.8.0-rc01 został zwolniony. Wersja 2.8.0-rc01 zawiera te commity.

Nowe funkcje

  • Brak nowych funkcji w tej wersji. Jest to głównie aktualizacja wersji

Wersja 2.8.0-beta02

9 listopada 2022 r.

androidx.work:work-*:2.8.0-beta02 został zwolniony. Wersja 2.8.0-beta02 zawiera te commity.

Poprawki błędów

  • Naprawiono metodę equals w funkcji WorkInfo, która wcześniej nie uwzględniała informacji o nowej generacji. (4977 cm³)

Wersja 2.8.0-beta01

5 października 2022 r.

androidx.work:work-*:2.8.0-beta01 został zwolniony. Wersja 2.8.0-beta01 zawiera te commity.

Poprawki błędów

  • Rozwiązaliśmy problem z łatwym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie podprocesów podczas obciążenia. (I9686b, b/248111307)

Wersja 2.8.0-alpha04

7 września 2022 roku

androidx.work:work-*:2.8.0-alpha04 został zwolniony. Wersja 2.8.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodano właściwości WorkerInfo.getGeneration()WorkerParameters.getGeneration(), które zwracają generację instancji roboczej. Pracownik ma wiele generacji, jeśli został zaktualizowany za pomocą funkcji WorkManager.updateWork lub WorkManager.enqueueUniquePeriodicWork za pomocą funkcji ExistingPeriodicWorkPolicy.UPDATE. Pamiętaj, że jeśli instancja robocza jest obecnie uruchomiona, ta metoda może zwrócić nowszą generację niż ta, która jest obecnie uruchomiona, jeśli podczas wykonywania instancji roboczej nastąpiła aktualizacja. (I665c5, b/219446409) (I128a9, b/219446409)
  • Dodaliśmy InitializationExceptionHandler, czyli sterownik wyjątków, który pozwala określić, czy podczas inicjowania WorkManager wystąpiły problemy. (I061de)

Wersja 2.8.0-alpha03

10 sierpnia 2022 r.

androidx.work:work-*:2.8.0-alpha03 został zwolniony. Wersja 2.8.0-alpha03 zawiera te commity.

Nowe funkcje

  • Dodano możliwość aktualizowania WorkRequests w nieinwazyjny sposób, zachowując oryginalny czas kolejkowania, łańcuchowanie itp. Więcej informacji znajdziesz w artykułach WorkManager.updateWorkExistingPeriodicWorkPolicy.UPDATE.

Zmiany w interfejsie API

  • Dodano WorkManager.updateWork, aby zaktualizować pracę, zachowując jej pierwotny czas kolejkowania i łańcuchowanie.(I9a248, b/219446409)
  • Dodano użytkownika ExistingPeriodicWorkPolicy.UPDATE Te zasady umożliwiają aktualizację okresowej pracy na podstawie nazwy. Jest ona podobna do obecnej funkcji REPLACE, ale mniej inwazyjna: nie anuluje zadania, jeśli jest ono obecnie wykonywane, i zachowuje czas kolejkowania – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu kolejkowania, a nie czasu aktualizacji. REPLACE zostało wycofane, aby zmniejszyć zamieszanie między bardzo podobnymi nazwami REPLACE i UPDATE. Jeśli nadal chcesz zachować poprzednią semantykę REPLACE, możesz użyć nowo dodanego elementu CANCEL_AND_REENQUEUE, który jest identyczny z elementem REPLACE. (I985ed, b/219446409)
  • Dodaj możliwość przechwytywania wyjątków harmonogramu przez zdefiniowanie SchedulingExceptionHandler. (I033eb)
  • Pomoce w wersji inline dla funkcji OneTimeWorkRequestPeriodicWorkRequest zostały przeniesione z funkcji androidx.work:work-runtime-ktx do funkcji androidx.work:work-runtime (I0010f, b/209145335).

Poprawki błędów

  • Dodano @RequiresPermission do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w pakiecie SDK 33 lub nowszym. (Ie542e, b/238790278)

Wersja 2.8.0-alpha02

6 kwietnia 2022 roku

androidx.work:work-*:2.8.0-alpha02 został zwolniony. Wersja 2.8.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Ograniczenia można teraz tworzyć bezpośrednio zamiast za pomocą Buildera, co jest wygodne dla użytkowników Kotlina. (Idc390, b/137568653)
  • Dodano możliwość sprawdzenia, czy WorkManager została zainicjalizowana. Dodaliśmy też nowy interfejs API getConfiguration() dla programistów bibliotek, który umożliwia uzyskanie konfiguracji, z którą została zainicjowana biblioteka WorkManager. (I6eff3, b/212300336)

Wersja 2.8.0-alpha01

12 stycznia 2022 r.

androidx.work:work-*:2.8.0-alpha01 został zwolniony. Wersja 2.8.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Dodano pomocnicze metody WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags, które umożliwiają bezpośrednie tworzenie zapytania WorkQuery. (If48f2, b/199919736)
  • Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937).
  • Dodano getForegroundInfo do Worker. (Ic1ead)
  • Dodano pomocnicze metody WorkQuery.fromIds do tworzenia zapytań roboczych bezpośrednio z identyfikatorów. (Ie5bdf, b/199919736)
  • Metoda RxWorker ma teraz funkcję setForeground, która zwraca wartość Completable. Można jej używać zamiast funkcji setForegroundInfoAsync, która zwraca wartość ListenableFuture. (I85156)
  • W RxWorker dla RxJava 2 jest teraz dostępna metoda getForegroundInfo z wynikiem Single, którą można użyć zamiast metody getForegroundInfoAsync z wynikiem ListenableFuture. (I21c91, b/203851459)
  • W wersji RxWorker dla RxJava 3 dodano metodę getForegroundInfo, która zwraca wartość Single. Można jej używać zamiast metody getForegroundInfoAsync, która zwraca wartość ListenableFuture. (I1ca8a)
  • Metoda RxWorker ma teraz funkcję setForeground, która zwraca wartość Completable. Można jej używać zamiast funkcji setForegroundInfoAsync, która zwraca wartość ListenableFuture. (I992a3, b/203851459)

Poprawki błędów

  • Rozpowszechnianie anulowań w CoroutineScopeListenableFuture przy użyciu suspendCancellableCoroutine. (I77e63)

Wersja 2.7

Wersja 2.7.1

17 listopada 2021 r.

androidx.work:work-*:2.7.1 został zwolniony. Wersja 2.7.1 zawiera te commity.

Poprawki błędów

  • Anulowania w CoroutineScope są przekazywane do ListenableFuture, gdy używasz suspendCancellableCoroutine. (I77e63)
  • Wyjątek jest zgłaszany natychmiast, gdy opóźnione żądania pracy są oznaczone jako przyspieszone. bef1762

Wersja 2.7.0

13 października 2021 r.

androidx.work:work-*:2.7.0 został zwolniony. Wersja 2.7.0 zawiera te commity.

Ważne zmiany od wersji 2.6.0

  • WorkManager wprowadza nowy interfejs API WorkRequest.Builder.setExpedited(...), który ułatwia stosowanie ograniczeń usług działających na pierwszym planie w Androidzie 12.

  • Gdy używasz setExpedited(...), WorkManager deleguje zadania przyspieszone w JobSchedulerze od Androida 12, zapewniając jednocześnie zgodność wsteczną w poprzednich wersjach Androida przez delegowanie do usługi na pierwszym planie.

Wersja 2.7.0-rc01

29 września 2021 r.

androidx.work:work-*:2.7.0-rc01 został zwolniony. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.

Ta wersja jest identyczna z androidx.work:work-*:2.7.0-beta01.

Wersja 2.7.0-beta01

1 września 2021 roku

androidx.work:work-*:2.7.0-beta01 został zwolniony. Wersja 2.7.0-beta01 zawiera te commity.

Nowe funkcje

  • Zmniejsz współzawodnictwo SQLite w wielu procesach podczas inicjowania WorkManagera.

Zmiany w interfejsie API

  • Usuń interfejsy API @ExperimentalExpeditedWork, ponieważ interfejsy API platformy docelowej w przypadku Androida 12 (S) są stabilne. (aosp/1792806)

Poprawki błędów

  • Udostępnij lepszy komunikat o błędzie dla pracowników przyspieszonych, którzy nie implementują getForegroundInfoAsync(). (aosp/1809376)

Wersja 2.7.0-alpha05

21 lipca 2021 r.

androidx.work:work-*:2.7.0-alpha05 został zwolniony. Wersja 2.7.0-alpha05 zawiera te commity.

Ta wersja zawiera też poprawki błędów z wersji WorkManagera2.6.0-beta02.

Wersja 2.7.0-alpha04

2 czerwca 2021 r.

androidx.work:work-*:2.7.0-alpha04 został zwolniony.

Ta wersja zawiera też zmiany z wersji 2.6.0-beta01.

Zmiany w interfejsie API

  • Właściwość ListenableWorker.setForegroundAsync() nie jest już wycofana.
  • W miarę możliwości zalecamy korzystanie z interfejsu WorkRequest.Builder.setExpedited(...) API. Aby lepiej obsługiwać sytuacje, w których aplikacja nie podlega ograniczeniom usługi na pierwszym planie, deweloperzy mogą korzystać z interfejsu API ListenableWorker.setForegroundAsync().
  • Jeśli wywołanie ListenableWorker.setForegroundAsync() nastąpi, gdy aplikacja podlega ograniczeniom dotyczącym usług na pierwszym planie, zostanie rzucony wyjątek ForegroundServiceStartNotAllowedException.

Poprawki błędów

  • Gdy przyspieszone zadania zostaną ponownie zaplanowane, nie będą już przyspieszone. Stają się one zwykłymi zadaniami.

Wersja 2.7.0-alpha03

21 kwietnia 2021 r.

androidx.work:work-*:2.7.0-alpha03 został zwolniony. Wersja 2.7.0-alpha03 zawiera te commity.

Nowe funkcje

Zmiany w interfejsie API

Wersja 2.7.0-alpha02

10 marca 2021 r.

androidx.work:work-*:2.7.0-alpha02 został zwolniony. Wersja 2.7.0-alpha02 zawiera te commity.