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.9.1 - - -

Deklarowanie zależności

Aby dodać zależność w WorkManageru, 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:

Groovy

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 odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego numeru

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

Wersja 2.10

Wersja 2.10.0

30 października 2024 r.

Usługa androidx.work:work-*:2.10.0 została zwolniona. Wersja 2.10.0 zawiera te komity.

Znaczące zmiany od wersji 2.9.1

  • Do zadań z WorkManager dodano tagi logu czasu, co znacznie ułatwia zrozumienie harmonogramu zadania „adb shell dumpsys” w związku z tym, że zawiera on nazwę wykonywanej instancji roboczej. 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 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.
  • 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.

Usługa androidx.work:work-*:2.10.0-rc01 została zwolniona. Wersja 2.10.0-rc01 zawiera te komity.

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 zatwierdzenia.

Wersja 2.10.0-alfa04

18 września 2024 r.

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

Zmiany w interfejsie API

  • Dodaj przyczynę zatrzymania STOP_REASON_FOREGROUND_SERVICE_TIMEOUT, która obowiązuje w przypadku zatrzymania instancji roboczej na pierwszym planie z powodu czasu oczekiwania na wykonanie określonej na podstawie typu usługi na pierwszym planie. (Ibd0af)

Wersja 2.10.0-alfa03

4 września 2024 r.

Usługa androidx.work:work-*:2.10.0-alpha03 została zwolniona. 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 dużo łatwiejsze do zrozumienia, ponieważ zawiera nazwę wykonywanego zadania. Sekcje logu czasu zostały też dodane do 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 interfejsami 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 z awarią spowodowaną przez WorkManager próbę ponownego uruchomienia długotrwałego zadania (czyli zadania na pierwszym planie), gdy typ zadania 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 dla wszystkich kompilacji podczas korzystania z 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.

Usługa androidx.work:work-*:2.10.0-alpha02 została zwolniona. Wersja 2.10.0-alpha02 zawiera te komity.

Zmiany w interfejsie API

  • Dodaliśmy możliwość emitowania zakresów śledzonych za pomocą konfigurowalnego @RestrictTo Tracer w 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życia Dispatchers.Default w elementach WorkManager. (Icd1b7)
  • Dodaj niestandardowe moduły obsługi wyjątków dla instancji roboczych (Ib1b74, b/261190695)
  • OneTimeWorkRequest.Builder i PeriodicWorkRequest.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ępowania 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.

Usługa androidx.work:work-*:2.10.0-alpha01 została zwolniona. Wersja 2.10.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Deweloperzy mogą określić NetworkRequest jako ograniczenie dla pracownika za pomocą metody Constraints.setRequiredNetworkRequest. Pozwala to dokładniej kontrolować sieć, w której powinna działać 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.

Usługa androidx.work:work-*:2.9.1 została zwolniona. Wersja 2.9.1 zawiera te komity.

Poprawki błędów

  • Rozwiązanie problemu awarii spowodowanego przez WorkManager próbę ponownego uruchomienia długotrwałego wątku (czyli wątku na pierwszym planie), gdy typ pracy na pierwszym planie miał wymagania wstępne Androida 14, które zostały cofnięte. (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. Postępy instancji roboczej można teraz obserwować za pomocą narzędzia Flow, WorkManager.getWorkInfosFlow i podobnych metod, a nie LiveData.
  • Teraz WorkManager zawiera wskazówkę, dlaczego usługa worker została wcześniej zatrzymana. Zapytanie może zostać wysłane przez instancję roboczą za pomocą metody getStopReason() lub z WorkInfo za pomocą getStopReason().
  • Dokładne planowanie pracy pracowników okresowych za pomocą setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który można wykorzystać 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 w usłudze WorkManager z produkcją dopasowującą wątki. Funkcji ExecutorsMode.PRESERVE_EXECUTORS można używać w narzędziu initializeTestWorkManager, aby zachować wykonawców określonych w obiekcie Configuration i używać prawdziwego 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. work-runtime-ktx jest teraz pusty.

Zmiany w interfejsie API

  • Do grupy WorkInfo został dodany użytkownik stopReason. Dostęp do funkcji stopReason jest możliwy po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniu stopReason, ponieważ po zatrzymaniu zadania podrzędnego aplikacja może zostać bardzo szybko zamknięta. (I21386)
  • Umożliw ustawienie parametru Clock w 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)
  • 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 ustawienie 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 obserwację instancji roboczych za pomocą przepływów z użyciem metod getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • Do konstruktorów i właściwości Constraints dodano brakujące adnotacje @RequiresApi(...). Są one teraz dostosowane do odpowiednich adnotacji dotyczących zbiórek w języku: Constraints.Builder, które istniały we wczesnych wersjach pakietu WorkManager. (I6d7d2)
  • WorkManager ma teraz osobny limit dla pracowników zajmujących się 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 elementu 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 worker została wcześniej zatrzymana. Zapytanie może zostać wysłane przez instancję roboczą za pomocą metody getStopReason() lub z WorkInfo za pomocą getStopReason().

Zmiany w interfejsie API

  • Element stopReason został dodany do playlisty WorkInfo. Udostępnia ona dane 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 ListenableWorker dodano metodę getStopReason(), która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060)
  • Dodano WorkManagerTestInitHelper#closeWorkDatabase(), aby uniknąć ostrzeżenia 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.

Usługa androidx.work:work-*:2.9.0-alpha01 została zwolniona. Wersja 2.9.0-alpha01 zawiera te commity.

Nowe funkcje

  • Dostrzegalność w zakresie Flow s. Postępy instancji roboczej można teraz obserwować za pomocą narzędzia Flow, WorkManager.getWorkInfosFlow i podobnych metod, a nie LiveData.
  • Dokładne planowanie pracy pracowników okresowych za pomocą setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który można wykorzystać 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 przeprowadza testy w środowisku produkcyjnym do dopasowywania wątków. ExecutorsMode.PRESERVE_EXECUTORS można użyć, aby zachować wykonawców ustawionych w Configuration i użyć prawdziwego 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. Plik work-runtime-ktx jest teraz pusty.

Zmiany interfejsu API

  • Konstruktor WorkInfo jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335)
  • Element work-runtime-ktx jest teraz pusty. W głównym artefaktie work-runtime dostępne są teraz narzędzia CoroutineWorker oraz inne narzędzia związane z kotlinami. (I71a9a)
  • Dodano metodę setNextScheduleTimeOverride, która umożliwia dokładne ustawienie okresowych harmonogramów pracy (I3b4da)
  • Nazwa getEarliestRunTimeMillis została zmieniona na getNextScheduleTimeMillis. (I2bd7a)
  • Informacje o następnym zaplanowanym uruchomieniu zostaną dodane do zasady 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).
  • Dodano brakujące adnotacje @RequiresApi(...) do konstruktorów i właściwości ograniczeń. Zostały one dopasowane do odpowiednich adnotacji w metodach cząstkowych 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 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.8

Wersja 2.8.1

22 marca 2023 r.

Usługa androidx.work:work-*:2.8.1 została zwolniona. 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

  • Element WorkManager.updateWork został dodany do aktualizacji zadania z zachowaniem pierwotnego czasu umieszczenia w kolejce i łańcucha.(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. Nazwa REPLACE została wycofana, aby uniknąć pomyłek między bardzo podobnymi nazwami REPLACEUPDATE. 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.
  • Dodaliśmy możliwość podawania parametru Consumer<Throwable> za pomocą metody setInitializationExceptionHandler w celu określenia, czy podczas próby zainicjowania WorkManagera wystąpiły problemy.
  • Pomocnicze informacje 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 dla RxJava 2, jak i RxJava 3, getForegroundInfo zwraca funkcję Single, której można użyć zamiast getForegroundInfoAsync, która zwraca 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 zainicjowana. Dodaliśmy też nowy interfejs API getConfiguration() dla programistów bibliotek, aby mogli uzyskać konfigurację, z którą została zainicjowana biblioteka WorkManager. (I6eff3, b/212300336)

Poprawki błędów

  • Rozwiązaliśmy problem z chwytliwym algorytmem szeregowania, który uniemożliwiał uruchamianie instancji roboczych natychmiast po obciążeniu. (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 CoroutineScope w ListenableFuture podczas korzystania z 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 zatwierdzenia.

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 zatwierdzenia.

Poprawki błędów

  • Naprawiono metodę equals w WorkInfo, która wcześniej nie uwzględniała informacji 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 WorkerInfo.getGeneration() i WorkerParameters.getGeneration(), które zwracają pokolenie 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)
  • Dodano 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-alfa03 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano możliwość aktualizowania WorkRequests w nieinwazyjny sposób, zachowując pierwotny 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. Usługa REPLACE została wycofana, aby zmniejszyć ryzyko pomylenia usługi REPLACE z usługą UPDATE, które mają bardzo podobne nazwy. Jeśli chcesz zachować poprzednią semantykę właściwości REPLACE, możesz użyć nowo dodanego elementu CANCEL_AND_REENQUEUE, który jest taki sam jak REPLACE. (I985ed, b/219446409)
  • Dodaj możliwość przechwytywania wyjątków dotyczących harmonogramu przez zdefiniowanie SchedulingExceptionHandler. (I033eb)
  • Pomocnicze informacje 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 w wersji 33 lub nowszej. (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ść sprawdzania, czy WorkManager został zainicjowany. Oprócz tego dodaliśmy nowy interfejs API getConfiguration() dla programistów bibliotek, aby uzyskać konfigurację, za pomocą której zainicjowano 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 roboczego. (If48f2, b/199919736)
  • Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937)
  • Dodano getForegroundInfo do Worker. (Ic1ead)
  • Dodano metody pomocnicze WorkQuery.fromIds umożliwiające tworzenie zapytań bezpośrednio na podstawie 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)
  • RxWorker dla RxJava 2 zawiera teraz funkcję getForegroundInfo zwracającą wartość Single, której można użyć zamiast getForegroundInfoAsync zwracającej wartość ListenableFuture. (I21c91, b/203851459)
  • RxWorker dla RxJava 3 zwraca teraz getForegroundInfo zwracający Single, którego można użyć zamiast getForegroundInfoAsync zwracającego 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

  • Przenoszenie anulowań w CoroutineScope do ListenableFuture podczas korzystania z 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(...), aby pomóc z ograniczeniami 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 na 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 stosują się do 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-alfa05 zawiera te zatwierdzenia.

Ta wersja zawiera też poprawki błędów z wersji WorkManagera 2.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 interfejsu 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 zostanie wywołana zasada ListenableWorker.setForegroundAsync(), gdy aplikacja podlega ograniczeniom usługi na pierwszym planie, spowoduje to zgłoszenie 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.

Usługa androidx.work:work-*:2.7.0-alpha02 została zwolniona. Wersja 2.7.0-alpha02 zawiera te commity.