WorkManager

Interfejs WorkManager API ułatwia planowanie odroczonych, asynchronicznych zadań, które muszą być wykonywane niezawodnie. Te interfejsy API umożliwiają tworzenie zadań i przekazywanie ich do WorkManagera, aby uruchamiał je po spełnieniu ograniczeń.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
25 marca 2026 r. 2.11.2 - -

Deklarowanie zależności

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

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Odlotowe

dependencies {
    def work_version = "2.11.2"

    // (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.11.2"

    // (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ń Kotlin 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. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.

Tworzenie nowego problemu

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

Wersja 2.11

Wersja 2.11.2

25 marca 2026 r.

Publikacja androidx.work:work-*:2.11.2 Wersja 2.11.2 zawiera te zmiany.

Poprawki błędów

  • Rozwiązanie dodatkowych problemów z nieudanymi połączeniami sieciowymi w tle, nawet jeśli spełnione są ograniczenia sieciowe (Ic7f73, b/445324855)
  • Obsługa wyjątku zabezpieczeń w NetworkStateTracker. (I4b7ca, b/480123154)
  • Rozwiązaliśmy problem, który powodował, że zadania okresowe WorkRequest, które kończyły się niepowodzeniem z powodu nieobsłużonego wyjątku, nie były ponownie planowane. (Ia6b92, b/443879071)

Wersja 2.11.1

28 stycznia 2026 r.

Publikacja androidx.work:work-*:2.11.1 Wersja 2.11.1 zawiera te zmiany.

Poprawki błędów

  • Naprawiono problem z przekazywaniem ograniczenia stanu sieci, gdy połączenie jest blokowane na urządzeniach z Androidem 15 lub nowszym. (I5abb7, b/465016918)
  • Śledzenie ograniczeń sieci stacjonarnej nie uwzględniało stanu zablokowania w przypadku wartości początkowej. (I8a0a2, b/452081708)
  • Rozwiązaliśmy problem z przekazywaniem ograniczeń żądań sieciowych, gdy połączenie jest zablokowane na urządzeniach z Androidem 15 i nowszym. (I60f24, b/452081708)

Wersja 2.11.0

22 października 2025 r.

Publikacja androidx.work:work-*:2.11.0 Wersja 2.11.0 zawiera te zmiany.

Ważne zmiany od wersji 2.10.0:

  • minSdk został zaktualizowany z interfejsu API 21 do interfejsu API 23.
  • Interfejs API setRemoteSessionTimeoutMillis w Kreatorze konfiguracji WorkManager został dodany, aby umożliwić skonfigurowanie czasu, przez jaki sesja RemoteWorkManager jest aktywna od ostatniego użycia.

Wersja 2.11.0-rc01

8 października 2025 r.

Publikacja androidx.work:work-*:2.11.0-rc01 Wersja 2.11.0-rc01 zawiera te zmiany.

Wersja 2.11.0-beta01

24 września 2025 r.

Publikacja androidx.work:work-*:2.11.0-beta01 Wersja 2.11.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

Poprawki błędów

  • Naprawiono problem z zatrzymywaniem usługi działającej na pierwszym planie, gdy są oczekujące polecenia (Iae822, b/432069314)
  • Naprawiono problem z niepowodzeniem odłączania usługi zdalnej przez zdalny proces roboczy współprogramu (I842f2, b/247113322).

Wersja 2.11.0-alpha01

27 sierpnia 2025 roku

Publikacja androidx.work:work-*:2.11.0-alpha01 Wersja 2.11.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

  • Wartość minSdk została zaktualizowana z API 21 na API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
  • Do narzędzia do tworzenia konfiguracji WorkManager dodano interfejs API setRemoteSessionTimeoutMillis, który umożliwia skonfigurowanie czasu, przez jaki sesja RemoteWorkManager jest aktywna od ostatniego użycia. (Ib23c8)
  • Dodaj eksperymentalny interfejs API w WorkRequest.Builder, aby zastosować wycofywanie, gdy system przerwie pracę. (Ie2dc7, b/335513480)
  • Dodano testowy interfejs API, aby przekazywać do TestListenableWorkerBuilder inną klasę worker niż ta, która jest tworzona na potrzeby niestandardowych implementacji WorkerFactory (If6bff, b/389154854).

Poprawki błędów

  • Buforowanie możliwości sieci w SharedNetworkCallback, aby zapobiegać niepotrzebnym komunikatom IPC (Ie4027, b/427115602)
  • Rozwiązanie problemu z oceną ograniczeń sieciowych, w którym elementy robocze po pierwszym nie otrzymywały bieżących możliwości sieci i zamiast tego po przekroczeniu limitu czasu osiągały wartość ConstraintsNotMet (Ib6a66, b/427115602)

Wersja 2.10

Wersja 2.10.5

24 września 2025 r.

Publikacja androidx.work:work-*:2.10.5 Wersja 2.10.5 zawiera te zmiany.

Poprawki błędów

  • Naprawiono problem z zatrzymywaniem usługi działającej na pierwszym planie, gdy są oczekujące polecenia (Iae822, b/432069314)

Wersja 2.10.4

10 września 2025 r.

Publikacja androidx.work:work-*:2.10.4 Wersja 2.10.4 zawiera te zmiany.

Poprawki błędów

  • Rozwiązanie problemu z nieudanym odłączaniem usługi zdalnej przez RemoteCoroutineWorker (I842f2, b/247113322)

Wersja 2.10.3

30 lipca 2025 r.

Publikacja androidx.work:work-*:2.10.3 Wersja 2.10.3 zawiera te zmiany.

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że pracownicy z identycznymi ograniczeniami sieciowymi jak poprzedni pracownik zgłaszali, że ich ograniczenia nie są spełnione. (b/427115602).

Wersja 2.10.2

18 czerwca 2025 r.

Publikacja androidx.work:work-*:2.10.2 Wersja 2.10.2 zawiera te zmiany.

Poprawki błędów

  • Rozwiązaliśmy problem z utrwalaniem workerów z żądaniami sieciowymi i domyślnymi zdolnościami, który powodował ponowne dodawanie usuniętych zdolności, co sprawiało, że workerzy z ograniczeniami sieciowymi działali nieprawidłowo. (b/409716532)
  • Naprawiliśmy błąd, który powodował, że instancje robocze z ograniczeniami sieciowymi nie były wykonywane od razu z powodu niespełnienia ograniczeń, mimo że sieć i możliwości były dostępne. (b/423403088)

Wersja 2.10.1

23 kwietnia 2025 r.

Publikacja androidx.work:work-*:2.10.1 Wersja 2.10.1 zawiera te zmiany.

Poprawki błędów

  • Zmniejsz prawdopodobieństwo, że TooManyRequestsException zostanie usunięty z rejestracji WorkManagerNetworkCallback używanym do śledzenia ograniczeń. (b/231499040, b309d5).

Wersja 2.10.0

30 października 2024 r.

Publikacja androidx.work:work-*:2.10.0 Wersja 2.10.0 zawiera te zmiany.

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 procesu roboczego. Ślady są też dodawane wokół kluczowych obszarów WorkManager.
  • Do elementu Configuration.workerCoroutineContext dodano kontrolę nad dyspozytorem, w którym wykonywany jest element CoroutineWorker.
  • Deweloperzy mogą określić NetworkRequest jako ograniczenie dla pracownika za pomocą metody Constraints.setRequiredNetworkRequest. Umożliwia to bardziej szczegółową kontrolę nad tym, w której sieci ma działać instancja robocza.
  • WorkManager Wersja 2.10.0 jest teraz kompilowana 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.

Publikacja androidx.work:work-*:2.10.0-rc01 Wersja 2.10.0-rc01 zawiera te zmiany.

Wersja 2.10.0-beta01

2 października 2024 r.

Publikacja androidx.work:work-*:2.10.0-beta01 Wersja 2.10.0-beta01 zawiera te zmiany.

Wersja 2.10.0-alpha04

18 września 2024 r.

Publikacja androidx.work:work-*:2.10.0-alpha04 Wersja 2.10.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaj powód zatrzymania STOP_REASON_FOREGROUND_SERVICE_TIMEOUT, gdy worker na pierwszym planie zostanie zatrzymany z powodu przekroczenia limitu czasu wykonania na podstawie typu usługi działającej na pierwszym planie. (Ibd0af)

Wersja 2.10.0-alpha03

4 września 2024 r.

Publikacja androidx.work:work-*:2.10.0-alpha03 Wersja 2.10.0-alpha03 zawiera te zmiany.

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 procesu roboczego. Ślady są też dodawane wokół kluczowych obszarów WorkManager.

Zmiany w interfejsie API

  • Biblioteka WorkManager w wersji 2.10.0 jest teraz kompilowana z pakietem SDK 35.
  • Naprawiono problem z przekroczeniem limitu czasu przez usługi działające na pierwszym planie typu „short service” i „data sync”, co powodowało błąd ANR, gdy WorkManager nie wywoływał stopSelf(). Ta poprawka dotyczy tylko urządzeń z interfejsem API w wersji 34 i 35, w których wprowadzono typy usług działających na pierwszym planie. (ca06b2, b/364508145)
  • Nowe interfejsy API WorkerParameters, które umożliwiają przełączanie procesu zdalnego, z którym WorkerParameters jest powiązany podczas korzystania z WorkerFactory.Worker (Ibdc8a, Ie8a90, I7373f)

Poprawki błędów

  • Naprawiono awarię spowodowaną przez WorkManager próbę ponownego uruchomienia długotrwałego procesu roboczego (np. procesu roboczego na pierwszym planie), gdy typ procesu roboczego na pierwszym planie miał wymagane w Androidzie 14 uprawnienia, 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 nowszą (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszej (np. D8 w wersji 8.1). Klientom, którzy nie korzystają z AGP, zalecamy przejście na D8 w 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.

Publikacja androidx.work:work-*:2.10.0-alpha02 Wersja 2.10.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy możliwość emitowania zakresów śledzenia za pomocą konfigurowalnego @RestrictTo TracerWorkManager. (I17d7f, b/260214125)
  • Do elementu Configuration.workerCoroutineContext dodano kontrolę nad dyspozytorem, w którym wykonywany jest element CoroutineWorker. Pomaga to całkowicie uniknąć używania Dispatchers.DefaultWorkManager. (Icd1b7)
  • Dodawanie niestandardowych modułów obsługi wyjątków w przypadku Workers (Ib1b74, b/261190695)
  • 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 języka Kotlin. Metody zwracające teraz wartości LiveData, ListenableFuture lub Flow podają prawidłowe informacje o dopuszczalności wartości null. Może to wymagać zmian w kodzie źródłowym klientów, jeśli założenia dotyczące dopuszczalności wartości null w tym kodzie były nieprawidłowe. (If6757)

Wersja 2.10.0-alpha01

24 stycznia 2024 r.

Publikacja androidx.work:work-*:2.10.0-alpha01 Wersja 2.10.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Deweloperzy mogą określić NetworkRequest jako ograniczenie dla pracownika za pomocą metody Constraints.setRequiredNetworkRequest. Umożliwia to bardziej szczegółową kontrolę nad tym, w której sieci ma 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.

Publikacja androidx.work:work-*:2.9.1 Wersja 2.9.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd powodujący awarię, która występowała, gdy WorkManager próbował ponownie uruchomić długotrwałe zadanie (np. zadanie na pierwszym planie), a typ zadania na pierwszym planie miał wymagane uprawnienia Androida 14, które zostały cofnięte. (b/333957914)

Wersja 2.9.0

29 listopada 2023 r.

Publikacja androidx.work:work-*:2.9.0 Wersja 2.9.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.8.0

  • Dostrzegalność za pomocą Flow. Zamiast LiveData postęp pracownika można teraz obserwować za pomocą przepływu WorkManager.getWorkInfosFlow i podobnych metod.
  • Teraz WorkManager podaje wskazówkę, dlaczego instancja robocza została wcześniej zatrzymana. Można o nią zapytać bezpośrednio z poziomu procesu roboczego za pomocą metody getStopReason() lub z poziomu WorkInfo za pomocą metody getStopReason().
  • Precyzyjne planowanie okresowych zadań za pomocą setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie następnego okresowego harmonogramu pracy, który można wykorzystać do wdrożenia funkcji zaawansowanych, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie ponawiania lub uruchamianie procesu roboczego z wiadomościami przed przebudzeniem użytkownika każdego ranka bez odchyleń. ExistingPeriodicWorkPolicy.UPDATE należy używać w połączeniu z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu roboczego podczas planowania następnego.
  • Testowanie biblioteki WorkManager z wątkami pasującymi do środowiska produkcyjnego. ExecutorsMode.PRESERVE_EXECUTORS można używać w initializeTestWorkManager, aby zachować wykonawców ustawionych w Configuration i używać rzeczywistego wątku głównego.
  • Interfejsy API współprogramów, takie jak CoroutineWorker, zostały przeniesione z dodatkowego artefaktu work-runtime-ktx do głównego artefaktu work-runtime. Artefakt work-runtime-ktx jest teraz pusty.

Zmiany w interfejsie API

  • Dziecko (stopReason) zostało dodane do domu WorkInfo. Udostępnia wartość stopReason po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniu stopReason w użyteczny sposób, ponieważ po zatrzymaniu procesu roboczego aplikacja może zostać bardzo szybko zamknięta. (I21386)
  • Zezwalaj na ustawianie wartości Clock za pomocą konfiguracji i używaj jej do określania kolejności wykonywania testów Worker. (Ic586e)
  • Do klasy ListenableWorker dodano metodę getStopReason(), która podaje wskazówkę, dlaczego instancja robocza została zatrzymana. (I07060)
  • Dodano WorkManagerTestInitHelper#closeWorkDatabase(), aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49)
  • Konstruktor WorkInfo jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335)
  • work-runtime-ktx jest teraz pusta, a CoroutineWorker i inne narzędzia specyficzne dla języka Kotlin są teraz dostępne w głównym artefakcie środowiska wykonawczego. (I71a9a)
  • Dodano metodę setNextScheduleTimeOverride, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da).
  • Dodano getNextScheduleTimeMillis, aby uzyskać informacje o zaplanowanym czasie działania, do WorkInfo. (I797e4)
  • Do elementu WorkInfo dodawane są informacje o początkowym opóźnieniu i okresowości. (I52f2f)
  • Dodano metodę obserwowania pracowników za pomocą przepływów za pomocą metod getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • Dodano brakujące adnotacje @RequiresApi(...) do konstruktorów i właściwości Constraints. Są one teraz zgodne z odpowiednimi adnotacjami w metodach ustawiających w Constraints.Builder, które istniały od wczesnych wersji WorkManager. (I6d7d2)
  • WorkManager ma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca w JobScheduler i zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. 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.

Publikacja androidx.work:work-*:2.9.0-rc01 Wersja 2.9.0-rc01 zawiera te zatwierdzenia.

  • Brak zmian od ostatniej wersji beta

Wersja 2.9.0-beta01

6 września 2023 r.

Publikacja androidx.work:work-*:2.9.0-beta01 Wersja 2.9.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

Wersja 2.9.0-alpha02

26 lipca 2023 r.

Publikacja androidx.work:work-*:2.9.0-alpha02 Wersja 2.9.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Teraz WorkManager podaje wskazówkę, dlaczego instancja robocza została wcześniej zatrzymana. Można o nią zapytać bezpośrednio z poziomu procesu roboczego za pomocą metody getStopReason() lub z poziomu WorkInfo za pomocą metody getStopReason().

Zmiany w interfejsie API

  • Dziecko (stopReason) zostało dodane do domu WorkInfo. Udostępnia stopReason po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniu stopReason w użyteczny sposób, ponieważ po zatrzymaniu procesu roboczego aplikacja może zostać bardzo szybko zamknięta. (I21386)
  • Zezwalaj na ustawianie zegara za pomocą konfiguracji i używaj go do określania kolejności wykonywania testów Worker. (Ic586e)
  • Do klasy ListenableWorker dodano metodę getStopReason(), która podaje wskazówkę, dlaczego instancja robocza została zatrzymana. (I07060)
  • Dodaliśmy WorkManagerTestInitHelper#closeWorkDatabase(), aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49)

Poprawki błędów

  • Dodaliśmy możliwość pomijania overrideNextScheduleTime za pomocą TestDriver i rozwiązaliśmy problemy z możliwością testowania. (Ic2905)

Wersja 2.9.0-alpha01

7 czerwca 2023 r.

Publikacja androidx.work:work-*:2.9.0-alpha01 Wersja 2.9.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dostrzegalność za pomocą Flow. Zamiast LiveData postęp pracownika można teraz obserwować za pomocą przepływu WorkManager.getWorkInfosFlow i podobnych metod.
  • Precyzyjne planowanie okresowych zadań za pomocą setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie następnego okresowego harmonogramu pracy, który można wykorzystać do wdrożenia funkcji zaawansowanych, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie ponawiania lub uruchamianie procesu roboczego kanału informacyjnego przed przebudzeniem użytkownika każdego ranka bez odchyleń. ExistingPeriodicWorkPolicy.UPDATE należy używać w połączeniu z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu roboczego podczas planowania następnego.
  • WorkManagertestuje z użyciem wątków pasujących do wersji produkcyjnej. ExecutorsMode.PRESERVE_EXECUTORS można używać do zachowywania wykonawców ustawionych w Configuration i do korzystania z rzeczywistego wątku głównego.
  • Interfejsy API współprogramów, takie jak CoroutineWorker, zostały przeniesione z dodatkowego artefaktu work-runtime-ktx do głównego artefaktu work-runtime. 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 pusta, a CoroutineWorker i inne narzędzia specyficzne dla języka Kotlin 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).
  • Zmieniono nazwę getEarliestRunTimeMillis na getNextScheduleTimeMillis. (I2bd7a)
  • Informacje o następnym zaplanowanym uruchomieniu są dodawane do WorkInfo. (I797e4)
  • Do elementu WorkInfo dodawane są informacje o początkowym opóźnieniu i okresowości. (I52f2f)
  • Dodano metodę obserwowania pracowników za pomocą przepływów za pomocą metod getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • Dodano brakujące adnotacje @RequiresApi(...) do konstruktorów i właściwości Constraints. Są one teraz zgodne z odpowiednimi adnotacjami w metodach ustawiających w Constraints.Builder, które istniały od wczesnych wersji WorkManager. (I6d7d2)
  • WorkManager ma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca w JobScheduler i zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. 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.

Publikacja androidx.work:work-*:2.8.1 Wersja 2.8.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z błędem ANR w RescheduleReceiver, który wcześniej nie obsługiwał prawidłowo 2 jednoczesnych transmisji. (b/236906724)

Wersja 2.8.0

8 lutego 2023 r.

Publikacja androidx.work:work-*:2.8.0 Wersja 2.8.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.7.0

Nowe funkcje

Zmiany w interfejsie API

  • WorkManager.updateWork został dodany, aby aktualizować zadania, zachowując ich pierwotny czas dodania do kolejki i łączenie w łańcuchy.(I9a248, b/219446409)
  • Dodano użytkownika ExistingPeriodicWorkPolicy.UPDATE Ta zasada umożliwia aktualizowanie pracy okresowej według nazwy. Jest podobna do istniejącej funkcji REPLACE, ale mniej inwazyjna: nie anuluje zadania, jeśli jest ono aktualnie wykonywane, i zachowuje czas umieszczenia w kolejce – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu umieszczenia w kolejce, a nie czasu aktualizacji. REPLACE został wycofany, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymi REPLACEUPDATE. Jeśli nadal chcesz zachować poprzednią semantykę elementu 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 za pomocą Consumer<Throwable> (setSchedulingExceptionHandler).
  • Dodaliśmy możliwość przekazywania Consumer<Throwable> za pomocą metody setInitializationExceptionHandler, aby określić, czy podczas próby zainicjowania biblioteki WorkManager wystąpiły problemy.
  • Pomoc wstawiana w tekście dla symboli OneTimeWorkRequestPeriodicWorkRequest została przeniesiona z androidx.work:work-runtime-ktx do androidx.work:work-runtime (I0010f, b/209145335)
  • Dodano metody pomocnicze WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags, aby bezpośrednio tworzyć WorkQuery. (b/199919736) (If48f2, b/199919736)
  • Dodano getForegroundInfo do Worker. (Ic1ead)
  • RxWorker zarówno w przypadku RxJava 2, jak i RxJava 3 zwraca teraz setForeground, które można używać zamiast setForegroundInfoAsync zwracającego ListenableFuture.Completable
  • RxWorker zarówno w przypadku RxJava 2, jak i RxJava 3 ma getForegroundInfo zwracający Single, którego można używać zamiast getForegroundInfoAsync zwracającego ListenableFuture. (b/203851459)
  • Ograniczenia można teraz tworzyć bezpośrednio, zamiast używać Constraints.Builder, co jest wygodne dla użytkowników języka Kotlin. (Idc390, b/137568653)
  • Dodaliśmy możliwość sprawdzenia, czy WorkManager została zainicjowana. Dodaliśmy też nowy interfejs API getConfiguration(), który umożliwia deweloperom bibliotek uzyskiwanie konfiguracji, z jaką zainicjowano WorkManager. (I6eff3, b/212300336)

Poprawki błędów

  • Rozwiązaliśmy problem z zachłannym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie procesów roboczych pod obciążeniem. (I9686b, b/248111307)
  • Dodaliśmy @RequiresPermission do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
  • Przekazywanie anulowań z CoroutineScope do ListenableFuture podczas korzystania z suspendCancellableCoroutine.

Wersja 2.8.0-rc01

7 grudnia 2022 r.

Publikacja androidx.work:work-*:2.8.0-rc01 Wersja 2.8.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • W tej wersji nie ma nowych funkcji. Jest to głównie zmiana wersji

Wersja 2.8.0-beta02

9 listopada 2022 r.

Publikacja androidx.work:work-*:2.8.0-beta02 Wersja 2.8.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiliśmy metodę equalsWorkInfo, która wcześniej nie uwzględniała informacji o nowej generacji. (4977cc)

Wersja 2.8.0-beta01

5 października 2022 r.

Publikacja androidx.work:work-*:2.8.0-beta01 Wersja 2.8.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z zachłannym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie procesów roboczych pod obciążeniem. (I9686b, b/248111307)

Wersja 2.8.0-alpha04

7 września 2022 roku

Publikacja androidx.work:work-*:2.8.0-alpha04 Wersja 2.8.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano funkcje WorkerInfo.getGeneration()WorkerParameters.getGeneration(), które zwracają generację pracownika. Instancja robocza ma wiele generacji, jeśli została zaktualizowana za pomocą WorkManager.updateWork lub WorkManager.enqueueUniquePeriodicWork przy użyciu ExistingPeriodicWorkPolicy.UPDATE. Pamiętaj, że jeśli instancja robocza jest obecnie uruchomiona, ta metoda może zwrócić nowszą generację niż obecnie uruchomiona instancja robocza, jeśli podczas wykonywania instancji roboczej nastąpiła aktualizacja. (I665c5, b/219446409) (I128a9, b/219446409)
  • Dodano InitializationExceptionHandler, czyli procedurę obsługi wyjątków, która może służyć do określania, czy podczas inicjowania WorkManager wystąpiły problemy. (I061de)

Wersja 2.8.0-alpha03

10 sierpnia 2022 r.

Publikacja androidx.work:work-*:2.8.0-alpha03 Wersja 2.8.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaliśmy możliwość aktualizowania WorkRequests w sposób nienaruszający oryginalnego czasu dodania do kolejki, łańcucha itp. Więcej informacji znajdziesz w sekcjach WorkManager.updateWorkExistingPeriodicWorkPolicy.UPDATE.

Zmiany w interfejsie API

  • WorkManager.updateWork dodano, aby aktualizować zadania, zachowując ich pierwotny czas dodania do kolejki i łączenie w łańcuchy (I9a248, b/219446409).
  • Dodano użytkownika ExistingPeriodicWorkPolicy.UPDATE Ta zasada umożliwia aktualizowanie pracy okresowej według nazwy. Jest podobna do istniejącej funkcji REPLACE, ale mniej inwazyjna: nie anuluje działania, jeśli jest ono w trakcie wykonywania, i zachowuje czas umieszczenia w kolejce – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu umieszczenia w kolejce, a nie czasu aktualizacji. REPLACE zostało wycofane, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymi REPLACEUPDATE. Jeśli nadal chcesz zachować poprzednią semantykę elementu 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 od harmonogramu, definiując SchedulingExceptionHandler. (I033eb)
  • Pomoc wstawiana w tekście dla symboli OneTimeWorkRequestPeriodicWorkRequest została przeniesiona z androidx.work:work-runtime-ktx do 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 przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)

Wersja 2.8.0-alpha02

6 kwietnia 2022 roku

Publikacja androidx.work:work-*:2.8.0-alpha02 Wersja 2.8.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Ograniczenia można teraz tworzyć bezpośrednio, zamiast używać klasy Builder, co jest wygodne dla użytkowników języka Kotlin. (Idc390, b/137568653)
  • Dodaliśmy możliwość sprawdzenia, czy WorkManager została zainicjowana. Dodaliśmy też nowy interfejs API getConfiguration(), który umożliwia deweloperom bibliotek uzyskiwanie konfiguracji, z jaką zainicjowano WorkManager. (I6eff3, b/212300336)

Wersja 2.8.0-alpha01

12 stycznia 2022 r.

Publikacja androidx.work:work-*:2.8.0-alpha01 Wersja 2.8.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano metody pomocnicze WorkQuery.fromStates, WorkQuery.fromUniqueWorkNamesWorkQuery.fromTags, aby umożliwić bezpośrednie tworzenie obiektu WorkQuery. (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 do tworzenia obiektu WorkQuery bezpośrednio na podstawie identyfikatorów. (Ie5bdf, b/199919736)
  • RxWorker ma teraz funkcję setForeground zwracającą Completable, której można używać zamiast funkcji setForegroundInfoAsync zwracającej ListenableFuture. (I85156)
  • RxWorker dla RxJava 2 ma teraz getForegroundInfo zwracający Single, którego można używać zamiast getForegroundInfoAsync zwracającego ListenableFuture. (I21c91, b/203851459)
  • RxWorker w przypadku RxJava 3 ma teraz funkcję getForegroundInfo zwracającą wartość Single, której można używać zamiast funkcji getForegroundInfoAsync zwracającej wartość ListenableFuture. (I1ca8a)
  • RxWorker ma teraz funkcję setForeground zwracającą Completable, której można używać zamiast funkcji setForegroundInfoAsync zwracającej ListenableFuture. (I992a3, b/203851459)

Poprawki błędów

  • Przekazywanie anulowań z CoroutineScope do ListenableFuture podczas korzystania z suspendCancellableCoroutine. (I77e63)

Wersja 2.7

Wersja 2.7.1

17 listopada 2021 r.

Publikacja androidx.work:work-*:2.7.1 Wersja 2.7.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Anulowania w CoroutineScope są propagowane do ListenableFuture podczas korzystania z suspendCancellableCoroutine. (I77e63)
  • Gdy opóźnione żądania pracy zostaną oznaczone jako przyspieszone, od razu zostanie zgłoszony wyjątek. bef1762

Wersja 2.7.0

13 października 2021 r.

Publikacja androidx.work:work-*:2.7.0 Wersja 2.7.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.6.0

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

  • Gdy używasz setExpedited(...), WorkManager deleguje zadania priorytetowe w JobSchedulerze od Androida 12, a w starszych wersjach Androida zapewnia zgodność wsteczną, delegując zadania do usługi (działającej) na pierwszym planie.

Wersja 2.7.0-rc01

29 września 2021 r.

Publikacja androidx.work:work-*:2.7.0-rc01 Wersja 2.7.0-rc01 zawiera te zatwierdzenia.

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

Wersja 2.7.0-beta01

1 września 2021 roku

Publikacja androidx.work:work-*:2.7.0-beta01 Wersja 2.7.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Ograniczanie rywalizacji w SQLite w wielu procesach podczas inicjowania WorkManagera.

Zmiany w interfejsie API

  • Usunięcie interfejsów API @ExperimentalExpeditedWork, ponieważ bazowe interfejsy API platformy na Androidzie 12 (S) są stabilne. (aosp/1792806)

Poprawki błędów

  • Wyświetlanie lepszego komunikatu o błędzie w przypadku pracowników, którzy nie wdrożyli getForegroundInfoAsync(). (aosp/1809376)

Wersja 2.7.0-alpha05

21 lipca 2021 r.

Publikacja androidx.work:work-*:2.7.0-alpha05 Wersja 2.7.0-alpha05 zawiera te zatwierdzenia.

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

Wersja 2.7.0-alpha04

2 czerwca 2021 r.

Publikacja androidx.work:work-*:2.7.0-alpha04

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

Zmiany w interfejsie API

Poprawki błędów

  • Po zmianie terminu wykonania zadania w trybie ekspresowym nie jest ono już wykonywane w tym trybie. Stają się zwykłymi zadaniami.

Wersja 2.7.0-alpha03

21 kwietnia 2021 r.

Publikacja androidx.work:work-*:2.7.0-alpha03 Wersja 2.7.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

Zmiany w interfejsie API

Wersja 2.7.0-alpha02

10 marca 2021 r.

Publikacja androidx.work:work-*:2.7.0-alpha02 Wersja 2.7.0-alpha02 zawiera te zatwierdzenia.

Poprawki błędów

  • Jawnie określ zmienność intencji PendingIntent, aby rozwiązać problem z awarią podczas kierowania na Androida 12. (b/180884673)

Wersja 2.7.0-alpha01

18 lutego 2021 r.

Publikacja androidx.work:work-*:2.7.0-alpha01 Wersja 2.7.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • WorkManager wprowadza nowy interfejs APIWorkRequest.Builder.setExpedited(...), który uwzględnia ograniczenia dotyczące usług działających na pierwszym planie w Androidzie 12.

    Aplikacje nie mogą już uruchamiać usługi działającej na pierwszym planie, gdy działają w tle. Dlatego, aby lepiej obsługiwać długotrwałe zadania, które były wcześniej powiązane z cyklem życia usługi działającej na pierwszym planie, aplikacje mogą oznaczać WorkRequest jako przyspieszone.

    Ten interfejs API zastępuje interfejsy setForegroundAsync(...) / setForeground(...), które zostały wycofane.

    Gdy używasz setExpedited(...), WorkManager deleguje zadania priorytetowe w JobScheduler od Androida 12, zapewniając jednocześnie zgodność wsteczną w starszych wersjach Androida przez delegowanie do usług na pierwszym planie.

Zmiany w interfejsie API

  • Dodaliśmy obsługę przyspieszonych WorkRequest.

Wersja 2.6.0

Wersja 2.6.0

1 września 2021 roku

Publikacja androidx.work:work-*:2.6.0 Wersja 2.6.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.5.0

  • Biblioteka WorkManager używa teraz wartości androidx.startup do inicjowania. Jeśli w przeszłości do inicjowania WorkManagera używano tools:node="remove" ContentProvider, wykonaj te czynności:

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • Dodano obsługę procesów roboczych, które mogą działać w dowolnym procesie. (Iaf200)

  • Dodano klasę RemoteCoroutineWorker, która jest implementacją klasy RemoteListenableWorker i może łączyć się z procesem zdalnym. (I30578)

Wersja 2.6.0-rc01

4 sierpnia 2021 r.

Publikacja androidx.work:work-*:2.6.0-rc01 Wersja 2.6.0-rc01 zawiera te zatwierdzenia.

Ta wersja jest identyczna z wersją androidx.work:work-*:2.6.0-beta02.

Wersja 2.6.0-beta02

21 lipca 2021 r.

Publikacja androidx.work:work-*:2.6.0-beta02 Wersja 2.6.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • RemoteWorkManager prawidłowo odłącza się od RemoteWorkManagerService, co umożliwia RemoteWorkManagerService prawidłowe zwalnianie miejsca. aosp/1730694
  • RemoteListenableWorker prawidłowo odłącza się od RemoteWorkerService, co umożliwia prawidłowe zwalnianie miejsca przez RemoteWorkerService. aosp/1743817
  • ForceStopRunnable działa teraz tylko w głównym procesie aplikacji. Jest to optymalizacja, która zapobiega konfliktom zasobów w przypadku aplikacji korzystających z wielu procesów. aosp/1749180, aosp/1761729

Wersja 2.6.0-beta01

2 czerwca 2021 r.

Publikacja androidx.work:work-*:2.6.0-beta01 Wersja 2.6.0-beta01 zawiera te zatwierdzenia.

Ta wersja zawiera drobne ulepszenia dokumentacji. Wersja ta jest w dużej mierze identyczna z wersją 2.6.0-alpha02.

Wersja 2.6.0-alpha02

21 kwietnia 2021 r.

Publikacja androidx.work:work-*:2.6.0-alpha02 Wersja 2.6.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaje obsługę procesów roboczych, które mogą działać w dowolnym procesie. (Iaf200)

  • Dodaliśmy RemoteCoroutineWorker, czyli implementację RemoteListenableWorker, która może łączyć się z procesem zdalnym. (I30578)

Zmiany w interfejsie API

  • Dodaliśmy obsługę ograniczenia sieci TEMPORARILY_UNMETERED. (I08d5e)
  • Obsługa procesów roboczych w wielu procesach w przypadku setProgressAsync(). (Ib6d08)
  • Udostępnij WorkManagerInitializer publicznie, aby inne androidx.startup.Initializer mogły używać ich jako zależności. (I5ab11)

Wersja 2.6.0-alpha01

24 marca 2021 r.

Publikacja androidx.work:work-*:2.6.0-alpha01 Wersja 2.6.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • WorkManager używa teraz androidx.startup do inicjowania WorkManagera. Wcześniej zajmował się tym androidx.work.impl.WorkManagerInitializer. (aosp/1608813)

    Jeśli w przeszłości używasz tools:node="remove" do inicjowania cyklu życia procesu, wykonaj te czynności:ContentProvider

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (lub)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Zmiany w interfejsie API

  • Dodaj interfejs API Result.getOutputData(), który zwraca outputData elementu ListenableWorker. (Ie51e3)

Poprawki błędów

  • Dodaliśmy obejście błędu OEM, który powoduje zgłaszanie wyjątku SecurityException podczas korzystania z interfejsów API AlarmManager. (aosp/1587518)

Wersja 2.5.0

Wersja 2.5.0

27 stycznia 2021 r.

Publikacja androidx.work:work-*:2.5.0 Wersja 2.5.0 zawiera te zatwierdzenia.

Główne zmiany od wersji 2.4.0

  • Nowy artefakt :work:work-multiprocess dla aplikacji, które korzystają z wielu procesów. Zwiększa to wydajność, ponieważ ujednolica planowanie żądań pracy w ramach jednego procesu.
    • Aby użyć work-multiprocess, zdefiniuj zależność od:implementation "androidx.work:work-multiprocess:2.5.0"
    • Wyznacz główny proces za pomocą metody Configuration.Builder.setDefaultProcessName(String).
    • Jeśli używasz work-multiprocess, możesz też używać RemoteWorkManager do zarządzania WorkRequest. RemoteWorkManager zawsze kontaktuje się z wyznaczonym procesem. Planista w procesie również działa w wyznaczonym procesie.
  • Czasami ActivityManager nie może utworzyć instancji JobService, aby rozpocząć zadanie. Powoduje to ciche odrzucenie bazowego zadania z powodu błędu platformy. WorkManager zapewnia teraz, że dla każdego WorkRequest istnieją zadania pomocnicze, gdy Application jest inicjowany przez uzgadnianie zadań. Znacznie zwiększa to niezawodność wykonywania zadań. (b/172475041, aosp/1489577)
  • WorkManager ogranicza wzrost bazy danych, skracając czas buforowania, w którym śledzone są WorkRequest po zakończeniu WorkRequest. Wcześniej okres trwania wynosił 7 dni. Został on skrócony do 1 dnia plus czas trwania keepResultsForAtLeast. (aosp/1419708)
  • TestListenableWorkerBuilder obsługuje teraz klasę reifikowaną rozszerzającą ListenableWorker, co ułatwia testowanie. (aosp/1443299, b/169787349)
  • Inspektor WorkManagera jest teraz dostępny w Androidzie Studio Arctic Fox.

Wersja 2.5.0-rc01

13 stycznia 2021 r.

Publikacja androidx.work:work-*:2.5.0-rc01 Wersja 2.5.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy błąd, który powodował, że po zaktualizowaniu encji za pomocą interfejsu API opartego na WorkQuery nieprawidłowo unieważniano getWorkInfosLiveData. (aosp/1540566, b/173769028)
  • Usunęliśmy błąd, który w rzadkich przypadkach powodował, że transakcje w bazie danych nie były oznaczane jako zakończone sukcesem. Powoduje to problemy na niektórych urządzeniach Motorola. (aosp/1535368, b/175944460)
  • Naprawiono błąd polegający na ignorowaniu znaków NoSuchElementException podczas próby odłączenia się od martwego procesu. (aosp/1530589)
  • Ulepsz ConstraintTrackingWorker, aby zatrzymywać tylko ListenableWorker, które nie zostały jeszcze zatrzymane. (aosp/1496844, b/172946965)
  • Aktualizacja bibliotek androidx.work pod kątem Javy 8 (Ibd2f2)

Wersja 2.5.0-beta02

2 grudnia 2020 r.

Publikacja androidx.work:work-*:2.5.0-beta02 Wersja 2.5.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy błąd w androidx.work:work-multiprocess, który powodował, że WorkManager nieumyślnie blokował wątek wywołujący podczas próby powiązania z wyznaczonym procesem. (aosp/1475538)
  • Naprawiliśmy błąd polegający na tym, że PeriodicWorkRequest nie były prawidłowo uzgadniane. (b/172475041, aosp/1489577)
  • Dodano obejście błędu platformy podczas zatrzymywania usługi działającej na pierwszym planie w przypadku korzystania z interfejsów API setForeground*. (b/170924044, aosp/1489901)

Wersja 2.5.0-beta01

28 października 2020 r.

Publikacja androidx.work:work-*:2.5.0-beta01 Wersja 2.5.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • WorkManager automatycznie ogranicza liczbę WorkRequest, które mogą być pobierane przez harmonogram w procesie. Żądania są nadal wykonywane w kolejności FIFO. (aosp/1455228)
  • WorkManager próbuje przywrócić prawidłowy stan, gdy magazyn danych aplikacji jest w złym stanie. (aosp/1463103)

Poprawki błędów

  • Gdy ListenableWorker zostaną przerwane, natychmiast oznacz je jako ENQUEUED, aby można było je później przełożyć. (aosp/1455618, b/170273988)

Wersja 2.5.0-alpha03

14 października 2020 r.

Publikacja androidx.work:work-*:2.5.0-alpha03 Wersja 2.5.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • TestListenableWorkerBuilderTestWorkerBuilder nie używają typów surowych. (I883ad, b/169787349)

Poprawki błędów

  • Użyj ApplicationInfo, aby określić nazwę domyślnego procesu aplikacji. (b/168716641, aosp/1429950)
  • Popraw reguły widoczności dla pól RemoteWorkManagerRemoteWorkContinuation. Te interfejsy API nie są już oznaczone jako @Restricted. (aosp/1432091)
  • Napraw reguły ProGuard dla :work:work-multiprocess. (aosp/1432091)
  • Ulepszanie cykli życia powiadomień w przypadku długotrwałych zadań powiązanych z usługą na pierwszym planie. (b/168502234, aosp/1431331)

Wersja 2.5.0-alpha02

16 września 2020 roku

Publikacja androidx.work:work-*:2.5.0-alpha02 Wersja 2.5.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaj interfejs API do WorkQuery, aby móc używać ids do wysyłania zapytań do WorkInfos. (aosp/1412372, b/157335295)
  • WorkManager lepiej obsługuje aplikacje, które korzystają z wielu procesów, dzięki nowemu artefaktowi (androidx.work:work-multiprocess:*). Ten nowy artefakt pomaga rozwiązać kilka problemów, z którymi borykają się duże aplikacje, w tym:
    • Bibliotekę WorkManager należy zwykle zainicjować w każdym procesie aplikacji. To nie jest dobre rozwiązanie, ponieważ zwiększa konkurencję w SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, których można używać do wyznaczania głównego procesu aplikacji za pomocą Configuration#setDefaultProcessName(processName). processName to pełna i jednoznaczna nazwa procesu, która wygląda jak packageName:processName (np. com.example:remote).
    • Nowy zestaw interfejsów API: RemoteWorkManagerRemoteWorkContinuation do enqueue, cancelquery żądań pracy. Te interfejsy API nie zawierają wariantów LiveData, aby uniknąć konfliktów SQLite w wielu procesach. Wszystkie połączenia z enqueue, cancelquery są przekazywane do procesu aplikacji primary za pomocą AIDL i zwracają płynny ListenableFuture. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

Zmiany w interfejsie API

  • WorkManager bardziej agresywnie usuwa ukończone obiekty WorkRequest, które nie mają niekompletnych zależności. Okres buforowy zmieniono z 7 dni na 1 dzień. (aosp/1419708)

Poprawki błędów

  • WorkManager aktywnie uzgadnia zadania, dzięki czemu zadania WorkRequestJobScheduler są zsynchronizowane podczas inicjowania WorkManager. (aosp/1412794, b/166292069)

Wersja 2.5.0-alpha01

19 sierpnia 2020 r.

Publikacja androidx.work:work-*:2.5.0-alpha01 Wersja 2.5.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Zmiany w wewnętrznych interfejsach API, które pozwolą nam w przyszłości udostępniać lepsze narzędzia z WorkManager. Będziemy na bieżąco informować o zmianach.

Poprawki błędów

  • Obsługa symbolu SecurityException podczas śledzenia stanu sieci na niektórych urządzeniach. (aosp/1396969)

Wkład zewnętrzny

Wersja 2.4.0

Wersja 2.4.0

22 lipca 2020 r.

Publikacja androidx.work:work-*:2.4.0 Wersja 2.4.0 zawiera te zatwierdzenia.

Główne zmiany od wersji 2.3.0

  • Planista w procesie WorkManager jest teraz bardziej wydajny. Wcześniej w trakcie przetwarzania Scheduler uwzględniano tylko zadania, które nie były opóźnione i spełniały ograniczenia. Harmonogram w trakcie przetwarzania śledzi teraz WorkRequest, które mogą być wykonane w przyszłości, w tym PeriodicWorkRequest. Proces Scheduler nie podlega też limitom planowania (ale nadal jest ograniczony rozmiarem Executor używanego przez WorkManagera). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej obiektów WorkRequest, gdy działa na pierwszym planie. Aby zarządzać wykonywaniem opóźnionych zadań na pierwszym planie, WorkManager wprowadza też nowy konfigurowalny element RunnableScheduler. (aosp/1185778)
  • WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność: implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
  • Dodaliśmy możliwość wyszukiwania WorkInfo za pomocą WorkQuery. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania o WorkInfo na podstawie kombinacji kilku atrybutów. Więcej informacji znajdziesz na stronach WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...)WorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546)
  • Dodaj możliwość wysyłania do WorkManager próśb o informacje diagnostyczne za pomocą:

    adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
    

    Dostarcza to wielu przydatnych informacji, w tym:

    • WorkRequesty, które zostały ukończone w ciągu ostatnich 24 godzin.
    • Obecnie WYKONYWANE żądania WorkRequest.
    • Zaplanowane prośby o wykonanie usługi. (aosp/1235501)
  • Dodaj ExistingWorkPolicy.APPEND_OR_REPLACE, który jest podobny do APPEND, ale zastępuje łańcuch, w którym anulowano lub nie spełniono wymagań wstępnych. (b/134613984, aosp/1199640)

  • Umożliwia dodanie niestandardowego RunnableScheduler do śledzenia elementów WorkRequest, które mają zostać wykonane w przyszłości. Jest on używany przez harmonogram w procesie. (aosp/1203944)

  • Dodaliśmy obsługę dynamicznego dodawania fabryk do delegowania podczas korzystania z DelegatingWorkerFactory. (b/156289105, aosp/1309745)

  • Dostosuj śledzenie ograniczeń BATTERY_NOT_LOW do platformy. (aosp/1312583)

  • Harmonogram w procesie korzysta teraz z lepszych interfejsów API do określania nazwy procesu. Jest to przydatne w przypadku aplikacji, które korzystają z wielu procesów. (aosp/1324732)

  • Nowe reguły Lint, które wymuszają:

    • Używanie odpowiedniego foregroundServiceType podczas korzystania z interfejsów API setForegroundAsync(). (b/147873061, aosp/1215915)
    • Określanie identyfikatorów JobScheduler, których WorkManager powinien używać podczas bezpośredniego korzystania z interfejsów API JobService. aosp/1223567
    • Dodano nową regułę lint, która zapewnia, że implementacje ListenableWorker są teraz public, gdy używana jest domyślna wartość WorkerFactory. (aosp/1291262)
  • Wywołania setForegroundAsync(), które nie zostaną zakończone przed zakończeniem ListenableWorker, będą teraz sygnalizowane za pomocą IllegalStateException w zwróconym ListenableFuture. (aosp/1262743)

  • Rozwiązanie problemu polegającego na tym, że po przerwaniu działania usługi na pierwszym planie Worker usługa na drugim planie ForegroundService nie była zatrzymywana. (b/155579898, aosp/1302153)

  • Naprawiono błąd, w którym WorkManager próbuje wykonać wiele instancji Worker powiązanych z usługą na pierwszym planie (b/156310133, aosp/1309853).

Wersja 2.4.0-rc01

24 czerwca 2020 r.

Publikacja androidx.work:work-*:2.4.0-rc01 Wersja 2.4.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Harmonogram w procesie korzysta teraz z lepszych interfejsów API do określania nazwy procesu. Jest to przydatne w przypadku aplikacji, które korzystają z wielu procesów. (aosp/1324732)

Wersja 2.4.0-beta01

20 maja 2020 r.

androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 i androidx.work:work-testing:2.4.0-beta01. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że po przerwaniu działania usługi na pierwszym planie Worker usługa na drugim planie ForegroundService nie była zatrzymywana. (b/155579898, aosp/1302153)
  • Naprawiono błąd, w którym WorkManager próbuje wykonać wiele instancji Worker powiązanych z usługą na pierwszym planie (b/156310133, aosp/1309853).
  • Dodaliśmy obsługę dynamicznego dodawania fabryk do delegowania podczas korzystania z DelegatingWorkerFactory. (b/156289105, aosp/1309745)
  • Dostosuj śledzenie ograniczeń BATTERY_NOT_LOW do platformy. (aosp/1312583)

Wersja 2.4.0-alpha03

29 kwietnia 2020 r.

Publikacja androidx.work:work-*:2.4.0-alpha03 Wersja 2.4.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • Dodano nową regułę lint, która zapewnia, że implementacje ListenableWorker są teraz public, gdy używana jest domyślna wartość WorkerFactory. (aosp/1291262)

Zmiany w interfejsie API

  • Wywołanie funkcji setProgressAsync() po zakończeniu działania funkcji ListenableWorker będzie teraz sygnalizować Exception za pomocą funkcji ListenableFuture. (aosp/1285494)
  • WorkQuery.Builder jest teraz oznaczony jako final. (aosp/1275037)
  • WorkQuery.Builder metody fabryczne withStates, withTags i withUniqueWorkNames zostały zmienione na fromStates, fromTags i fromUniqueWorkNames. (aosp/1280287)

Poprawki błędów

Wersja 2.4.0-alpha02

1 kwietnia 2020 r.

Publikacja androidx.work:work-*:2.4.0-alpha02 Wersja 2.4.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano nową regułę Lint, która ostrzega, gdy WorkRequest wymaga zarówno Constraints.setRequiresCharging(...), jak i Constraints.setRequiresDeviceIdle(...). Niektóre urządzenia nigdy nie ładują się i nie są w stanie bezczynności w tym samym czasie. Takie żądania będą więc wykonywane rzadziej niż oczekiwano. (aosp/1253840)

Zmiany w interfejsie API

  • Dodaliśmy możliwość wyszukiwania WorkInfo za pomocą WorkQuery. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania o WorkInfo na podstawie kombinacji kilku atrybutów. Więcej informacji znajdziesz na stronach WorkQuery.Builder withStates(...), WorkQuery.Builder withTags(...)WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)

  • Wywołania setForegroundAsync(), które nie zostaną zakończone przed zakończeniem ListenableWorker, będą teraz sygnalizowane za pomocą IllegalStateException w zwróconym ListenableFuture. (aosp/1262743)

Poprawki błędów

  • Naprawiono regułę lint, która sprawdza nieprawidłowe czasy trwania interwałów w przypadku PeriodicWorkRequests. (aosp/1254846, b/152606442)

Wersja 2.4.0-alpha01

4 marca 2020 r.

Publikacja androidx.work:work-*:2.4.0-alpha01 Wersja 2.4.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Planista w procesie WorkManager jest teraz bardziej wydajny. Wcześniej harmonogram w trakcie przetwarzania uwzględniał tylko wykonywanie zadań, które nie były opóźnione i spełniały ograniczenia. Harmonogram w procesie śledzi teraz WorkRequest, które mogą zostać wykonane w przyszłości, w tym PeriodicWorkRequest. Procesowy harmonogram nie uwzględnia też limitów planowania (ale nadal jest ograniczony rozmiarem Executor używanego przez WorkManagera). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej WorkRequest, gdy działa na pierwszym planie. (aosp/1185778)

  • Dodaliśmy możliwość żądania informacji diagnostycznych z biblioteki WorkManager za pomocą adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". Dostarcza to wielu przydatnych informacji, w tym:

    • WorkRequesty, które zostały ukończone w ciągu ostatnich 24 godzin.
    • Obecnie WYKONYWANE żądania WorkRequest.
    • Zaplanowane prośby o wykonanie usługi. (aosp/1235501)
  • Nowe reguły Lint, które wymuszają:

    • Używanie odpowiedniego foregroundServiceType podczas korzystania z interfejsów API setForegroundAsync(). (b/147873061, aosp/1215915)
    • Określanie identyfikatorów JobScheduler, których WorkManager ma używać podczas bezpośredniego korzystania z interfejsów API JobService. (aosp/1223567)

Zmiany w interfejsie API

  • Dodaj ExistingWorkPolicy.APPEND_OR_REPLACE, który jest podobny do APPEND, ale zastępuje łańcuch, który został anulowany lub nie spełnia wymagań wstępnych. (b/134613984, aosp/1199640)

  • Umożliwia dodawanie niestandardowego RunnableScheduler do śledzenia WorkRequest, które mają zostać wykonane w przyszłości. Jest on używany przez harmonogram w procesie. (aosp/1203944)

Poprawki błędów

  • Wycofano setProgress()RxWorker, ponieważ wcześniej zwracało Single<Void>, czyli typ niemożliwy. Dodaliśmy nowy interfejs API setCompletableProgress(), który zwraca Completable, oraz nowe reguły Lint, które pomagają w migracji do nowych interfejsów API. (b/150080946, aosp/1242665)

Wersja 2.3.4

Wersja 2.3.4

18 marca 2020 r.

Publikacja androidx.work:work-*:2.3.4 Wersja 2.3.4 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunęliśmy błąd, który powodował uruchamianie wielu instancji długotrwałego skryptu Workers po przekroczeniu 10-minutowego okna wykonywania. (aosp/1247484, b/150553353)
  • Poprawka dla narzędzia lint biblioteki WorkManager IssueRegistry. Dziękujemy @ZacSweers z Slacka za pomoc. (aosp/1217923)

Wersja 2.3.3

Wersja 2.3.3

4 marca 2020 r.

Publikacja androidx.work:work-*:2.3.3 Wersja 2.3.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy błąd polegający na tym, że jeśli Worker został przerwany, nie był prawidłowo planowany ponownie. (b/150325687, aosp/1246571)

Wersja 2.3.2

Wersja 2.3.2

19 lutego 2020 r.

androidx.work:work-*:2.3.2. Wersja 2.3.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązuje problem, który w rzadkich przypadkach powodował, że WorkManager przekraczał limit 100 zadań w JobSchedulerze. (aosp/1226859, b/149092520)
  • Poprawka dotycząca sytuacji wyścigu w klasach ConstraintControllers. (aosp/1220100)
  • Ulepszyliśmy zarządzanie cyklem życia usługi działającej na pierwszym planie w przypadku długotrwałych procesów roboczych. (aosp/1226295)
  • Ulepszyliśmy zarządzanie anulowaniem powiadomień dotyczących długotrwałych procesów roboczych po anulowaniu procesu roboczego. (aosp/1228346)

Wersja 2.3.1

Wersja 2.3.1

5 lutego 2020 r.

Publikacja androidx.work:work-*:2.3.1 Wersja 2.3.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Lepsze zarządzanie cyklem życia Notificationw przypadku długotrwałych Worker, które działają, gdy aktywna jest usługa na pierwszym planie Service. (aosp/1218539, b/147249312)
  • WorkManager zależy teraz od stabilnej wersji androidx.sqlite:sqlite-framework:2.1.0. (aosp/1217729)
  • Dodano reguły lint, aby zapewnić, że w przypadku używania foregroundServiceTypeForegroundInfoAndroidManifest.xml określono foregroundServiceType. (aosp/1214207, b/147873061)

Wersja 2.3.0

Wersja 2.3.0

22 stycznia 2020 r.

androidx.work:work-*:2.3.0 została opublikowana bez zmian od 2.3.0-rc01. Wersja 2.3.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 2.2.0

  • Obsługa długotrwałych lub ważnych zadań za pomocą ListenableWorker#setForegroundAsync().
  • Obsługa postępu instancji roboczej za pomocą ListenableWorker#setProgressAsync().
  • WorkManager zawiera teraz dodatkowe reguły lint jako część biblioteki, co pomaga wczesnym wykrywaniu błędów.

Wersja 2.3.0-rc01

8 stycznia 2020 r.

Publikacja androidx.work:work-*:2.3.0-rc01 Wersja 2.3.0-rc01 zawiera te zmiany.

Ta wersja jest identyczna z wersją 2.3.0-beta02.

Poprawki błędów

  • Artefakt work-testing definiuje teraz zależność api od work-runtime-ktx. (aosp/1194410)

Wersja 2.3.0-beta02

18 grudnia 2019 r.

Publikacja androidx.work:work-*:2.3.0-beta02 Wersja 2.3.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaliśmy lepszy komunikat o błędzie w przypadku nieodwracalnych wyjątków SQLite. (aosp/1185777)
  • Dodano regułę lint, która zapewnia, że dostawca treści androidx.work.impl.WorkManagerInitializer jest usuwany z AndroidManifest.xml podczas korzystania z inicjowania na żądanie. (aosp/1167007)
  • Dodano ostrzeżenie narzędzia lint, gdy w przypadku PeriodicWorkRequest użyto enqueue() zamiast enqueueUniquePeriodicWork(). (aosp/1166032)

Zmiany w interfejsie API

  • ForegroundInfo wymaga teraz podania atrybutu notificationId, który ma być używany podczas korzystania z atrybutu ListenableWorker.setForegroundAsync(). Jest to zmiana powodująca niezgodność wsteczną. Dzięki temu możesz uruchamiać równolegle wiele długotrwałych Worker. WorkManager lepiej zarządza też czasem życia podanych Notification. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)

Poprawki błędów

  • Naprawiliśmy błąd w implementacji AlarmManager, który powodował, że alarmy nie były prawidłowo usuwane. (aosp/1156444)
  • Rozwiązaliśmy błąd, który powodował, że pusta lista WorkRequest tworzyła nieprawidłowy łańcuch WorkContinuation. (b/142835274, aosp/1157051)

Zmiany zależności

  • WorkManager używa teraz biblioteki Room w wersji 2.2.2.

Wersja 2.3.0-beta01

20 listopada 2019 r.

Publikacja androidx.work:work-*:2.3.0-beta01 Wersja 2.3.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano nową regułę lint, która zapobiega błędom programistów wynikającym z nieprawidłowej implementacji androidx.work.Configuration.Provider podczas korzystania z inicjowania na żądanie. aosp/1164559

Wersja 2.3.0-alpha03

23 października 2019 r.

Publikacja androidx.work:work-*:2.3.0-alpha03 Wersja 2.3.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Dodano interfejs API WorkManager.createCancelPendingIntent(), który ułatwia anulowanie WorkRequest bez konieczności rejestrowania kolejnego komponentu w AndroidManifest.xml. Ten interfejs API szczególnie ułatwia anulowanie WorkRequestNotification. Spodziewamy się, że w wersji 2.3.0 zostaną one połączone z nowymi interfejsami API na pierwszym planie.
  • Biblioteka WorkManager zależy teraz od stabilnej wersji androidx.room:*:2.2.0.

Zmiany w interfejsie API

  • Zmieniliśmy nazwę interfejsu ForegroundInfo.getNotificationType() na ForegroundInfo.getForegroundServiceType(), aby lepiej dopasować go do interfejsów API platformy bazowej. (b/142729893, aosp/1143316)

Poprawki błędów

  • Naprawiono błąd spowodowany niepotrzebnym wywołaniem funkcji setTransactionSuccessful() poza transakcją. Dzieje się tak w przypadku rzadkich migracji. (b/142580433, aosp/1141737)

Wersja 2.3.0-alpha02

9 października 2019 r.

Publikacja androidx.work:work-*:2.3.0-alpha02 Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • WorkManager obsługuje teraz długotrwałe lub ważne zadania, które powinny być utrzymywane przy życiu przez system operacyjny. Więcej informacji znajdziesz w artykule ListenableWorker#setForegroundAsync() (lub CoroutineWorker#setForeground() w przypadku języka Kotlin). (aosp/1133636)

Zmiany w interfejsie API

  • Interfejs API containsKey w przeglądarce Data został zmieniony na hasKeyWithValueOfType. Odpowiednia metoda rozszerzenia w bibliotece ktx również została zmieniona. (b/141916545)

Poprawki błędów

  • WorkManager sprawiedliwie planuje pracę, gdy liczba zadań WorkRequest w kolejce zbliża się do limitów planowania. (aosp/1105766)
  • WorkManager wywołuje ListenableWorker#onStopped() tylko wtedy, gdy zadanie nie zostało jeszcze ukończone. (b/140055777)
  • Biblioteka WorkManager usuwa teraz informacje o postępach, gdy klasa worker zostanie przerwana lub osiągnie stan końcowy. (aosp/1114572)
  • Data ma teraz znacznie bardziej przydatną toString()reprezentację. (b/140945323)
  • Data ma teraz lepszą equals() metodę. Obsługuje też deepEquals w przypadku typów Array. (b/140922528)
  • WorkManager przechowuje teraz wewnętrzną bazę danych i pliki preferencji w katalogu bez kopii zapasowej. (b/114808216)

Wersja 2.3.0-alpha01

22 sierpnia 2019 r.

Publikacja androidx.work:work-*:2.3.September 5, 20190-alpha01 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • ListenableWorker mogą teraz ustawiać postępy za pomocą interfejsu API setProgressAsync(). Dodaliśmy też odpowiedni interfejs API suspend-ing setProgress w przeglądarce CoroutineWorker oraz interfejs API setProgress w przeglądarce RxWorker, który zwraca Single<Void>. Dzięki tym nowym interfejsom API instancje robocze mogą przekazywać informacje o postępach za pomocą WorkInfo, który ma odpowiedni interfejs API getProgress. (b/79481554)
  • Data ma interfejs API containsKey(), którego można używać do sprawdzania, czy dane wejściowe do Workers mają klucze o oczekiwanym typie. (b/117136838)
  • Data można teraz serializować za pomocą Data.toByteArray()Data.fromByteArray(). Pamiętaj, że w przypadku Data nie ma gwarancji dotyczących obsługi wersji, więc nie należy go utrwalać ani używać do IPC między aplikacjami. Można ich bezpiecznie używać tylko w przypadku wielu procesów tej samej aplikacji.
  • Dodaliśmy możliwość określania InputMergerFactory za pomocą Configuration.setInputMergerFactory. (b/133273159)

Zmiany w interfejsie API

  • Jeśli WorkerFactory zwróci instancję ListenableWorker, która została wcześniej wywołana, WorkManager zgłosi instancję IllegalStateException. (b/139554406)
  • Aktualizacje dokumentacji dotyczące anulowania ListenableFutureonStopped() wywołania zwrotnego w usłudze ListenableWorker. (b/138413671)

Poprawki błędów

  • Procesor w trakcie przetwarzania ignoruje teraz elementy WorkRequest z ograniczeniem idle. Te żądania są teraz odbierane przez JobScheduler tylko wtedy, gdy urządzenie jest idle. (aosp/1089779)
  • TestScheduler w testach prawidłowo używa określonego parametru Executor w przypadku wewnętrznego wykonawcy zadań. (aosp/1090749)

Wersja 2.2.0

Wersja 2.2.0

15 sierpnia 2019 r.

Publikacja androidx.work:work-*:2.2.0 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Ta wersja jest identyczna z wersją androidx.work:work-*:2.2.0-rc01.

Ważne zmiany w wersji 2.2.0 w porównaniu z wersją 2.1.0

androidx.work:work-gcm:2.2.0 to nowy artefakt Mavena, który obsługuje używanie GCMNetworkManager jako harmonogramu, gdy Usługi Google Play są dostępne na poziomach interfejsu API <= 22. Jest to opcjonalna zależność, która pomaga w bardziej niezawodnym i wydajnym przetwarzaniu w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Google Play nie są dostępne, WorkManager będzie nadal używać AlarmManager na starszych urządzeniach.

Wersja 2.2.0-rc01

30 lipca 2019 r.

Publikacja androidx.work:work-*:2.2.0-rc01 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Naprawiliśmy błąd w implementacji AlarmManager, który powodował przedwczesne wyłączanie usługi i w rzadkich przypadkach skutkował RejectedExecutionException. (aosp/1092374) (b/138238197).
  • Dodaliśmy obejście problemu NullPointerException podczas korzystania z interfejsów API JobScheduler na niektórych urządzeniach. (aosp/1091020) (b/138364061), (b/138441699)

Wersja 2.2.0-beta02

19 lipca 2019 r.

Publikacja androidx.work:work-*:2.2.0-beta02 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Usunięto niezamierzoną zależność jacoco, która została wprowadzona w wersji 2.2.0-beta01.

Wersja 2.2.0-beta01

17 lipca 2019 r.

Publikacja androidx.work:work-*:2.2.0-beta01 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • androidx.work:work-gcm:2.2.0-beta01 to nowy artefakt Mavena, który obsługuje używanie GCMNetworkManager jako harmonogramu, gdy Usługi Google Play są dostępne na poziomach interfejsu API <= 22. Jest to opcjonalna zależność, która pomaga w bardziej niezawodnym i wydajnym przetwarzaniu w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Google Play nie są dostępne, WorkManager będzie nadal używać AlarmManager na starszych urządzeniach.

Poprawki błędów

  • Poprawka błędu IllegalArgumentException podczas śledzenia stanu sieci na tabletach Nvidia Shield K1. (aosp/1010188)

Wersja 2.1.0

Wersja 2.1.0

11 lipca 2019 r.

Publikacja androidx.work:work-*:2.1.0 Ta wersja jest identyczna z wersją androidx.work:work-*:2.1.0-rc01.

Ważne zmiany od wersji 2.0.1

  • work-runtime-ktx wymaga teraz Javy 8. Jeśli napotkasz jakieś problemy, możesz dodać do pliku build.gradle te informacje:kotlinOptions { jvmTarget = "1.8" }
  • Dodano inicjowanie na żądanie w przypadku biblioteki WorkManager, która będzie tworzona tylko wtedy, gdy będzie do niej odwołanie. b/127497100 Aby skonfigurować projekt pod kątem inicjowania na żądanie:
    1. Wyłącz automatyczny inicjator.
    2. Zaimplementuj Configuration.Provider w niestandardowym obiekcie Application.
    3. Zmień wszystkie odwołania do WorkManager.getInstance() na WorkManager.getInstance(Context). W ramach tej zmiany wycofaliśmy WorkManager.getInstance(). Zawsze bezpieczniej jest wywoływać nowy zamiennik WorkManager.getInstance(Context), nawet jeśli nie wykonujesz inicjowania na żądanie.
  • PeriodicWorkRequest obsługują teraz opóźnienia początkowe. Możesz użyć metody setInitialDelay na PeriodicWorkRequest.Builder, aby ustawić początkowe opóźnienie. b/111404867
  • Dodano możliwość przekazywania uprawnień co najmniej jednemu zarejestrowanemu WorkerFactory za pomocą DelegatingWorkerFactory. b/131435993
  • Dodano możliwość dostosowania Executor używanego przez WorkManagera do wszystkich wewnętrznych operacji za pomocą Configuration.Builder.setTaskExecutor.
  • Dodano możliwość tworzenia klas WorkerListenableWorker, które można testować jednostkowo, za pomocą elementów TestWorkerBuilderTestListenableWorkerBuilder w artefakcie work-testing.
    • Pamiętaj, że work-testing pobiera teraz język Kotlin jako zależność i domyślnie zawiera kilka rozszerzeń Kotlin.
  • Dodano liczbę prób uruchomienia do WorkInfo. b/127290461
  • Typy Data mogą teraz przechowywać i pobierać bajty oraz tablice bajtów. NIE zmienia to maksymalnego rozmiaru obiektów Data.
  • WorkManager zależy teraz od Room 2.1.0, co powinno rozwiązać niektóre problemy z bazą danych.

Wersja 2.1.0-rc01

27 czerwca 2019 r.

Publikacja androidx.work:work-*:2.1.0-rc01 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Naprawiliśmy błąd, który powodował awarię aplikacji podczas wykonywania zadań z JobScheduler w trakcie tworzenia kopii zapasowej b/135858602.

Wersja 2.1.0-beta02

20 czerwca 2019 r.

Publikacja androidx.work:work-*:2.1.0-beta02 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • TestListenableWorkerBuilder używa teraz prawidłowego znaku WorkerFactory podczas tworzenia instancji ListenableWorker. b/135275844
  • Naprawiliśmy błąd, który powodował dryf w oknach wykonywania WorkRequest z powodu śmierci procesu. b/135272196

Wersja 2.1.0-beta01

13 czerwca 2019 r.

Publikacja androidx.work:work-*:2.1.0-beta01 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • WorkManager zależy teraz od Room 2.1.0, co powinno rozwiązać niektóre problemy z bazą danych.
  • Usunięto niektóre operacje wejścia-wyjścia dysku startowego w wątku głównym.
  • Usunięto potencjalny zakleszczenie w śledzeniu ograniczeń. b/134361006
  • Wcześniejsze anulowanie nieprawidłowych zadań przypisanych do biblioteki WorkManager. b/134058261
  • Dodano kilka wywołań obronnych do interfejsów JobScheduler API w przypadku nieprawidłowo działających urządzeń.

Wersja 2.1.0-alpha03

5 czerwca 2019 r.

Publikacja androidx.work:*:2.1.0-alpha03

Poprawki błędów

  • Ulepszona dokumentacja PeriodicWorkRequest.
  • WorkManagerTestInitHelper używa teraz prawidłowego wykonawcy w tle do testów.
  • Rozwiązania problemów z SQLite podczas obsługi dużych transakcji na niektórych urządzeniach. (b/130182503)
  • Zależności WorkManagera są teraz bardziej szczegółowe. (b/133169148).
  • Obejście błędów specyficznych dla producenta OEM w implementacji JobScheduler podczas planowania zadań za pomocą biblioteki WorkManager.
  • Ulepszenia harmonogramu opartego na AlarmManager w zakresie czasu życia usługi, które wcześniej powodowały rzadkie awarie. (b/133313734)

Wersja 2.1.0-alpha02

16 maja 2019 r.

Opublikowaliśmy bibliotekę WorkManager w wersji 2.1.0-alpha02. Ta wersja zawiera kilka nowych interfejsów API.

Zmiany w interfejsie API

  • PeriodicWorkRequest obsługują teraz opóźnienia początkowe. Możesz użyć metody setInitialDelay na PeriodicWorkRequest.Builder, aby ustawić początkowe opóźnienie. b/111404867

  • Dodano możliwość przekazywania uprawnień co najmniej jednemu zarejestrowanemu WorkerFactory za pomocą DelegatingWorkerFactory. b/131435993

  • Dodano możliwość dostosowania Executor używanego przez WorkManagera do wszystkich wewnętrznych operacji za pomocą Configuration.Builder.setTaskExecutor.

  • Ulepszona dokumentacja dotycząca WorkRequest.keepResultsForAtLeast (b/130638001), inicjowania na żądanie i PeriodicWorkRequest.Builder (b/131711394).

Wersja 2.1.0-alpha01

24 kwietnia 2019 r.

Opublikowaliśmy bibliotekę WorkManager w wersji 2.1.0-alpha01. Ta wersja zawiera kilka nowych interfejsów API. Pamiętaj, że od tej wersji będą dostępne nowe funkcje, które nie zostaną przeniesione do wersji 1.x. Zalecamy przejście na wersję 2.x.

Zmiany w interfejsie API

  • Dodano inicjowanie na żądanie w przypadku biblioteki WorkManager, która będzie tworzona tylko wtedy, gdy będzie do niej odwołanie. b/127497100 Aby skonfigurować projekt pod kątem inicjowania na żądanie:
    1. Wyłącz automatyczny inicjator.
    2. Zaimplementuj Configuration.Provider w niestandardowym obiekcie Application.
    3. Zmień wszystkie odwołania do WorkManager.getInstance() na WorkManager.getInstance(Context). W ramach tej zmiany wycofaliśmy WorkManager.getInstance(). Zawsze bezpieczniej jest wywoływać nowy zamiennik WorkManager.getInstance(Context), nawet jeśli nie wykonujesz inicjowania na żądanie.
  • Dodano możliwość tworzenia klas WorkerListenableWorker, które można testować jednostkowo, za pomocą elementów TestWorkerBuilderTestListenableWorkerBuilder w artefakcie work-testing.
    • Pamiętaj, że work-testing pobiera teraz język Kotlin jako zależność, ale domyślnie zawiera też kilka rozszerzeń tego języka.
  • Dodano liczbę prób uruchomienia do WorkInfo. b/127290461
  • Typy Data mogą teraz przechowywać i pobierać bajty oraz tablice bajtów. NIE zmienia to maksymalnego rozmiaru obiektów Data.
  • Wycofano CoroutineWorker.coroutineContext. To pole zostało nieprawidłowo określone jako CoroutineDispatcher. Nie powinno być już potrzebne, ponieważ w treści funkcji zawieszającej możesz samodzielnie przejść do żądanego elementu coroutineContext.
  • RxWorker.createWork()RxWorker.getBackgroundScheduler() mają teraz adnotacje z typami zwracanych wartości @NonNull.

Wersja 2.0.1

Wersja 2.0.1

9 kwietnia 2019 r.

Opublikowaliśmy bibliotekę WorkManager w wersji 2.0.1. Ta wersja jest identyczna z wersją 2.0.1-rc01.

Wersja 2.0.1-rc01

3 kwietnia 2019 r.

Opublikowaliśmy WorkManager w wersji 2.0.1-rc01. Ta wersja zawiera kilka poprawek błędów. W przypadku użytkowników starszej wersji 1.x niektóre z tych zmian pojawiają się też w wersji 1.0.1-rc01.

Poprawki błędów

  • Testy Robolectric działają teraz prawidłowo z biblioteką WorkManager. b/122553577
  • Naprawiono błąd w przypadku brzegowym, w którym śledzenie ograniczeń nie było czyszczone w interfejsach API starszych niż JobScheduler. b/129226383
  • Naprawiono StackOverflowError dotyczący długich ciągów zadań. b/129091233
  • Zaktualizowano dokumentację PeriodicWorkRequest, aby wskazać, że elastyczny czas nie jest obsługiwany w przypadku interfejsu API 23.
  • Naprawiliśmy uszkodzone linki w dokumentacji Kotlin.

Wersja 2.0.0

Wersja 2.0.0

20 marca 2019 r.

Opublikowaliśmy bibliotekę WorkManager w wersji 2.0.0. Ta wersja jest identyczna z 2.0.0-rc01 i jest wersją AndroidX stabilnej wersji 1.0.0 z zależnościami AndroidX. Zalecamy kierowanie reklam na tę wersję zamiast na starsze wersje 1.x. Wszystkie aktywne prace rozwojowe będą dotyczyć wersji 2.x, a wersja 1.x będzie otrzymywać tylko krytyczne poprawki błędów przez ograniczony czas.

Wersja 2.0.0-rc01

7 marca 2019 r.

Opublikowaliśmy bibliotekę WorkManager w wersji 2.0.0-rc01. Ta wersja jest identyczna ze stabilną wersją 1.0.0, ale ma zależności AndroidX. Gdy osiągnie ona stabilną wersję 2.0.0, należy ją uwzględnić, a starsze wersje 1.x będą otrzymywać tylko najważniejsze poprawki błędów. Wszystkie aktywne prace rozwojowe będą dotyczyć wersji 2.x.

Zależności sprzed AndroidaX

Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz w dokumentacji KTX.
Dokumentacja referencyjna: Java

Groovy

dependencies {
    def work_version = "1.0.1"

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

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

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Kotlin

dependencies {
    val work_version = "1.0.1"

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

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

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

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

Wersja 1.0.1

Wersja 1.0.1

9 kwietnia 2019 r.

Opublikowaliśmy bibliotekę WorkManager w wersji 1.0.1. Ta wersja jest identyczna z wersją 1.0.1-rc01.

Pamiętaj, że zdecydowanie zachęcamy użytkowników do aktualizacji do WorkManagera w wersji 2.x, ponieważ w przyszłości gałąź 1.x będzie rzadko aktualizowana. W przypadku biblioteki w wersji 1.x nie będziemy też udostępniać nowych interfejsów API.

Wersja 1.0.1-rc01

2 kwietnia 2019 r.

Opublikowaliśmy wersję 1.0.1-rc01 biblioteki WorkManager. Ta wersja zawiera kilka poprawek błędów.

Poprawki błędów

  • Testy Robolectric działają teraz prawidłowo z biblioteką WorkManager. b/122553577
  • Naprawiono błąd w przypadku brzegowym, w którym śledzenie ograniczeń nie było czyszczone w interfejsach API starszych niż JobScheduler. b/129226383
  • Naprawiono StackOverflowError związaną z długimi ciągami zadań. b/129091233

Wersja 1.0.0

Wersja 1.0.0

5 marca 2019 r.

Jest to wersja stabilna 1.0.0 biblioteki WorkManager. Ta wersja biblioteki WorkManager jest identyczna z wersją 1.0.0-rc02.

Wersja 1.0.0-rc02

21 lutego 2019 r.

To druga wersja kandydująca do publikacji stabilnej wersji 1.0.0 biblioteki WorkManager. Ta wersja zawiera 2 poprawki błędów.

Poprawki błędów

  • Workers są teraz prawidłowo planowane po awarii aplikacji. b/124546316

  • Worker, które zgłaszają nieobsłużony wyjątek Exception, są teraz prawidłowo oznaczane jako FAILED i nie powodują już awarii procesu aplikacji.

Wersja 1.0.0-rc01

14 lutego 2019 r.

Jest to wersja kandydująca do publikacji stabilnej wersji 1.0.0 biblioteki WorkManager. Ta wersja zawiera 1 poprawkę błędu.

Poprawki błędów

  • Implementacja oparta na AlarmManagerze prawidłowo uwzględnia teraz flex okna w przypadku PeriodicWorkRequest. b/124274584

Wersja 1.0.0-beta05

6 lutego 2019 r.

Ta wersja zawiera poprawki błędów.

Poprawki błędów

  • Naprawiono problem z używaniem JobScheduler.getPendingJob(...) w interfejsie API 23. b/123893059
  • Naprawiono NullPointerException na urządzeniach z Androidem 5.1 (interfejs API na poziomie 22) lub starszym. b/123835104

Wersja 1.0.0-beta04

4 lutego 2019 r.

Ta wersja zawiera poprawki błędów.

Poprawki błędów

  • Ulepszono planowanie zadań PeriodicWork w przypadku implementacji opartej na AlarmManager.
  • Rozwiązaliśmy problem, który powodował, że WorkManager nie śledził prawidłowo ograniczeń podczas korzystania z implementacji opartej na AlarmManager. b/123379508
  • Rozwiązaliśmy problem polegający na tym, że WorkManager nie ponawiał pracy po śmierci procesu, gdy używana była implementacja oparta na AlarmManager. b/123329850
  • Rozwiązaliśmy problem, który powodował wyciek blokad wybudzania w WorkManagerze podczas korzystania z implementacji opartej na AlarmManagerze.

Wersja 1.0.0-beta03

25 stycznia 2019 r.

Ta wersja zawiera poprawki błędów.

Poprawki błędów

  • Wprowadziliśmy regresję 1.0.0-beta02, która w niektórych sytuacjach powodowała nieprawidłowe wykonywanie zadań. b/123211993
  • Rozwiązaliśmy problem polegający na tym, że w niektórych przypadkach zadania nie były wykonywane zgodnie z harmonogramem wycofywania. b/122881597
  • Naprawiono ConcurrentModificationException na urządzeniach z Androidem 5.1 (API) lub starszym. Jest to kontynuacja poprawki z 1.0.0-beta02. b/121345393
  • Dodaliśmy adnotację exported=false do niektórych komponentów w pliku manifestu, których jej brakowało.
  • Dodaliśmy do dokumentacji na poziomie pakietu informacje o tym, jak biblioteka WorkManager współdziała z systemem operacyjnym.

Wersja 1.0.0-beta02

15 stycznia 2019 r.

Ta wersja zawiera poprawki błędów.

Poprawki błędów

  • Naprawiono przypadek brzegowy, w którym zadanie okresowe mogło być wykonywane więcej niż raz w interwale na urządzeniach z Androidem 6.0 (poziom interfejsu API 23). b/121998363
  • Naprawiono ConcurrentModificationException na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/121345393
  • Naprawiono błędne wykonywanie zadań, gdy na urządzeniach z Androidem 5.1 (API na poziomie 22) lub starszym nie były spełnione ograniczenia. b/122578012
  • Zoptymalizowano obsługę zakończenia pracy, aby w niektórych przypadkach brzegowych była szybsza. b/122358129
  • Wprowadzono zmianę, która ma zapobiegać potencjalnym sytuacjom wyścigu między wieloma instancjami LiveData używanymi przez WorkManagera.
  • Zamiast 1.1.1-rc01 użyto zależności Room; te wersje są identyczne.b/1225780111.1.1

Wersja 1.0.0-beta01

19 grudnia 2018 r.

Ta wersja nie zawiera zmian w interfejsie API. W przyszłości WorkManager ma zachować stabilność interfejsu API do czasu wydania następnej wersji, chyba że wystąpi krytyczny problem. Ta wersja zawiera poprawki błędów.

Poprawki błędów

  • Wcześniej anulowane zadania podrzędne, które należą do pomyślnie zakończonych zadań nadrzędnych, nie będą już uruchamiane. b/120811767
  • Prawidłowo zainicjowane klasy rejestrowania (widoczne głównie podczas testów).

Wersja 1.0.0-alpha13

12 grudnia 2018 r.

Ta wersja zawiera niewielką zmianę w interfejsie API, która będzie przydatna dla niektórych użytkowników Kotlina.

Zmiany w interfejsie API

  • Klasa androidx.work.Result została przeniesiona i jest teraz klasą wewnętrzną klasy ListenableWorker. Zapobiega to konfliktom refaktoryzacji z klasą najwyższego poziomu Result w języku Kotlin. Jest to zmiana w interfejsie API, która powoduje niezgodność wsteczną. b/120564418

Zmiany w interfejsie API powodujące niezgodność

  • Klasa androidx.work.Result została przeniesiona i jest teraz klasą wewnętrzną klasy ListenableWorker.

Wersja 1.0.0-alpha12

5 grudnia 2018 r.

Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API powodujące niezgodność poniżej. Ta wersja prawdopodobnie zostanie udostępniona jako pierwsza wersja beta. alpha12 zawiera też obszerne aktualizacje dokumentacji.

Zmiany w interfejsie API

  • Nowy artefakt work-rxjava2 wprowadza RxWorker. Jest to ListenableWorker, która oczekuje Single<Payload>.
  • Obsługa Firebase JobDispatcher została usunięta ze względu na zbliżające się wycofanie tej usługi. Oznacza to, że artefakt work-firebase nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji.
  • Połączono PayloadResult. Result jest teraz „klasą zamkniętą” z 3 konkretnymi implementacjami, które można uzyskać za pomocą Result.success() (lub Result.success(Data)), Result.failure() (lub Result.failure(Data)) i Result.retry(). Twoje ListenableFuture teraz kosztuje Result zamiast Payload. Worker nie mają metod pobierających i ustawiających dla danych wyjściowych Data. Jest to zmiana powodująca niezgodność wsteczną.
  • Dodaliśmy warianty Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit), aby lepiej obsługiwać adresy URI treści z powolnym wyzwalaniem. b/119919774
  • Dodano wariant WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). Ta metoda wymaga interfejsu API w wersji 26.
  • Dodaliśmy metody rozszerzające Kotlin Operation.await()ListenableFuture.await().
  • Zmieniono nazwę Operation.getException() na Operation.getThrowable(). Jest to zmiana powodująca niezgodność.
  • Klasa ContentUriTriggers i metody, które się do niej odwołują, nie są już dostępne do użytku publicznego. Jest to zmiana powodująca niezgodność wsteczną.
  • Aby uprościć interfejs API, usunęliśmy pozostałe metody varargs w WorkManager, WorkContinuationOneTimeWorkRequest. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty varargs za pomocą funkcji Arrays.asList(...). Nadal uwzględniamy wersje każdej metody z 1 argumentem. Jest to zmiana powodująca niezgodność.
  • Usunięto WorkContinuation.combine(OneTimeWorkRequest, *) wariantów. Prezentowali niejasny interfejs API, a obecne metody combine są bardziej zrozumiałe. Jest to zmiana powodująca niezgodność wsteczną.

Poprawki błędów

  • Implementacje starsze niż Marshmallow są teraz bardziej niezawodne w przywracaniu działania po śmierci procesu już wykonywanego zadania.
  • LiveData, które jest obserwowane za pomocą observeForever, jest śledzone za pomocą WorkManagera. Jest to przeniesienie poprawki z biblioteki Room. b/74477406
  • Data.Builder.build() zgłasza teraz wyjątek, jeśli serializowany obiekt przekracza maksymalny rozmiar. Wcześniej zdarzało się to tylko w wątku w tle, w którym nie można było prawidłowo obsłużyć tego zdarzenia.
  • Dalsze rozróżnienie między zatrzymaną a anulowaną pracą: getWorkInfoById() zwróci WorkInfoCANCELLED State podczas ListenableWorker.onStopped().
  • Traktuj null Result jako błędy w ListenableWorker. b/120362353
  • Spekulatywna poprawka dla tabletów Shield z interfejsem API 24, które czasami zgłaszały błąd IllegalArgumentException. b/119484416

Zmiany w interfejsie API powodujące niezgodność

  • Obsługa Firebase JobDispatcher została usunięta ze względu na zbliżające się wycofanie tej usługi. Oznacza to, że artefakt work-firebase nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji.
  • Połączono PayloadResult. Result jest teraz „klasą zamkniętą” z 3 konkretnymi implementacjami, które można uzyskać za pomocą Result.success() (lub Result.success(Data)), Result.failure() (lub Result.failure(Data)) i Result.retry(). Twoje ListenableFuture teraz kosztuje Result zamiast Payload. Worker nie mają metod pobierania i ustawiania danych wyjściowych Data.
  • Dodaliśmy metody rozszerzające Kotlin Operation.await()ListenableFuture.await().
  • Zmieniono nazwę Operation.getException() na Operation.getThrowable().
  • Klasa ContentUriTriggers i metody, które się do niej odwołują, nie są już dostępne do użytku publicznego.
  • Aby uprościć interfejs API, usunęliśmy pozostałe metody varargs w WorkManager, WorkContinuationOneTimeWorkRequest. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty zmienne funkcją Arrays.asList(...). Nadal uwzględniamy wersje każdej metody z 1 argumentem.
  • Usunięto WorkContinuation.combine(OneTimeWorkRequest, *) wariantów. Przedstawili niejasny interfejs API. Obecne metody combine są bardziej zrozumiałe.

Wersja 1.0.0-alpha11

8 listopada 2018 r.

Ta wersja zawiera wiele zmian, które staną się stabilnym interfejsem API w beta. Ta wersja zawiera zmiany w interfejsie API, które powodują niezgodność. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API powodujące niezgodność poniżej.

Zmiany w interfejsie API

  • work-runtime-ktx wprowadza nowy CoroutineWorker.
  • Nazwa WorkStatus została zmieniona na WorkInfo. Wszystkie powiązane warianty metody getStatus zostały zmienione na powiązane warianty getWorkInfo. Jest to zmiana powodująca niezgodność wsteczną.
  • ListenableWorker.onStopped() nie akceptuje już argumentu logicznego wskazującego, czy WorkRequest zostało anulowane. WorkManager nie rozróżnia już tych przypadków. Jest to zmiana powodująca niezgodność.
  • Pakiet androidx.work.test zmienił nazwę na androidx.work.testing. Jest to zmiana powodująca niezgodność.
  • Funkcje ustawiające w Constraints nie są już częścią publicznego interfejsu API. Jest to zmiana powodująca niezgodność.
  • Funkcje WorkerParameters.getTriggeredContentUris()WorkerParameters.getTriggeredContentAuthorities() zwracały wcześniej tablice. Obecnie te metody zwracają kolekcje. Jest to zmiana powodująca niezgodność wsteczną.
  • Nazwa ListenableWorker.onStartWork() została zmieniona na ListenableWorker.startWork(). Jest to zmiana powodująca niezgodność wsteczną.
  • Konstruktor WorkStatus nie jest już częścią publicznego interfejsu API. Jest to zmiana powodująca niezgodność wsteczną.
  • Nazwy Configuration.getMaxJobSchedulerID()Configuration.getMinJobSchedulerID() zostaną zmienione odpowiednio na Configuration.getMinJobSchedulerId()Configuration.getMaxJobSchedulerId(). Jest to zmiana powodująca niezgodność wsteczną.
  • Dodaliśmy do publicznego interfejsu API wiele adnotacji @NonNull, aby zwiększyć jego ergonomię.
  • Dodano interfejs WorkManager.enqueueUniqueWork() API, który umożliwia umieszczanie w kolejce unikalnych OneTimeWorkRequest bez konieczności tworzenia WorkContinuation.
  • Wszystkie warianty metod enqueuecancelWorkManager zwracają teraz nowy typ Operation. Jest to zmiana powodująca niezgodność wsteczną.
  • Wszystkie warianty enqueue nie akceptują już argumentów varargs dla WorkRequests. Jest to zmiana powodująca niezgodność wsteczną. Zamiast tego używaj kolekcji. Możesz użyć Arrays.asList(), aby zmodyfikować istniejący kod. Zrobiliśmy to, aby zmniejszyć powierzchnię interfejsu API i liczbę metod.
  • Próba initialize WorkManager więcej niż raz w ramach jednego procesu spowoduje teraz wystąpienie IllegalStateException. Jest to zmiana powodująca niezgodność.

Poprawki błędów

  • WorkRequest.Builder w artefakcie work-runtime-ktx używają teraz ListenableWorker. Poprawki b/117666259
  • Upewnij się, że czas następnego uruchomienia dla PeriodicWork przypada w przyszłości. Poprawki b/118204399
  • Usuń potencjalne operacje wejścia/wyjścia dysku podczas korzystania z WorkManager przy uruchamianiu aplikacji. Poprawki b/117796731
  • Napraw sytuację wyścigu w WorkConstraintsTracker. Rozwiązuje problem android-workmanager/issues/56

Zmiany w interfejsie API powodujące niezgodność

  • Nazwa WorkStatus została zmieniona na WorkInfo. Wszystkie powiązane warianty metody getStatus zostały zmienione na powiązane warianty getWorkInfo.
  • ListenableWorker.onStopped() nie akceptuje już argumentu logicznego wskazującego, czy WorkRequest zostało anulowane. WorkManager nie rozróżnia już tych przypadków.
  • Pakiet androidx.work.test zmienił nazwę na androidx.work.testing.
  • Funkcje ustawiające w Constraints nie są już częścią publicznego interfejsu API.
  • Funkcje WorkerParameters.getTriggeredContentUris()WorkerParameters.getTriggeredContentAuthorities() zwracały wcześniej tablice. Obecnie te metody zwracają kolekcje.
  • Nazwa ListenableWorker.onStartWork() została zmieniona na ListenableWorker.startWork().
  • Konstruktor WorkStatus nie jest już częścią publicznego interfejsu API.
  • Nazwy Configuration.getMaxJobSchedulerID()Configuration.getMinJobSchedulerID() zostaną zmienione odpowiednio na Configuration.getMinJobSchedulerId()Configuration.getMaxJobSchedulerId().
  • Wszystkie warianty metod enqueuecancelWorkManager zwracają teraz nowy typ Operation.
  • Wszystkie warianty enqueue nie akceptują już argumentów varargs dla WorkRequests.
  • Próba initialize WorkManager więcej niż raz w ramach jednego procesu spowoduje teraz wystąpienie IllegalStateException.

Wersja 1.0.0-alpha10

11 października 2018 r.

Ta wersja obsługuje asynchroniczną pracę kontrolowaną przez dewelopera. Ta wersja zawiera zmiany w interfejsie API, które powodują niezgodność. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API powodujące niezgodność poniżej.

Spodziewamy się, że WorkManager wchodzi w ostatnie fazy okresu alfa. W wersji beta interfejs API powinien być stabilny, dlatego poświęć trochę czasu na przesłanie opinii w naszym narzędziu do śledzenia problemów.

Zmiany w interfejsie API

  • Usunięto wszystkie poprzednie metody i klasy deprecated, w tym domyślny konstruktor Worker. Jest to zmiana interfejsu API powodująca niezgodność wsteczną.
  • Zmieniono nazwę NonBlockingWorker na ListenableWorker. Jest to teraz nieukryta klasa publiczna gotowa do użycia.
    • ListenableWorker zapewnia dostęp do jednej metody abstrakcyjnej, ListenableFuture<Payload> onStartWork(), która jest wywoływana w głównym wątku. To Ty decydujesz, kiedy rozpocząć i przetworzyć pracę asynchronicznie. Po zakończeniu odpowiednio zaktualizuj ListenableFuture. Implementacje referencyjne ListenableFuture są dostępne w pakiecie Futuresalpha02 (patrz sekcja WorkManager poniżej).
    • Worker rozszerza ListenableWorker i nadal działa jak wcześniej, z abstrakcyjną metodą Result doWork().
    • Przeniesiono niektóre metody i elementy z Worker do ListenableWorker.
    • Wkrótce udostępnimy implementacje referencyjne ListenableWorker, które korzystają z korutyn w Kotlinie (gdy zostaną wydane stabilne wersje) i RxJava2.
  • Interfejs WorkerFactory i konkretna implementacja DefaultWorkerFactory zostały scalone w klasę abstrakcyjną o nazwie WorkerFactory. Implementacja zapewnia, że domyślne działanie oparte na odbiciu jest wywoływane jako ostatnia próba w przypadku wszystkich instancji WorkerFactory utworzonych przez użytkownika. Jest to zmiana powodująca niezgodność.
  • Usunęliśmy WorkManager.synchronous() i WorkContinuation.synchronous() oraz wszystkie powiązane metody. Dodano ListenableFuture<Void> jako zwracany typ wielu metod w interfejsie API. Jest to zmiana interfejsu API powodująca niezgodność wsteczną.
    • Możesz teraz synchronicznie pobierać i obserwować dane za pomocą ListenableFuture. Na przykład WorkManager.enqueue() zwracało void, a teraz zwraca ListenableFuture<Void>. Po zakończeniu operacji możesz wywołać funkcję ListenableFuture.addListener(Runnable, Executor) lub ListenableFuture.get(), aby uruchomić kod.
    • Pamiętaj, że te ListenableFuture nie informują, czy operacja zakończyła się powodzeniem, czy niepowodzeniem, tylko że została zakończona. Aby uzyskać te informacje, nadal musisz łączyć metody WorkManagera.
    • Ignorujemy wywołania cancel() w przypadku tych obiektów, ponieważ są one mylące i trudno je interpretować (czy anulujesz operację, czy wynikającą z niej pracę?). Jest to zgodne z umową Future.
    • Aby zachować spójność z synchronicznymi metodami getStatus*, udostępniliśmy warianty ListenableFuture i zmieniliśmy nazwy istniejących metod, które zwracały LiveData, tak aby zawierały w nazwie słowo „LiveData” (np. getStatusesByIdLiveData(UUID)). Jest to zmiana interfejsu API powodująca niezgodność wsteczną.

Poprawki błędów

  • Rozwiązaliśmy znany problem z wersji alpha09 dotyczący zduplikowanych plików androidx-annotations.pro. Możesz usunąć obejście z poprzednich informacji o wersji, usuwając exclude 'META-INF/proguard/androidx-annotations.pro' z pliku Gradle.
  • Dodano konfiguracje ProGuard, aby zachować nowy konstruktor Worker. b/116296569
  • Rozwiązanie potencjalnego NullPointerException w sytuacji wyścigu, w której zadanie zostało REPLACEd. b/116253486b/116677275
  • WorkContinuation.combine() akceptuje teraz co najmniej 1 WorkContinuation zamiast co najmniej 2. b/117266752

Zmiany w interfejsie API powodujące niezgodność

  • Usunięto wszystkie poprzednie metody i klasy deprecated, w tym domyślny konstruktor Worker.
  • Interfejs WorkerFactory i konkretna implementacja DefaultWorkerFactory zostały scalone w klasę abstrakcyjną o nazwie WorkerFactory.
  • Usunięto WorkManager.synchronous()WorkContinuation.synchronous().
  • Metody WorkManager.getStatus*() zwracają teraz obiekty ListenableFuture. WorkManager.getStatus*LiveData() zwraca LiveData.

Wersja 1.0.0-alpha09

19 września 2018 r.

Znany problem

Jeśli napotkasz problem „Znaleziono więcej niż 1 plik ze ścieżką niezależną od systemu operacyjnego »META-INF/proguard/androidx-annotations.pro«”, w pliku Gradle umieść tymczasowe obejście, dopóki nie rozwiążemy tego problemu w wersji alpha10:

Groovy

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

Poprawki błędów

  • Dodano kolejną poprawkę, która była potrzebna w przypadku błędu „100 zadań”. b/115560696
  • Dodaliśmy kilka poprawek błędów ograniczeń klucza obcego spowodowanych warunkami wyścigu. b/114705286
  • Przekazane wywołania ConstraintTrackingWorker.onStopped(boolean) do bazowego Worker. b/114125093
  • Wymuszanie prawidłowego minimalnego opóźnienia wycofywania w przypadku Firebase JobDispatcher. b/113304626
  • Ulepszone gwarancje wątków w bibliotece.
  • Rozwiązanie potencjalnego problemu z wewnętrznym usuwaniem duplikatów LiveData.

Zmiany w interfejsie API

  • Teraz możesz tworzyć własne instancje Worker w czasie działania, określając WorkerFactory w ramach WorkManager.Configuration. Fabryka rezerwowa to DefaultWorkerFactory, która odpowiada działaniu poprzednich wersji biblioteki WorkManager.
    • Konstruktory domyślne dla klas Worker i NonBlockingWorker są teraz oznaczone jako wycofane. Używaj nowego konstruktora (Worker(Context, WorkerParameters)) i wywołuj super(Context, WorkerParameters). W przyszłych wersjach WorkManagera domyślny konstruktor zostanie usunięty.
  • Zaczęliśmy wewnętrznie używać nowego artefaktu ListenableFuture (bez zależności od Guavy). W przyszłych wersjach interfejsu API wprowadzimy ListenableFutures. Ta zmiana umożliwi ostateczne odkrycie NonBlockingWorker.
  • Dodano możliwość wywoływania pracy w określonym czasie w TestDriver za pomocą TestDriver.setInitialDelayMet(UUID)TestDriver.setPeriodDelayMet(UUID). b/113360060

Zmiany powodujące niezgodność

  • Domyślne konstruktory WorkerNonBlockingWorker zostały wycofane. Jak najszybciej przejdź na nowy konstruktor. W przyszłych wersjach konstruktor domyślny zostanie usunięty.

Wersja 1.0.0-alpha08

27 sierpnia 2018 r.

Poprawki błędów

  • Wyraźnie oznaczono komponenty WorkManager jako nieobsługujące bezpośredniego uruchamiania, aby nie były uruchamiane podczas bezpośredniego uruchamiania. W przyszłości udostępnimy wersję WorkManagera, która będzie obsługiwać bezpośrednie uruchamianie. b/112665532
  • Rozwiązaliśmy problem, który powodował, że ponowione zadania nie były wykonywane. b/112604021
  • Rozwiązanie problemu polegającego na tym, że zadania okresowe nie były wykonywane wielokrotnie (związane z powyższym problemem). b/112859683
  • Przestrzeganie zasad wycofywania, gdy proces aplikacji jest już uruchomiony.
  • Poprawione komunikaty o wyjątkach w Data, aby wskazywać, że limit wynosi 10 KB.
  • Obniżono maksymalną wartość Configuration.setMaxSchedulerLimit(int) do 50, aby uwzględnić opóźnienie w przetwarzaniu JobScheduler. b/112817355

Wersja 1.0.0-alpha07

16 sierpnia 2018 r.

Poprawki błędów

  • Naprawiono potencjalne zapytanie SQL z ujemnymi limitami, które mogło zwracać nieograniczoną liczbę wyników.
  • Zakończone zadania prawidłowo anulują teraz wszystkie oczekujące kopie tych zadań w innych harmonogramach. Spowodowało to przekroczenie limitu JobScheduler zadań. b/111569265
  • Naprawiono ConcurrentModificationExceptionConstraintTracker. b/112272753
  • Zmieniono adnotacje zwracanego typu w przypadku funkcji Data.getBooleanArray(String)Data.getIntArray(String) na @Nullable zamiast @NonNull. b/112275229

Zmiany w interfejsie API

  • Worker oferuje teraz nowe zajęcia NonBlockingWorker. Nie ma to wpływu na bieżące wykorzystanie. W przyszłości NonBlockingWorker będzie w pełni obsługiwanym elementem w przypadku niestandardowych rozwiązań dotyczących wątków.
  • Zmieniono adnotacje typu zwracanego w przypadku Data.getBooleanArray(String)Data.getIntArray(String) na @Nullable zamiast @NonNull. b/112275229
  • Rozszerzenia Kotlin: wycofano Map.toWorkData() i dodano workDataOf(vararg Pair<String, Any?>) najwyższego poziomu, aby zachować większą spójność z dotychczasowymi interfejsami API.

Wersja 1.0.0-alpha06

1 sierpnia 2018 r.

Poprawki błędów

  • Zapobieganie blokowaniu bazy danych podczas planowania pracy. b/111801342
  • Naprawiliśmy błąd, który powodował, że funkcja PeriodicWork nie działała zgodnie z harmonogramem w trybie uśpienia. b/111469837
  • Naprawiono sytuację wyścigu podczas śledzenia ograniczeń, która powodowała awarię WorkManager. googlecodelabs/android-workmanager/issues/56
  • Podczas korzystania z WorkRequest.Builder#build() twórz unikalne WorkRequest. b/111408337
  • Włącz korzystanie z funkcji RescheduleReceiver tylko wtedy, gdy są WorkRequest, które jej potrzebują. b/111765853

Wersja 1.0.0-alpha05

24 lipca 2018 r.

Zmiany w interfejsie API

  • WorkManager.getInstance() jest teraz oznaczony adnotacją @NonNull zamiast @Nullable. Jeśli w przypadku ręcznej inicjalizacji pojedyncza instancja nie zostanie prawidłowo zainicjowana, metoda zgłosi wyjątek IllegalStateException. Jest to zmiana interfejsu API powodująca niezgodność wsteczną.
  • Dodaliśmy nowy interfejs API Configuration.Builder.setMinimumLoggingLevel(int), który może kontrolować szczegółowość WorkManagera. Domyślnie WorkManager rejestruje logi na poziomie Log.INFO i wyższym.
  • Zmieniono sygnaturę funkcji Data.getString(), aby nie przyjmowała już wartości domyślnej (jest ona niejawnie równa null). Jest to zmiana w interfejsie API, która może powodować problemy z kompatybilnością.
  • Oznaczono niektóre metody potrzebne tylko do użytku wewnętrznego jako @hide. Obejmuje to konstruktor Constraints, Data.toByteArray() i Data.fromByteArray(byte[]). Jest to zmiana interfejsu API powodująca niezgodność wsteczną.

Poprawki błędów

  • Biblioteka WorkManager nie wykonuje już zadań w znanych przypadkach automatycznej kopii zapasowej. Mogło to spowodować awarię. b/110564377
  • Rozwiązaliśmy problem z podwójnym planowaniem PeriodicWorkRequest podczas korzystania z JobScheduler. b/110798652
  • Rozwiązaliśmy problem z nieprawidłowym wykonywaniem PeriodicWorkRequest po przejściu urządzenia w stan uśpienia. b/111469837
  • Rozwiązaliśmy problem z początkowymi opóźnieniami podczas korzystania z Firebase JobDispatcher. b/111141023
  • Usunęliśmy potencjalne problemy z sytuacją wyścigu i synchronizacją.
  • Prawidłowo zwolniono BroadcastReceiver, które nie były już potrzebne.
  • Zoptymalizowana wydajność ponownego planowania, gdy aplikacje są ponownie uruchamiane po wymuszeniu zamknięcia.
  • Może być wywoływana przed lub po dodaniu do kolejki danego elementu WorkRequest.TestScheduler.setAllConstraintsMet(UUID) b/111238024

Zmiany powodujące niezgodność

  • WorkManager.getInstance() jest teraz oznaczony adnotacją @NonNull zamiast @Nullable.
  • Zmieniono sygnaturę funkcji Data.getString(), aby nie przyjmowała już wartości domyślnej (jest ona niejawnie równa null).
  • Oznaczono niektóre metody potrzebne tylko do użytku wewnętrznego jako @hide. Obejmuje to konstruktor Constraints, Data.toByteArray() i Data.fromByteArray(byte[]).

Wersja 1.0.0-alpha04

26 czerwca 2018 r.

Poprawki błędów

  • PeriodicWorkRequest są teraz prawidłowo planowane na nowo w przypadku korzystania z implementacji opartej na AlarmManager.
  • Naprawiono potencjalny błąd ANR podczas ponownego planowania wszystkich procesów roboczych po wymuszonym zatrzymaniu lub ponownym uruchomieniu. b/110507716
  • Dodano adnotacje o dopuszczalności wartości null w różnych interfejsach API WorkManager. b/110344065
  • Loguj niewykryte wyjątki, które występują podczas wykonywania procesu roboczego. b/109900862
  • Zezwolenie na destrukcyjne migracje bazy danych w przypadku decyzji o wycofaniu zmian do starszej wersji WorkManagera. b/74633270
  • Rozwiązaliśmy problem z błędem migracji, który występował podczas tworzenia zduplikowanych tagów domyślnych. Jest to bardzo rzadki problem, który wystąpił tylko wtedy, gdy używasz tego samego formatu tagu niejawnego.

Wersja 1.0.0-alpha03

19 czerwca 2018 r.

Poprawki błędów

  • Usunięto sytuację wyścigu w implementacji opartej na AlarmManager. b/80346526

  • Rozwiązaliśmy problem z duplikowaniem zadań podczas korzystania z JobScheduler po ponownym uruchomieniu urządzenia.

  • Zadania z wyzwalaczami identyfikatora URI treści są teraz zachowywane po ponownym uruchomieniu. b/80234744

  • Aktualizacje dokumentacji: b/109827628, b/109758949, b/80230748

  • Naprawiliśmy awarię, która występowała podczas ponownego umieszczania w kolejce elementu WorkRequest. b/109572353.

  • Rozwiązaliśmy problem z ostrzeżeniami kompilatora Kotlin podczas korzystania z zależności work-runtime-ktx.

  • WorkManager korzysta teraz z Room w wersji 1.1.1-rc1.

Zmiany w interfejsie API

  • Dodano getStatusesSync(), synchroniczną wersję funkcji WorkContinuation.getStatuses().
  • Worker potrafi odróżnić anulowanie zainicjowane przez użytkownika od tymczasowego zatrzymania na żądanie systemu operacyjnego. Worker.isStopped() zwraca true, jeśli zażądano jakiegokolwiek rodzaju zatrzymania. Worker.isCancelled() zwraca wartość true, gdy zadanie zostało wyraźnie anulowane. b/79632247
  • Dodano obsługę JobParameters#getNetwork() w interfejsie API w wersji 28. Jest to udostępniane za pomocą Worker.getNetwork().
  • Dodano parametr Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit), aby można było określić, ile zadań można wysłać do usług JobScheduler lub AlarmManager. Zapobiega to zajmowaniu przez WorkManager wszystkich dostępnych miejsc na JobScheduler.
  • Dodano parametr Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), który pomaga określić zakres identyfikatorów zadań JobScheduler bezpiecznych do użycia przez WorkManager. b/79996760
  • Worker.getRunAttemptCount() zwraca bieżącą liczbę uruchomień danego Worker. b/79716516
  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) umożliwia umieszczanie w kolejce unikalnych PeriodicWorkRequest. b/79600647
  • WorkManager.cancelAllWork() anuluje wszystkie Worker. Biblioteki, które zależą od WorkManager, mogą sprawdzać, kiedy ta metoda została wywołana po raz ostatni, za pomocą WorkManager.getLastCancelAllTimeMillis(), aby dodatkowo wyczyścić stan wewnętrzny.
  • Dodano WorkManager.pruneWork(), aby usuwać ukończone zadania z wewnętrznej bazy danych. b/79950952, b/109710758

Zmiany w zachowaniu

  • Dodano tag domyślny dla wszystkich WorkRequest, czyli pełną i jednoznaczną nazwę klasy Worker. Umożliwia to usuwanie WorkRequest bez tag lub gdy id jest niedostępny. b/109572351

Zmiany powodujące niezgodność

  • Zmieniono nazwę Worker.WorkerResult na Worker.Result.
  • Worker.onStopped ma teraz dodatkowy parametr isCancelled, który jest ustawiony na true, gdy Worker został wyraźnie anulowany.

Wersja 1.0.0-alpha02

24 maja 2018 r.

Poprawki błędów

  • Naprawiono NullPointerException na stronie State.isFinished(). b/79550068
  • Rozwiązaliśmy problem, który powodował zmianę terminu Worker na Application.onCreate(). b/79660657
  • Rozwiązaliśmy problem, który umożliwiał zaplanowanie większej ilości pracy niż dozwolona przez system operacyjny. b/79497378
  • Przeniesiono czyszczenie blokad uśpienia powiązanych z Worker na wątek w tle.
  • Implementacja AlarmManager teraz prawidłowo czyści dane po zakończeniu wszystkich oczekujących zadań.
  • Naprawiono zapytania SQL dotyczące czyszczenia, które miały wpływ na ustawienia regionalne inne niż angielskie. b/80065360
  • Dodaliśmy obsługę floatData. b/79443878
  • Data.Builder.putAll() zwraca teraz instancję Builder. b/79699162
  • Więcej komentarzy javadoc i poprawek w dokumentacji. b/79691663

Zmiany w interfejsie API

  • Worker mogą reagować na zatrzymanie. Za pomocą Worker.isStopped() możesz sprawdzić, czy Worker został zatrzymany. Worker.onStopped() można używać do wykonywania prostych operacji czyszczenia.
  • Interfejs Worker.getTags() API zwraca Set tagów powiązanych z Worker.
  • Dodano przeciążenia javax.time.Duration dla interfejsów API, które przyjmują kombinację czasu trwania i TimeUnit. Jest ona chroniona przez @RequiresApi(26).
  • WorkManager rozszerzenia zostały przeniesione z pakietu androidx.work.ktx do pakietu androidx.work. Stare rozszerzenia zostały wycofane i zostaną usunięte w przyszłej wersji.
  • Środowisko wykonawcze Configuration.withExecutor() zostało wycofane. Użyj w zamian zasady Configuration.setExecutor().

Wersja 1.0.0-alpha01

8 maja 2018 r.

WorkManager upraszcza planowanie i wykonywanie gwarantowanej pracy w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01.