WorkManager
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja Alfa | 
|---|---|---|---|---|
| 22 października 2025 r. | 2.11.0 | - | - | - | 
Deklarowanie zależności
Aby dodać zależność od WorkManagera, musisz dodać repozytorium Google Maven do projektu:
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Odlotowe
dependencies { def work_version = "2.11.0" // (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.0" // (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 dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.11
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:
- minSdkzostał zaktualizowany z interfejsu API 21 do interfejsu API 23.
- Interfejs API setRemoteSessionTimeoutMillisw Kreatorze konfiguracjiWorkManagerzostał dodany, aby umożliwić skonfigurowanie czasu, przez jaki sesjaRemoteWorkManagerjest 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
- Dodaj stopRunningWorkWithReasondoWorkManagerTestDriver. (Ie53b2, b/439955564)
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 korutyny (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 działanie. (Ie2dc7, b/335513480)
- Dodano testowy interfejs API, aby przekazywać do TestListenableWorkerBuilderinną klasę roboczą niż ta, która jest tworzona na potrzeby niestandardowych implementacjiWorkerFactory(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 instancji roboczych z żądaniami sieciowymi i domyślnymi funkcjami, który powodował ponowne dodawanie usuniętych funkcji, co prowadziło do nieprawidłowego działania instancji roboczych z ograniczeniami sieciowymi. (b/409716532)
- Rozwiązaliśmy problem, który powodował, że instancje robocze z ograniczeniami sieciowymi nie wykonywały zadań od razu, ponieważ ograniczenia nie były spełnione, 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 TooManyRequestsExceptionzostanie usunięty z rejestracjiWorkManagerwNetworkCallbackuż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, co znacznie ułatwia zrozumienie polecenia „adb shell dumpsys jobscheduler”, ponieważ będzie ono zawierać nazwę wykonywanego procesu roboczego. Sekcje śledzenia są też dodawane w pobliżu kluczowych obszarówWorkManager.
- Do elementu Configuration.workerCoroutineContextdodano kontrolę nad dyspozytorem, w którym wykonywany jest elementCoroutineWorker.
- Deweloperzy mogą określić NetworkRequestjako ograniczenie dla instancji roboczej za pomocą metodyConstraints.setRequiredNetworkRequest. Umożliwia to bardziej szczegółową kontrolę nad tym, w której sieci ma działać instancja robocza.
- WorkManagerWersja 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 proces roboczy 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, co znacznie ułatwia zrozumienie polecenia „adb shell dumpsys jobscheduler”, ponieważ będzie ono zawierać nazwę wykonywanego procesu roboczego. Sekcje śledzenia są też dodawane w pobliżu kluczowych obszarówWorkManager.
Zmiany w interfejsie API
- WorkManager w wersji 2.10.0 jest teraz kompilowany 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 WorkManagernie 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órymWorkerjest powiązany podczas korzystania zWorkerFactory. (Ibdc8a, Ie8a90, I7373f)
Poprawki błędów
- Naprawiono awarię spowodowaną przez WorkManagerpróbę ponownego uruchomienia długotrwałego procesu (np. procesu na pierwszym planie), gdy typ procesu na pierwszym planie miał wymagane w Androidzie 14 uprawnienia, które zostały cofnięte. (b/333957914)
- Usunęliśmy ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
Wersja 2.10.0-alpha02
17 kwietnia 2024 r.
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 @RestrictToTracerwWorkManager. (I17d7f, b/260214125)
- Do elementu Configuration.workerCoroutineContextdodano kontrolę nad dyspozytorem, w którym wykonywany jest elementCoroutineWorker. Pomaga to całkowicie uniknąć używania znakuDispatchers.DefaultwWorkManager. (Icd1b7)
- Dodawanie niestandardowych modułów obsługi wyjątków w przypadku Workers (Ib1b74, b/261190695)
- OneTimeWorkRequest.Builderi- PeriodicWorkRequest.Buildermożna teraz tworzyć za pomocą- KClasszamiast- Class:- val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6)
- Klasa WorkManagerzostała przeniesiona do języka Kotlin. Metody zwracająceLiveData,ListenableFuturelubFlowpodają teraz prawidłowe informacje o możliwości wystąpienia wartości null. Może to wymagać zmian w kodzie źródłowym klientów, jeśli założenia dotyczące możliwości przyjmowania 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ć NetworkRequestjako ograniczenie dla instancji roboczej za pomocą metodyConstraints.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 NetworkRequestjako 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 awarię spowodowaną przez WorkManagerpróbę ponownego uruchomienia długotrwałego procesu roboczego (np. procesu roboczego na pierwszym planie), gdy typ pracy 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. ZamiastLiveDatapostęp pracownika można teraz obserwować za pomocą przepływuWorkManager.getWorkInfosFlowi podobnych metod.
- Teraz WorkManagerpodaje wskazówkę, dlaczego pracownik został wcześniej zatrzymany. Można o nią zapytać z poziomu samego pracownika za pomocą metodygetStopReason()lub z poziomuWorkInfoza pomocą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 zaawansowanych funkcji, 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.UPDATEnależy używać w połączeniu z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu roboczego podczas planowania następnego.
- Testowanie WorkManagera z wątkami pasującymi do wersji produkcyjnej. ExecutorsMode.PRESERVE_EXECUTORSmożna używać winitializeTestWorkManager, aby zachować wykonawców ustawionych wConfigurationi 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
- Użytkownik stopReasonzostał dodany do grupyWorkInfo. Udostępnia wartośćstopReasonpo uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReasonw użyteczny sposób, ponieważ po zatrzymaniu procesu roboczego aplikacja może zostać bardzo szybko zamknięta. (I21386)
- Zezwalaj na ustawianie wartości Clockza pomocą konfiguracji i używanie jej do określania kolejności wykonywania testów Worker. (Ic586e)
- Do ListenableWorkerdodano 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 WorkInfojest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335)
- work-runtime-ktxjest teraz pusta, a- CoroutineWorkeri 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).
- Dodano getNextScheduleTimeMillis, aby uzyskać informacje o zaplanowanym czasie działania, doWorkInfo. (I797e4)
- Do elementu WorkInfododawane 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ściConstraints. Są one teraz zgodne z odpowiednimi adnotacjami w metodach ustawiających wConstraints.Builder, które istniały od wczesnych wersjiWorkManager. (I6d7d2)
- WorkManagerma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca w- JobScheduleri zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować za pomocą- Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
- Do WorkInfododano 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
- Dodano stałe wartości dla przyczyn zatrzymania zwracanych przez WorkInfo.stopReasoniListenableWorker.stopReason(I0cc00)
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 WorkManagerpodaje wskazówkę, dlaczego pracownik został wcześniej zatrzymany. Można go wysłać z samego pracownika za pomocą metodygetStopReason()lub zWorkInfoza pomocągetStopReason().
Zmiany w interfejsie API
- Użytkownik stopReasonzostał dodany do grupyWorkInfo. UdostępniastopReasonpo uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReasonw 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 ListenableWorkerdodano 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)
Poprawki błędów
- Dodaliśmy możliwość pomijania overrideNextScheduleTimeza pomocąTestDriveri 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. ZamiastLiveDatapostęp pracownika można teraz obserwować za pomocą przepływuWorkManager.getWorkInfosFlowi 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 zaawansowanych funkcji, 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.UPDATEnależy używać w połączeniu z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu podczas planowania następnego.
- WorkManagertestuje z użyciem wątków pasujących do wersji produkcyjnej.- ExecutorsMode.PRESERVE_EXECUTORSmożna używać do zachowywania wykonawców ustawionych w- Configurationi do korzystania z rzeczywistego wątku głównego.
- Interfejsy API współprogramów, takie jak CoroutineWorker, zostały przeniesione z dodatkowego artefaktuwork-runtime-ktxdo głównego artefaktuwork-runtime.work-runtime-ktxjest teraz puste.
Zmiany w interfejsie API
- Konstruktor WorkInfojest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335)
- work-runtime-ktxjest teraz pusta, a- CoroutineWorkeri 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ę getEarliestRunTimeMillisnagetNextScheduleTimeMillis. (I2bd7a)
- Informacje o następnym zaplanowanym uruchomieniu są dodawane do WorkInfo. (I797e4)
- Do elementu WorkInfododawane 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 wConstraints.Builder, które istniały od wczesnych wersjiWorkManager. (I6d7d2)
- WorkManagerma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca w- JobScheduleri zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować za pomocą- Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
- Do WorkInfododano 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
- Dodaliśmy możliwość aktualizowania WorkRequestsw sposób nieinwazyjny, z zachowaniem pierwotnego czasu dodania do kolejki, łańcuchowania itp. Więcej informacji o tej funkcji znajdziesz w szczegółowym poście na blogu oraz w dokumentacji Javadoc dlaWorkManager.updateWorkiExistingPeriodicWorkPolicy.UPDATE.
Zmiany w interfejsie API
- WorkManager.updateWorkdodano, aby aktualizować zadania, zachowując ich pierwotny czas dodania do kolejki i łączenie w łańcuchy (I9a248, b/219446409).
- Dodano użytkownika ExistingPeriodicWorkPolicy.UPDATETa zasada umożliwia aktualizowanie pracy okresowej według nazwy. Jest podobna do istniejącej funkcjiREPLACE, 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.REPLACEzostało wycofane, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymi funkcjamiREPLACEiUPDATE. Jeśli nadal chcesz zachować poprzednią semantykęREPLACE, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE, który jest identyczny z elementemREPLACE. (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 w OneTimeWorkRequestiPeriodicWorkRequestzostała przeniesiona zandroidx.work:work-runtime-ktxdoandroidx.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 getForegroundInfodoWorker. (Ic1ead)
- RxWorkerzarówno w przypadku RxJava 2, jak i RxJava 3 zwraca teraz- setForeground, które można używać zamiast- setForegroundInfoAsynczwracającego- ListenableFuture.- Completable
- RxWorkerzarówno w przypadku RxJava 2, jak i RxJava 3 ma metodę- getForegroundInfozwracającą- Single, której można używać zamiast metody- getForegroundInfoAsynczwracającej- 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 WorkManagerzostała zainicjowana. Dodaliśmy też nowy interfejs APIgetConfiguration(), który umożliwia deweloperom bibliotek uzyskiwanie konfiguracji, z jaką zainicjowanoWorkManager. (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 @RequiresPermissiondo interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONSw przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
- Przekazywanie anulowań z CoroutineScopedoListenableFuturepodczas korzystania zsuspendCancellableCoroutine.
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
- Naprawiono metodę equalswWorkInfo, 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()iWorkerParameters.getGeneration(), które zwracają generację pracownika. Proces roboczy ma wiele generacji, jeśli został zaktualizowany za pomocąWorkManager.updateWorklubWorkManager.enqueueUniquePeriodicWorkprzy użyciuExistingPeriodicWorkPolicy.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 próby zainicjowaniaWorkManagerwystą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 WorkRequestsw sposób nienaruszający oryginalnego czasu dodania do kolejki, łańcucha itp. Więcej informacji znajdziesz w sekcjachWorkManager.updateWorkiExistingPeriodicWorkPolicy.UPDATE.
Zmiany w interfejsie API
- WorkManager.updateWorkdodano, aby aktualizować zadania, zachowując ich pierwotny czas dodania do kolejki i łączenie w łańcuchy (I9a248, b/219446409).
- Dodano użytkownika ExistingPeriodicWorkPolicy.UPDATETa zasada umożliwia aktualizowanie pracy okresowej według nazwy. Jest podobna do istniejącej funkcjiREPLACE, 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.REPLACEzostało wycofane, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymiREPLACEiUPDATE. Jeśli nadal chcesz zachować poprzednią semantykęREPLACE, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE, który jest identyczny z elementemREPLACE. (I985ed, b/219446409)
- Dodaj możliwość przechwytywania wyjątków od harmonogramu, definiując SchedulingExceptionHandler. (I033eb)
- Pomoc w OneTimeWorkRequestiPeriodicWorkRequestzostała przeniesiona zandroidx.work:work-runtime-ktxdoandroidx.work:work-runtime(I0010f, b/209145335)
Poprawki błędów
- Dodano @RequiresPermissiondo 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 WorkManagerzostała zainicjowana. Dodaliśmy też nowy interfejs APIgetConfiguration(), który umożliwia deweloperom bibliotek uzyskiwanie konfiguracji, z jaką zainicjowanoWorkManager. (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.fromUniqueWorkNamesiWorkQuery.fromTags, które umożliwiają bezpośrednie tworzenie obiektu WorkQuery. (If48f2, b/199919736)
- Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937).
- Dodano getForegroundInfodoWorker. (Ic1ead)
- Dodano metody pomocnicze WorkQuery.fromIdsdo tworzenia obiektu WorkQuery bezpośrednio na podstawie identyfikatorów. (Ie5bdf, b/199919736)
- RxWorker zwraca teraz setForegroundzamiastCompletable, którego można używać zamiastsetForegroundInfoAsynczwracającegoListenableFuture. (I85156)
- RxWorker dla RxJava 2 ma teraz getForegroundInfozwracającySingle, którego można używać zamiastgetForegroundInfoAsynczwracającegoListenableFuture. (I21c91, b/203851459)
- RxWorker w przypadku RxJava 3 ma teraz funkcję getForegroundInfozwracającą wartośćSingle, której można używać zamiast funkcjigetForegroundInfoAsynczwracającej wartośćListenableFuture. (I1ca8a)
- RxWorker zwraca teraz setForegroundzamiastCompletable, którego można używać zamiastsetForegroundInfoAsynczwracającegoListenableFuture. (I992a3, b/203851459)
Poprawki błędów
- Przekazywanie anulowań z CoroutineScopedoListenableFuturepodczas korzystania zsuspendCancellableCoroutine. (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 CoroutineScopesą propagowane doListenableFuturepodczas korzystania zsuspendCancellableCoroutine. (I77e63)
- Wyjątek jest zgłaszany natychmiast, gdy opóźnione żądania pracy są oznaczane jako przyspieszone. 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
- Biblioteka WorkManager wprowadza nowy interfejs - WorkRequest.Builder.setExpedited(...)API, 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 przyspieszone w JobSchedulerze od Androida 12, a w starszych wersjach Androida zapewnia zgodność wsteczną, delegując zadania do usługi 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
- ListenableWorker.setForegroundAsync()nie jest już wycofane.
- W miarę możliwości zalecamy korzystanie z interfejsu WorkRequest.Builder.setExpedited(...)API. Aby lepiej obsługiwać sytuacje, w których aplikacja nie podlega ograniczeniom dotyczącym usług działających na pierwszym planie, deweloperzy mogą używać interfejsuListenableWorker.setForegroundAsync()API.
- Jeśli wywoływana jest funkcja ListenableWorker.setForegroundAsync(), gdy aplikacja podlega ograniczeniom dotyczącym usług na pierwszym planie, zgłaszany jest wyjątek ForegroundServiceStartNotAllowedException.
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
- Z WorkManager - 2.6.0-alpha02: dodaje obsługę procesów roboczych, które mogą działać w dowolnym procesie. (Iaf200)
- W WorkManager - 2.6.0-alpha02dodano- RemoteCoroutineWorker, czyli implementację- RemoteListenableWorker, która może łączyć się z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- W WorkManager 2.6.0-alpha02dodaliśmy obsługę ograniczeniaTEMPORARILY_UNMETERED. (I08d5e)
- Z WorkManager 2.6.0-alpha02:obsługa procesów roboczych w wielu procesach dlasetProgressAsync(). (Ib6d08)
- W WorkManager2.6.0-alpha02:ustawWorkManagerInitializerjako publiczne, aby inneandroidx.startup.Initializermogły używać ich jako zależności. (I5ab11)
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 API - WorkRequest.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ć - WorkRequestjako przyspieszone.- Ten interfejs API zastępuje interfejsy - setForegroundAsync(...)/- setForeground(...), które zostały wycofane.- Gdy używasz - setExpedited(...), WorkManager deleguje zadania przyspieszone w- JobSchedulerod 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.startupdo 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
- RemoteWorkManagerprawidłowo odłącza się od- RemoteWorkManagerService, co umożliwia prawidłowe oczyszczenie- RemoteWorkManagerService. aosp/1730694
- RemoteListenableWorkerprawidłowo odłącza się od- RemoteWorkerService, co umożliwia prawidłowe oczyszczenie- RemoteWorkerService. aosp/1743817
- ForceStopRunnabledział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. Ta wersja 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) 
- Dodano - RemoteCoroutineWorker, czyli implementację- RemoteListenableWorker, którą można powiązać z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- Dodaliśmy obsługę ograniczenia sieci TEMPORARILY_UNMETERED. (I08d5e)
- Obsługa procesów roboczych w przypadku setProgressAsync(). (Ib6d08)
- Udostępnij WorkManagerInitializerpublicznie, aby inneandroidx.startup.Initializermogł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
- WorkManagerużywa teraz- androidx.startupdo inicjowania biblioteki WorkManager. 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 zwracaoutputDataelementu ListenableWorker. (Ie51e3)
Poprawki błędów
- Dodaliśmy obejście błędu OEM, który powoduje zgłaszanie wyjątku SecurityExceptionpodczas korzystania z interfejsów APIAlarmManager. (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-multiprocessdla aplikacji, które korzystają z wielu procesów. Zwiększa to wydajność, ponieważ harmonogramy żądań pracy są ujednolicone 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 korzystasz z work-multiprocess, możesz też używać RemoteWorkManager do zarządzaniaWorkRequest. RemoteWorkManager zawsze kontaktuje się z wyznaczonym procesem. Planista w procesie również działa w wyznaczonym procesie.
 
- Aby użyć 
- Czasami ActivityManagernie może utworzyć instancjiJobService, aby rozpocząć zadanie. Powoduje to ciche odrzucenie bazowego zadania z powodu błędu platformy.WorkManagerzapewnia teraz, że dla każdegoWorkRequestistnieją zadania pomocnicze, gdyApplicationjest inicjowany przez uzgadnianie zadań. Znacznie zwiększa to niezawodność wykonywania zadań. (b/172475041, aosp/1489577)
- WorkManagerogranicza wzrost bazy danych, skracając czas buforowania, w którym śledzone są- WorkRequestpo zakończeniu- WorkRequest. Wcześniej okres trwania wynosił- 7dni. Został on skrócony do- 1dnia plus czas trwania keepResultsForAtLeast. (aosp/1419708)
- TestListenableWorkerBuilderobsługuje teraz klasę reifikowaną rozszerzającą- ListenableWorker, co ułatwia testowanie. (aosp/1443299, b/169787349)
- Inspektor WorkManager jest teraz dostępny w Android 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 WorkQuerynieprawidłowo unieważnianogetWorkInfosLiveData. (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 NoSuchElementExceptionpodczas próby odłączenia się od martwego procesu. (aosp/1530589)
- Ulepsz ConstraintTrackingWorker, aby zatrzymywać tylkoListenableWorker, 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, który powodował, że PeriodicWorkRequestnie 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
- WorkManagerautomatycznie ogranicza liczbę- WorkRequest, które mogą być pobierane przez harmonogram w procesie. Żądania są nadal wykonywane w kolejności FIFO. (aosp/1455228)
- WorkManagerpróbuje przywrócić prawidłowy stan, gdy magazyn danych aplikacji jest w złym stanie. (aosp/1463103)
Poprawki błędów
- Gdy ListenableWorkerzostaną przerwane, natychmiast oznacz je jakoENQUEUED, 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
- TestListenableWorkerBuilderi- TestWorkerBuildernie 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 RemoteWorkManageriRemoteWorkContinuation. 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ń doWorkInfos. (aosp/1412372, b/157335295)
- WorkManager lepiej obsługuje aplikacje, które używają 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 rywalizację o dostęp do 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).processNameto pełna nazwa procesu, która wygląda jakpackageName:processName(np.com.example:remote).
- Nowy zestaw interfejsów API: RemoteWorkManageriRemoteWorkContinuationdoenqueue,canceliqueryżądań pracy. Te interfejsy API nie obejmują wariantówLiveData, aby uniknąć konfliktów SQLite w wielu procesach. Wszystkie wywołania funkcjienqueue,canceliquerysą przekazywane do procesu aplikacjiprimaryza pomocą AIDL i zwracają płynny obiektListenableFuture. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
 
- Bibliotekę WorkManager należy zwykle zainicjować w każdym procesie aplikacji. To nie jest dobre rozwiązanie, ponieważ zwiększa rywalizację o dostęp do 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ą 
Zmiany w interfejsie API
- WorkManager bardziej agresywnie usuwa ukończone obiekty WorkRequest, które nie mają niekompletnych zależności. Okres buforowy zmienił się z7dni na1dzień. (aosp/1419708)
Poprawki błędów
- WorkManager aktywnie uzgadnia teraz zadania, dzięki czemu zadania WorkRequestiJobSchedulersą zsynchronizowane po zainicjowaniuWorkManager. (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 SecurityExceptionpodczas śledzenia stanu sieci na niektórych urządzeniach. (aosp/1396969)
Wkład zewnętrzny
- Poprawiono dokumentację ArrayCreatingInputMergerprzez Zaca Sweersa (github/43).
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 trakcie przetwarzania WorkManagerma teraz większe możliwości. Wcześniej w trakcie przetwarzaniaScheduleruwzględniano tylko zadania, które nie były opóźnione i spełniały wymagania. Harmonogram w trakcie przetwarzania śledzi terazWorkRequest, które mogą być wykonane w przyszłości, w tym PeriodicWorkRequest. ProcesSchedulernie podlega też limitom planowania (ale nadal jest ograniczony do rozmiaruExecutorużywanego przez WorkManager). 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,WorkManagerwprowadza też nowy konfigurowalny elementRunnableScheduler. (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 WorkInfoza pomocąWorkQuery. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania oWorkInfona podstawie kombinacji kilku atrybutów. Więcej informacji znajdziesz w sekcjachWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)iWorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546)
- Dodaj możliwość wysyłania do - WorkManagerpróś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.
- WorkRequesty, które są obecnie URUCHOMIONE.
- 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 - RunnableSchedulerdo śledzenia elementów WorkRequest, które mają zostać wykonane w przyszłości. Jest on używany przez harmonogram w procesie. (aosp/1203944)
- Dodano obsługę dynamicznego dodawania fabryk do delegowania podczas korzystania z - DelegatingWorkerFactory. (b/156289105, aosp/1309745)
- Dostosuj śledzenie ograniczeń - BATTERY_NOT_LOWdo 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 foregroundServiceTypepodczas korzystania z interfejsów APIsetForegroundAsync(). (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 ListenableWorkersą terazpublic, gdy używana jest domyślna wartośćWorkerFactory. (aosp/1291262)
 
- Używanie odpowiedniego 
- Wywołania - setForegroundAsync(), które nie zostaną zakończone przed zakończeniem- ListenableWorker, będą teraz sygnalizowane za pomocą- IllegalStateExceptionw zwróconym- ListenableFuture. (aosp/1262743)
- Rozwiązanie problemu polegającego na tym, że po przerwaniu działania usługi na pierwszym planie - Workerusługa na drugim planie- ForegroundServicenie była zatrzymywana. (b/155579898, aosp/1302153)
- Naprawiono błąd, w którym - WorkManagerpróbuje wykonać wiele instancji- Workerpowiązanych z usługą działającą 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 Workerusługa na drugim planieForegroundServicenie była zatrzymywana. (b/155579898, aosp/1302153)
- Naprawiono błąd, w którym WorkManagerpróbuje wykonać wiele instancjiWorkerpowiązanych z usługą działającą na pierwszym planie (b/156310133, aosp/1309853).
- Dodano obsługę dynamicznego dodawania fabryk do delegowania podczas korzystania z DelegatingWorkerFactory. (b/156289105, aosp/1309745)
- Dostosuj śledzenie ograniczeń BATTERY_NOT_LOWdo 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 ListenableWorkersą terazpublic, gdy używana jest domyślna wartośćWorkerFactory. (aosp/1291262)
Zmiany w interfejsie API
- Wywołanie funkcji setProgressAsync()po zakończeniu działania funkcjiListenableWorkerbędzie teraz sygnalizowaćExceptionza pomocą funkcjiListenableFuture. (aosp/1285494)
- WorkQuery.Builderjest teraz oznaczony jako- final. (aosp/1275037)
- WorkQuery.Buildermetody fabryczne- withStates,- withTagsi- withUniqueWorkNameszostały zmienione na- fromStates,- fromTagsi- fromUniqueWorkNames. (aosp/1280287)
Poprawki błędów
- Ignoruj SecurityExceptionpodczas śledzenia stanu sieci urządzenia. (b/153246136, aosp/1280813)
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 WorkRequestwymaga zarównoConstraints.setRequiresCharging(...), jak iConstraints.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 - WorkInfoza pomocą- WorkQuery. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania o- WorkInfona podstawie kombinacji kilku atrybutów. Więcej informacji znajdziesz w sekcjach- WorkQuery.Builder withStates(...),- WorkQuery.Builder withTags(...)i- 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ą- IllegalStateExceptionw zwróconym- ListenableFuture. (aosp/1262743)
Poprawki błędów
- Naprawiono regułę lint, która sprawdza nieprawidłowe czasy trwania interwałów w przypadku PeriodicWorkRequest. (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 trakcie przetwarzania - WorkManagerma teraz większe możliwości. 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. Proces planowania w toku nie uwzględnia też limitów planowania (ale nadal jest ograniczony rozmiarem- Executorużywanego przez WorkManager). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej- WorkRequest, gdy działa na pierwszym planie. (aosp/1185778)
- Dodano 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.
- WorkRequesty, które są obecnie URUCHOMIONE.
- Zaplanowane prośby o wykonanie usługi. (aosp/1235501)
 
- Nowe reguły Lint, które wymuszają: - Używanie odpowiedniego foregroundServiceTypepodczas korzystania z interfejsów APIsetForegroundAsync(). (b/147873061, aosp/1215915)
- Określanie identyfikatorów JobScheduler, którychWorkManagernależy używać podczas bezpośredniego korzystania z interfejsów APIJobService. (aosp/1223567)
 
- Używanie odpowiedniego 
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 - RunnableSchedulerdo ś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
- Funkcja setProgress()została wycofana wRxWorker, ponieważ wcześniej zwracała wartośćSingle<Void>, która jest niemożliwym typem. Dodaliśmy nowy interfejs APIsetCompletableProgress(), który zwracaCompletable, 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 działania 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 Workerzostał 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 Notifications w przypadku długotrwałychWorkers, które działają, gdy aktywny jestServicena pierwszym planie. (aosp/1218539, b/147249312)
- WorkManagerzależ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 foregroundServiceTypewForegroundInfowAndroidManifest.xmlokreślonoforegroundServiceType. (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-testingdefiniuje terazapizależność odwork-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.WorkManagerInitializerjest usuwany zAndroidManifest.xmlpodczas korzystania z inicjowania na żądanie. (aosp/1167007)
- Dodano ostrzeżenie narzędzia lint, gdy w przypadku PeriodicWorkRequestużytoenqueue()zamiastenqueueUniquePeriodicWork(). (aosp/1166032)
Zmiany w interfejsie API
- ForegroundInfowymaga teraz określenia- notificationId, które ma być używane podczas korzystania z- ListenableWorker.setForegroundAsync(). Jest to zmiana powodująca niezgodność. Dzięki temu możesz uruchamiać równolegle wiele długotrwałych- Worker.- WorkManagerlepiej 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 WorkRequesttworzyła nieprawidłowy łańcuchWorkContinuation. (b/142835274, aosp/1157051)
Zmiany zależności
- Biblioteka WorkManager korzysta teraz z 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.Providerpodczas 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 WorkManager.createCancelPendingIntent()API, który ułatwia anulowanieWorkRequestbez konieczności rejestrowania kolejnego komponentu wAndroidManifest.xml. Ten interfejs API szczególnie ułatwia anulowanieWorkRequestzNotification. Spodziewamy się, że będzie to powiązane z nowymi interfejsami API pierwszego planu w wersji 2.3.0.
- Biblioteka WorkManager zależy teraz od stabilnej wersji androidx.room:*:2.2.0.
Zmiany w interfejsie API
- Zmieniliśmy nazwę interfejsu ForegroundInfo.getNotificationType()naForegroundInfo.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 sekcji ListenableWorker#setForegroundAsync()(lubCoroutineWorker#setForeground()w przypadku języka Kotlin). (aosp/1133636)
Zmiany w interfejsie API
- Interfejs API containsKeyw przeglądarceDatazostał zmieniony nahasKeyWithValueOfType. Odpowiednia metoda rozszerzenia w bibliotecektxrównież została zmieniona. (b/141916545)
Poprawki błędów
- WorkManager sprawiedliwie planuje pracę, gdy liczba zadań WorkRequestw 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)
- WorkManager usuwa teraz informacje o postępach, gdy zadanie zostanie przerwane lub osiągnie stan końcowy. (aosp/1114572)
- Datama teraz znacznie bardziej przydatną- toString()reprezentację. (b/140945323)
- Datama teraz lepszą- equals()metodę. Obsługuje też- deepEqualsw 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
- ListenableWorkermogą teraz ustawiać postępy za pomocą interfejsu API- setProgressAsync(). Dodaliśmy też odpowiedni interfejs API- suspend-ing- setProgressw przeglądarce- CoroutineWorkeroraz interfejs API- setProgressw 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)
- Datama interfejs API- containsKey(), którego można używać do sprawdzania, czy dane wejściowe do- Workers mają klucze o oczekiwanym typie. (b/117136838)
- Datamożna teraz serializować za pomocą- Data.toByteArray()i- Data.fromByteArray(). Pamiętaj, że w przypadku- Datanie ma gwarancji dotyczących wersji, więc nie należy go utrwalać ani używać do komunikacji międzyprocesowej między aplikacjami. Można ich bezpiecznie używać tylko w wielu procesach tej samej aplikacji.
- Dodaliśmy możliwość określania InputMergerFactoryza pomocąConfiguration.setInputMergerFactory. (b/133273159)
Zmiany w interfejsie API
- WorkManager zgłosi instancję IllegalStateException, jeśliWorkerFactoryzwróci instancjęListenableWorker, która została wcześniej wywołana. (b/139554406)
- Aktualizacje dokumentacji dotyczące anulowania ListenableFuturei funkcji oddzwanianiaonStopped()wListenableWorker. (b/138413671)
Poprawki błędów
- Procesor w trakcie przetwarzania ignoruje teraz elementy WorkRequestz ograniczeniemidle. Te żądania są teraz odbierane przezJobSchedulertylko wtedy, gdy urządzenie jestidle. (aosp/1089779)
- TestSchedulerw testach prawidłowo używa określonego parametru- Executordla 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 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 NullPointerExceptionpodczas korzystania z interfejsów APIJobSchedulerna 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-beta01to 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 Play nie są dostępne, WorkManager będzie nadal używać AlarmManager na starszych urządzeniach.
Poprawki błędów
- Poprawka błędu IllegalArgumentExceptionpodczas ś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-ktxwymaga teraz Javy 8. Jeśli napotkasz jakieś problemy, możesz dodać do pliku- build.gradlete 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:
- Wyłącz automatyczny inicjator.
- Zaimplementuj Configuration.Providerw swoim niestandardowym obiekcieApplication.
- Zmień wszystkie odwołania do WorkManager.getInstance()naWorkManager.getInstance(Context). W ramach tej zmiany wycofaliśmyWorkManager.getInstance(). Zawsze bezpieczniej jest wywoływać nowy zamiennikWorkManager.getInstance(Context), nawet jeśli nie wykonujesz inicjowania na żądanie.
 
- PeriodicWorkRequestobsługują teraz początkowe opóźnienia. Możesz użyć metody- setInitialDelayna- PeriodicWorkRequest.Builder, aby ustawić początkowe opóźnienie. b/111404867
- Dodano możliwość przekazywania uprawnień co najmniej jednemu zarejestrowanemu WorkerFactoryza pomocąDelegatingWorkerFactory. b/131435993
- Dodano możliwość dostosowania Executorużywanego przez WorkManager do wszystkich wewnętrznych operacji za pomocąConfiguration.Builder.setTaskExecutor.
- Dodano możliwość tworzenia klas WorkeriListenableWorker, które można testować jednostkowo, za pomocąTestWorkerBuilderiTestListenableWorkerBuilderw artefakciework-testing.- Pamiętaj, że work-testingpobiera teraz Kotlin jako zależność i domyślnie zawiera kilka rozszerzeń Kotlin.
 
- Pamiętaj, że 
- Dodano liczbę prób uruchomienia do WorkInfo. b/127290461
- Typy Datamogą teraz przechowywać i pobierać bajty oraz tablice bajtów. NIE zmienia to maksymalnego rozmiaru obiektówData.
- 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 JobSchedulerw 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
- TestListenableWorkerBuilderużywa teraz prawidłowego znaku- WorkerFactorypodczas tworzenia instancji- ListenableWorker. b/135275844
- Naprawiliśmy błąd, który powodował odchylenia w oknach wykonywania WorkRequestz powodu zakończenia 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.
- WorkManagerTestInitHelperuż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 JobSchedulerpodczas 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.
Udostępniamy WorkManager w wersji 2.1.0-alpha02. Ta wersja zawiera kilka nowych interfejsów API.
Zmiany w interfejsie API
- PeriodicWorkRequestobsługują teraz początkowe opóźnienia. Możesz użyć metody- setInitialDelayna- PeriodicWorkRequest.Builder, aby ustawić początkowe opóźnienie. b/111404867
- Dodano możliwość przekazywania uprawnień co najmniej jednemu zarejestrowanemu - WorkerFactoryza pomocą- DelegatingWorkerFactory. b/131435993
- Dodano możliwość dostosowania - Executorużywanego przez WorkManager 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 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:
- Wyłącz automatyczny inicjator.
- Zaimplementuj Configuration.Providerw swoim niestandardowym obiekcieApplication.
- Zmień wszystkie odwołania do WorkManager.getInstance()naWorkManager.getInstance(Context). W ramach tej zmiany wycofaliśmyWorkManager.getInstance(). Zawsze bezpieczniej jest wywoływać nowy zamiennikWorkManager.getInstance(Context), nawet jeśli nie wykonujesz inicjowania na żądanie.
 
- Dodano możliwość tworzenia klas WorkeriListenableWorker, które można testować jednostkowo, za pomocąTestWorkerBuilderiTestListenableWorkerBuilderw artefakciework-testing.- Pamiętaj, że work-testingpobiera teraz Kotlin jako zależność, ale domyślnie zawiera też kilka rozszerzeń Kotlin.
 
- Pamiętaj, że 
- Dodano liczbę prób uruchomienia do WorkInfo. b/127290461
- Typy Datamogą teraz przechowywać i pobierać bajty oraz tablice bajtów. NIE zmienia to maksymalnego rozmiaru obiektówData.
- Wycofano CoroutineWorker.coroutineContext. To pole zostało nieprawidłowo określone jakoCoroutineDispatcher. Nie powinno być już potrzebne, ponieważ możesz samodzielnie przejść do odpowiedniego elementu coroutineContext w treści funkcji zawieszającej.
- Funkcje RxWorker.createWork()iRxWorker.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 WorkManagerem. 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 StackOverflowErrorzwiązaną z długimi ciągami zadań. b/129091233
- Zaktualizowano dokumentację PeriodicWorkRequest, aby wskazać, że elastyczny czas nie jest obsługiwany w interfejsie API 23.
- Naprawiliśmy niektóre uszkodzone linki w dokumentacji języka Kotlin.
Wersja 2.0.0
Wersja 2.0.0
20 marca 2019 r.
Opublikowaliśmy 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 krytyczne poprawki błędów. Wszystkie aktywne prace rozwojowe będą dotyczyć wersji 2.x.
Zależności sprzed AndroidaX
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 będziemy wprowadzać bardzo niewiele aktualizacji do gałęzi 1.x. 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 bibliotekę WorkManager w wersji 1.0.1-rc01. Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo z WorkManagerem. 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 StackOverflowErrorzwią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- FAILEDi 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 flexw 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 NullPointerExceptionna urządzeniach z Androidem 5.1 (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, który powodował, że WorkManager nie ponawiał pracy po zakończeniu procesu, gdy używano implementacji opartej 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 prawidłowo wykonywane w odpowiednim czasie. b/122881597
- Naprawiono ConcurrentModificationExceptionna urządzeniach z Androidem 5.1 (API) lub starszym. Jest to kontynuacja poprawki z1.0.0-beta02. b/121345393
- Dodaliśmy adnotację exported=falsedo 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 ConcurrentModificationExceptionna urządzeniach z Androidem 5.1 (interfejs API na poziomie 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 są spełnione ograniczenia.b/122578012
- Zoptymalizowano obsługę zakończenia pracy, aby w niektórych przypadkach brzegowych działała szybciej. b/122358129
- Wprowadzono zmianę, która ma zapobiegać potencjalnym sytuacjom wyścigu między wieloma instancjami LiveDataużywanymi przez bibliotekę WorkManager.
- Zamiast 1.1.1-rc01użyto zależnościRoom1.1.1. Te wersje są identyczne. b/122578011
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.Resultzostała przeniesiona i jest teraz klasą wewnętrzną klasyListenableWorker. Zapobiega to konfliktom refaktoryzacji z klasą najwyższego poziomuResultw Kotlinie. Jest to zmiana interfejsu API powodująca niezgodność wsteczną. b/120564418
Zmiany w interfejsie API powodujące niezgodność
- Klasa androidx.work.Resultzostała przeniesiona i jest teraz klasą wewnętrzną klasyListenableWorker.
Wersja 1.0.0-alpha12
5 grudnia 2018 r.
Ta wersja zawiera pewne 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-rxjava2wprowadzaRxWorker. Jest toListenableWorker, która oczekujeSingle<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-firebasenie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji.
- Połączono PayloadzResult.Resultjest teraz „klasą zamkniętą” z 3 konkretnymi implementacjami, które można uzyskać za pomocąResult.success()(lubResult.success(Data)),Result.failure()(lubResult.failure(Data)) iResult.retry(). TwojeListenableFutureteraz kosztujeResultzamiastPayload.Workernie mają metod pobierających i ustawiających dla danych wyjściowychData. Jest to zmiana powodująca niezgodność.
- Dodaliśmy Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)iConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)oraz ich warianty, 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.
- Dodano metody rozszerzające Kotlin Operation.await()iListenableFuture.await().
- Zmieniono nazwę Operation.getException()naOperation.getThrowable(). Jest to zmiana powodująca niezgodność.
- Klasa ContentUriTriggersi metody, które się do niej odwołują, nie są już dostępne do użytku publicznego. Jest to zmiana powodująca niezgodność.
- Usunęliśmy pozostałe metody varargs w WorkManager,WorkContinuationiOneTimeWorkRequest, aby uprościć interfejs API. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty varargs za pomocą funkcjiArrays.asList(...). Nadal uwzględniamy wersje każdej metody z 1 argumentem. Jest to zmiana powodująca niezgodność.
- Usunięto WorkContinuation.combine(OneTimeWorkRequest, *)wariantów. Przedstawiali mylący interfejs API. Obecne metodycombinesą bardziej zrozumiałe. Jest to zmiana powodująca niezgodność.
Poprawki błędów
- Implementacje starsze niż Marshmallow są teraz bardziej niezawodne w przypadku przywracania działania po zakończeniu procesu już wykonywanego zadania.
- LiveData, które jest obserwowane za pomocą- observeForever, jest śledzone za pomocą WorkManager. Jest to przeniesienie poprawki 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óciWorkInfozCANCELLEDStatepodczasListenableWorker.onStopped().
- Traktuj nullResultjako błędy wListenableWorker. 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-firebasenie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji.
- Połączono PayloadzResult.Resultjest teraz „klasą zamkniętą” z 3 konkretnymi implementacjami, które można uzyskać za pomocąResult.success()(lubResult.success(Data)),Result.failure()(lubResult.failure(Data)) iResult.retry(). TwojeListenableFutureteraz kosztujeResultzamiastPayload.Workernie mają metod pobierających i ustawiających dla danych wyjściowychData.
- Dodano metody rozszerzające Kotlin Operation.await()iListenableFuture.await().
- Zmieniono nazwę Operation.getException()naOperation.getThrowable().
- Klasa ContentUriTriggersi metody, które się do niej odwołują, nie są już dostępne do użytku publicznego.
- Usunęliśmy pozostałe metody varargs w WorkManager,WorkContinuationiOneTimeWorkRequest, aby uprościć interfejs API. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty varargs za pomocą funkcjiArrays.asList(...). Nadal uwzględniamy wersje każdej metody z 1 argumentem.
- Usunięto WorkContinuation.combine(OneTimeWorkRequest, *)wariantów. Przedstawiali mylący interfejs API. Obecne metodycombinesą 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 dniu 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-ktxwprowadza nowy- CoroutineWorker.
- Nazwa WorkStatuszostała zmieniona naWorkInfo. Wszystkie powiązane warianty metodygetStatuszostały zmienione na powiązane wariantygetWorkInfo. Jest to zmiana powodująca niezgodność.
- ListenableWorker.onStopped()nie akceptuje już argumentu logicznego wskazującego, czy- WorkRequestzostało anulowane.- WorkManagernie rozróżnia już tych przypadków. Jest to zmiana powodująca niezgodność.
- Pakiet androidx.work.testzostał zmieniony na pakietandroidx.work.testing. Jest to zmiana powodująca niezgodność.
- Funkcje ustawiające w Constraintsnie są już częścią publicznego interfejsu API. Jest to zmiana powodująca niezgodność.
- Funkcje WorkerParameters.getTriggeredContentUris()iWorkerParameters.getTriggeredContentAuthorities()zwracały wcześniej tablice. Obecnie te metody zwracają kolekcje. Jest to zmiana powodująca niezgodność.
- Nazwa ListenableWorker.onStartWork()została zmieniona naListenableWorker.startWork(). Jest to zmiana powodująca niezgodność.
- Konstruktor WorkStatusnie jest już częścią publicznego interfejsu API. Jest to zmiana powodująca niezgodność.
- Nazwy Configuration.getMaxJobSchedulerID()iConfiguration.getMinJobSchedulerID()zostaną zmienione odpowiednio naConfiguration.getMinJobSchedulerId()iConfiguration.getMaxJobSchedulerId(). Jest to zmiana powodująca niezgodność.
- Dodaliśmy do publicznego interfejsu API wiele adnotacji @NonNull, aby zwiększyć jego ergonomię.
- Dodano interfejs API WorkManager.enqueueUniqueWork(), który umożliwia umieszczanie w kolejce unikalnych elementówOneTimeWorkRequestbez konieczności tworzenia elementuWorkContinuation.
- Wszystkie warianty metod enqueueicancelwWorkManagerzwracają teraz nowy typOperation. Jest to zmiana powodująca niezgodność.
- Wszystkie warianty enqueuenie akceptują już argumentów varargs dlaWorkRequests. Jest to zmiana powodująca niezgodność. 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 initializeWorkManagerwięcej niż raz w ramach jednego procesu spowoduje teraz wystąpienieIllegalStateException. Jest to zmiana powodująca niezgodność.
Poprawki błędów
- WorkRequest.Builderw artefakcie- work-runtime-ktxużywają teraz- ListenableWorker. Poprawki b/117666259
- Upewnij się, że następny czas uruchomienia PeriodicWorkprzypada 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 WorkStatuszostała zmieniona naWorkInfo. Wszystkie powiązane warianty metodygetStatuszostały zmienione na powiązane wariantygetWorkInfo.
- ListenableWorker.onStopped()nie akceptuje już argumentu logicznego wskazującego, czy- WorkRequestzostało anulowane.- WorkManagernie rozróżnia już tych przypadków.
- Pakiet androidx.work.testzostał zmieniony na pakietandroidx.work.testing.
- Funkcje ustawiające w Constraintsnie są już częścią publicznego interfejsu API.
- Funkcje WorkerParameters.getTriggeredContentUris()iWorkerParameters.getTriggeredContentAuthorities()zwracały wcześniej tablice. Obecnie te metody zwracają kolekcje.
- Nazwa ListenableWorker.onStartWork()została zmieniona naListenableWorker.startWork().
- Konstruktor WorkStatusnie jest już częścią publicznego interfejsu API.
- Nazwy Configuration.getMaxJobSchedulerID()iConfiguration.getMinJobSchedulerID()zostaną zmienione odpowiednio naConfiguration.getMinJobSchedulerId()iConfiguration.getMaxJobSchedulerId().
- Wszystkie warianty metod enqueueicancelwWorkManagerzwracają teraz nowy typOperation.
- Wszystkie warianty enqueuenie akceptują już argumentów varargs dlaWorkRequests.
- Próba initializeWorkManagerwięcej niż raz w ramach jednego procesu spowoduje teraz wystąpienieIllegalStateException.
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. Oczekujemy, że interfejs API będzie stabilny w wersji beta, więc 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 konstruktorWorker. Jest to zmiana interfejsu API powodująca niezgodność wsteczną.
- Zmieniliśmy nazwę interfejsu NonBlockingWorkernaListenableWorker. Jest to teraz nieukryta klasa publiczna gotowa do użycia.- ListenableWorkerudostępnia jedną metodę abstrakcyjną,- 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- ListenableFuturesą dostępne w pakiecie- Futuresw- alpha02(patrz sekcja- WorkManagerponiżej).
- Klasa Workerrozszerza klasęListenableWorkeri nadal działa jak wcześniej, z abstrakcyjną metodąResult doWork().
- Przeniesiono niektóre metody i elementy z WorkerdoListenableWorker.
- Wkrótce udostępnimy implementacje referencyjne ListenableWorker, które korzystają z korutyn w Kotlinie (gdy zostaną wydane stabilne wersje) i RxJava2.
 
- Interfejs WorkerFactoryi konkretna implementacjaDefaultWorkerFactoryzostały scalone w klasę abstrakcyjną o nazwieWorkerFactory. Implementacja zapewnia, że domyślne działanie oparte na odbiciu jest wywoływane jako ostatnia próba w przypadku wszystkich instancjiWorkerFactoryutworzonych przez użytkownika. Jest to zmiana powodująca niezgodność.
- Usunięto WorkManager.synchronous()iWorkContinuation.synchronous()oraz wszystkie powiązane metody. DodanoListenableFuture<Void>jako typ zwracany 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ładWorkManager.enqueue()zwracałovoid, a teraz zwracaListenableFuture<Void>. Po zakończeniu operacji możesz wywołać funkcjęListenableFuture.addListener(Runnable, Executor)lubListenableFuture.get(), aby uruchomić kod.
- Pamiętaj, że te ListenableFuturenie 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 zFutureumową.
- Aby zachować spójność z metodami synchronicznymi getStatus*, udostępniliśmy wariantyListenableFuturei zmieniliśmy nazwy istniejących metod, które zwracałyLiveData, tak aby zawierały w nazwie słowo „LiveData” (np.getStatusesByIdLiveData(UUID)). Jest to zmiana w interfejsie API, która może powodować problemy z kompatybilnością.
 
- Możesz teraz synchronicznie pobierać i obserwować dane za pomocą 
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ącexclude 'META-INF/proguard/androidx-annotations.pro'z pliku Gradle.
- Dodano konfiguracje ProGuard, aby zachować nowy konstruktor Worker. b/116296569
- Rozwiązanie potencjalnego NullPointerExceptionw sytuacji wyścigu, w której zadanie zostałoREPLACEd. b/116253486 i b/116677275
- WorkContinuation.combine()akceptuje teraz co najmniej 1- WorkContinuationzamiast co najmniej 2. b/117266752
Zmiany w interfejsie API powodujące niezgodność
- Usunięto wszystkie poprzednie metody i klasy deprecated, w tym domyślny konstruktorWorker.
- Interfejs WorkerFactoryi konkretna implementacjaDefaultWorkerFactoryzostały scalone w klasę abstrakcyjną o nazwieWorkerFactory.
- Usunięto WorkManager.synchronous()iWorkContinuation.synchronous().
- Metody WorkManager.getStatus*()zwracają teraz obiektyListenableFuture.WorkManager.getStatus*LiveData()zwrotówLiveData.
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””, wstaw do pliku Gradle ten tymczasowy obejście, dopóki nie rozwiążemy 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 bazowegoWorker. 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 Workerw czasie działania, określającWorkerFactoryw ramachWorkManager.Configuration. Fabryka rezerwowa toDefaultWorkerFactory, która działa tak samo jak poprzednie wersje WorkManagera.- Konstruktory domyślne dla WorkeriNonBlockingWorkersą teraz oznaczone jako wycofane. Używaj nowego konstruktora (Worker(Context, WorkerParameters)) i wywołujsuper(Context, WorkerParameters). W przyszłych wersjach WorkManagera domyślny konstruktor zostanie usunięty.
 
- Konstruktory domyślne dla 
- 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 późniejsze odkrycieNonBlockingWorker.
- Dodano możliwość wywoływania pracy w określonym czasie w TestDriverza pomocąTestDriver.setInitialDelayMet(UUID)iTestDriver.setPeriodDelayMet(UUID). b/113360060
Zmiany powodujące niezgodność
- Domyślne konstruktory WorkeriNonBlockingWorkerzostały wycofane. Jak najszybciej przejdź na nowy konstruktor. W przyszłych wersjach domyślny konstruktor 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ę biblioteki WorkManager, 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 przetwarzaniuJobScheduler. 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 zadanie prawidłowo anuluje teraz wszystkie oczekujące kopie tego zadania w innych harmonogramach. Spowodowało to przekroczenie limitu JobSchedulerzadań. b/111569265
- Naprawiono ConcurrentModificationExceptionwConstraintTracker. b/112272753
- Zmieniono adnotacje typu zwracanego w przypadku funkcji Data.getBooleanArray(String)iData.getIntArray(String)na@Nullablezamiast@NonNull. b/112275229
Zmiany w interfejsie API
- Workeroferuje teraz nowe zajęcia- NonBlockingWorker. Nie ma to wpływu na bieżące wykorzystanie. W przyszłości- NonBlockingWorkerbędzie w pełni obsługiwanym elementem w przypadku niestandardowych rozwiązań dotyczących wątków.
- Zmieniono adnotacje typu zwracanego w przypadku funkcji Data.getBooleanArray(String)iData.getIntArray(String)na@Nullablezamiast@NonNull. b/112275229
- Rozszerzenia Kotlin: wycofano Map.toWorkData()i dodanoworkDataOf(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 PeriodicWorknie działała zgodnie z harmonogramem w trybie uśpienia. b/111469837
- Naprawiono wyścigową sytuację warunkową podczas śledzenia ograniczeń, która powodowała awarię WorkManager. googlecodelabs/android-workmanager/issues/56
- Podczas korzystania z WorkRequest.Builder#build()twórz unikalneWorkRequest. b/111408337
- Włącz korzystanie z funkcji RescheduleReceivertylko wtedy, gdy sąWorkRequest, które tego wymagają. b/111765853
Wersja 1.0.0-alpha05
24 lipca 2018 r.
Zmiany w interfejsie API
- WorkManager.getInstance()jest teraz oznaczony adnotacją- @NonNullzamiast- @Nullable. Jeśli w przypadku ręcznej inicjalizacji singleton nie zostanie prawidłowo zainicjowany, 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ć poziom szczegółowości WorkManagera. Domyślnie WorkManager rejestruje logi o poziomieLog.INFOi wyższym.
- Zmieniono sygnaturę funkcji Data.getString(), aby nie przyjmowała już wartości domyślnej (jest ona niejawnie równanull). Jest to zmiana w interfejsie API, która może powodować problemy z kompatybilnością.
- Oznaczyliśmy niektóre metody potrzebne tylko do użytku wewnętrznego jako @hide. Obejmuje to konstruktorConstraints,Data.toByteArray()iData.fromByteArray(byte[]). Jest to zmiana interfejsu API powodująca niezgodność wsteczną.
Poprawki błędów
- WorkManager nie wykonuje już zadań w znanych przypadkach automatycznego tworzenia kopii zapasowej. Mogło to spowodować awarię. b/110564377
- Rozwiązaliśmy problem z podwójnym planowaniem PeriodicWorkRequestw przypadku korzystania zJobScheduler. b/110798652
- Rozwiązaliśmy problem z nieprawidłowym wykonywaniem PeriodicWorkRequestpo 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 wyścigiem 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ą- @NonNullzamiast- @Nullable.
- Zmieniono sygnaturę funkcji Data.getString(), aby nie przyjmowała już wartości domyślnej (jest ona niejawnie równanull).
- Oznaczyliśmy niektóre metody potrzebne tylko do użytku wewnętrznego jako @hide. Obejmuje to konstruktorConstraints,Data.toByteArray()iData.fromByteArray(byte[]).
Wersja 1.0.0-alpha04
26 czerwca 2018 r.
Poprawki błędów
- PeriodicWorkRequestsą teraz prawidłowo ponownie planowane 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 możliwości wystąpienia wartości null w różnych interfejsach API WorkManager. b/110344065
- Loguj niewykryte wyjątki, które występują podczas wykonywania funkcji Worker. b/109900862
- Zezwolenie na destrukcyjne migracje bazy danych w przypadku decyzji o przywróceniu 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 warunek wyścigu w implementacji opartej na - AlarmManager. b/80346526
- Rozwiązaliśmy problem z duplikowaniem zadań podczas korzystania z - JobSchedulerpo 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 używania zależności - work-runtime-ktx.
- Biblioteka WorkManager korzysta teraz z wersji - Roompakietu- 1.1.1-rc1.
Zmiany w interfejsie API
- Dodano getStatusesSync(), synchroniczną wersję funkcjiWorkContinuation.getStatuses().
- Workerpotrafi 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), który umożliwia określenie liczby zadań, które można wysłać do usługJobSchedulerlubAlarmManager. Zapobiega to zajmowaniu przezWorkManagerwszystkich dostępnych miejsc naJobScheduler.
- Dodano parametr Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), który pomaga zdefiniować zakres identyfikatorów zadańJobSchedulerbezpiecznych do użycia przezWorkManager. 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ą nazwę klasy dlaWorker. Umożliwia to usuwanieWorkRequestbeztaglub gdyidjest niedostępny. b/109572351
Zmiany powodujące niezgodność
- Zmieniono nazwę Worker.WorkerResultnaWorker.Result.
- Worker.onStoppedma teraz dodatkowy parametr- isCancelled, który jest ustawiony na- true, gdy- Workerzostał wyraźnie anulowany.
Wersja 1.0.0-alpha02
24 maja 2018 r.
Poprawki błędów
- Naprawiono NullPointerExceptionw dniuState.isFinished(). b/79550068
- Rozwiązaliśmy problem, który powodował zmianę terminu WorkernaApplication.onCreate(). b/79660657
- Rozwiązaliśmy problem, który powodował, że można było zaplanować więcej pracy, niż pozwalał na to system operacyjny. b/79497378
- Przeniesiono czyszczenie blokad uśpienia powiązanych z Workerna wątek w tle.
- Implementacja AlarmManagerprawidł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ę floatwData. b/79443878
- Data.Builder.putAll()zwraca teraz instancję elementu- Builder. b/79699162
- Więcej komentarzy javadoc i poprawek w dokumentacji. b/79691663
Zmiany w interfejsie API
- Workers mogą reagować na zatrzymanie. Za pomocą- Worker.isStopped()możesz sprawdzić, czy- Workerzostał zatrzymany.- Worker.onStopped()można używać do wykonywania prostych operacji czyszczenia.
- Interfejs Worker.getTags()API zwracaSettagów powiązanych zWorker.
- Dodano przeciążenia javax.time.Durationdla interfejsów API, które przyjmują kombinację czasu trwania iTimeUnit. Jest ona chroniona przez@RequiresApi(26).
- WorkManagerrozszerzenia zostały przeniesione z pakietu- androidx.work.ktxdo pakietu- androidx.work. Stare rozszerzenia są wycofywane i zostaną usunięte w przyszłej wersji.
- Środowisko wykonawcze Configuration.withExecutor()zostało wycofane. Zamiast niej używaj zasadyConfiguration.setExecutor().
Wersja 1.0.0-alpha01
8 maja 2018 r.
WorkManager upraszcza planowanie i wykonywanie gwarantowanych działań w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01.
