WorkManager
Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
30 lipca 2025 r. | 2.10.3 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od WorkManager, 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.10.3" // (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.10.3" // (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 nową kartę, 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.10
Wersja 2.10.3
30 lipca 2025 r.
Zostanie wycofaneandroidx.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 o identycznych ograniczeniach sieciowych jak poprzedni pracownik zgłaszali, że ich ograniczenia nie są spełnione. (b/427115602).
Wersja 2.10.2
18 czerwca 2025 r.
Zostanie wycofaneandroidx.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)
- Naprawiliśmy błąd, który powodował, że instancje robocze z ograniczeniami sieciowymi nie były wykonywane od razu z powodu niespełnienia ograniczeń, mimo że sieć i możliwości były dostępne. (b/423403088)
Wersja 2.10.1
23 kwietnia 2025 r.
Zostanie wycofaneandroidx.work:work-*:2.10.1
Wersja 2.10.1 zawiera te zmiany.
Poprawki błędów
- Zmniejsz prawdopodobieństwo wyrzucenia
TooManyRequestsException
z rejestracjiWorkManager
wNetworkCallback
używanym do śledzenia ograniczeń. (b/231499040, b309d5).
Wersja 2.10.0
30 października 2024 r.
Zostanie wycofaneandroidx.work:work-*:2.10.0
Wersja 2.10.0 zawiera te zmiany.
Ważne 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.workerCoroutineContext
dodano element sterujący dyspozytorem, w którym wykonywany jest elementCoroutineWorker
. - Deweloperzy mogą określić
NetworkRequest
jako ograniczenie dla pracownika za pomocą metodyConstraints.setRequiredNetworkRequest
. Umożliwia to bardziej szczegółową kontrolę nad tym, w której sieci ma działać instancja robocza. WorkManager
Wersja 2.10.0 jest teraz kompilowana z pakietem SDK 35 i zawiera różne zmiany zapewniające zgodność z tym pakietem.
Wersja 2.10.0-rc01
24 października 2024 r.
Zostanie wycofaneandroidx.work:work-*:2.10.0-rc01
Wersja 2.10.0-rc01 zawiera te zmiany.
Wersja 2.10.0-beta01
2 października 2024 r.
Zostanie wycofaneandroidx.work:work-*:2.10.0-beta01
Wersja 2.10.0-beta01 zawiera te zmiany.
Wersja 2.10.0-alpha04
18 września 2024 r.
Zostanie wycofaneandroidx.work:work-*:2.10.0-alpha04
Wersja 2.10.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj przyczynę 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 na pierwszym planie. (Ibd0af)
Wersja 2.10.0-alpha03
4 września 2024 r.
Zostanie wycofaneandroidx.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
WorkManager
nie wywoływałstopSelf()
. Ta poprawka dotyczy tylko urządzeń z interfejsem API w wersji 34 i 35, w których wprowadzono typy usług działających na pierwszym planie. (ca06b2, b/364508145) - Nowe interfejsy API
WorkerParameters
, które umożliwiają przełączanie procesu zdalnego, z którymWorker
jest powiązany podczas korzystania zWorkerFactory
. (Ibdc8a, Ie8a90, I7373f)
Poprawki błędów
- Naprawiono awarię spowodowaną przez
WorkManager
pró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.
Zostanie wycofaneandroidx.work:work-*:2.10.0-alpha02
Wersja 2.10.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Dodaliśmy możliwość emitowania zakresów śledzenia za pomocą konfigurowalnego
@RestrictTo
Tracer
wWorkManager
. (I17d7f, b/260214125) - Do elementu
Configuration.workerCoroutineContext
dodano element sterujący dyspozytorem, w którym wykonywany jest elementCoroutineWorker
. Pomaga to całkowicie uniknąć używania znakuDispatchers.Default
wWorkManager
. (Icd1b7) - Dodawanie niestandardowych modułów obsługi wyjątków w przypadku funkcji Workers (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
iPeriodicWorkRequest.Builder
można teraz tworzyć za pomocąKClass
zamiastClass
:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)- Klasa
WorkManager
została przeniesiona do języka Kotlin. Metody zwracające teraz wartościLiveData
,ListenableFuture
lubFlow
podają 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.
Zostanie wycofaneandroidx.work:work-*:2.10.0-alpha01
Wersja 2.10.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Deweloperzy mogą określić
NetworkRequest
jako ograniczenie dla pracownika 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
NetworkRequest
jako ograniczenia. (Id98a1, b/280634452)
Wersja 2.9
Wersja 2.9.1
7 sierpnia 2024 r.
Zostanie wycofaneandroidx.work:work-*:2.9.1
Wersja 2.9.1 zawiera te zmiany.
Poprawki błędów
- Naprawiono awarię spowodowaną przez
WorkManager
próbę ponownego uruchomienia długotrwałego procesu roboczego (np. procesu roboczego na pierwszym planie), gdy typ 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.
Zostanie wycofaneandroidx.work:work-*:2.9.0
Wersja 2.9.0 zawiera te zmiany.
Ważne zmiany od wersji 2.8.0
- Dostrzegalność za pomocą
Flow
. ZamiastLiveData
postęp pracownika można teraz obserwować za pomocą przepływuWorkManager.getWorkInfosFlow
i podobnych metod. - Teraz
WorkManager
podaje wskazówkę, dlaczego pracownik został wcześniej zatrzymany. Można o nią zapytać bezpośrednio z poziomu pracownika za pomocą metodygetStopReason()
lub z poziomuWorkInfo
za pomocą metodygetStopReason()
. - 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.UPDATE
należy używać w połączeniu z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu roboczego podczas planowania następnego. - Testowanie WorkManagera z wątkami pasującymi do wersji produkcyjnej.
ExecutorsMode.PRESERVE_EXECUTORS
można używać winitializeTestWorkManager
, aby zachować wykonawców ustawionych wConfiguration
i używać rzeczywistego głównego wątku. - 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
stopReason
został dodany do grupyWorkInfo
. Udostępnia wartośćstopReason
po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReason
w użyteczny sposób, ponieważ po zatrzymaniu procesu roboczego aplikacja może zostać bardzo szybko zamknięta. (I21386) - Zezwalaj na ustawianie wartości
Clock
za pomocą konfiguracji i używanie jej do określania kolejności wykonywania testów Worker. (Ic586e) - Do
ListenableWorker
dodano metodęgetStopReason()
, która podaje wskazówkę, dlaczego instancja robocza została zatrzymana. (I07060) - Dodaliśmy
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49) - Konstruktor
WorkInfo
jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) work-runtime-ktx
jest teraz pusta, aCoroutineWorker
i inne narzędzia specyficzne dla języka Kotlin są teraz dostępne w głównym artefakcie work-runtime. (I71a9a)- Dodano metodę
setNextScheduleTimeOverride
, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da). - Dodano
getNextScheduleTimeMillis
, aby uzyskać informacje o zaplanowanym czasie działania, doWorkInfo
. (I797e4) - Do elementu
WorkInfo
dodawane są informacje o początkowym opóźnieniu i okresowości. (I52f2f) - Dodano metodę obserwowania pracowników za pomocą przepływów za pomocą metod
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Dodano brakujące adnotacje
@RequiresApi(...)
do konstruktorów i właściwościConstraints
. Są one teraz zgodne z odpowiednimi adnotacjami w metodach ustawiających wConstraints.Builder
, które istniały od wczesnych wersjiWorkManager
. (I6d7d2) WorkManager
ma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca wJobScheduler
i zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Do
WorkInfo
dodano ograniczenia. (I162c0)
Wersja 2.9.0-rc01
18 października 2023 r.
Zostanie wycofaneandroidx.work:work-*:2.9.0-rc01
Wersja 2.9.0-rc01 zawiera te zmiany.
- Brak zmian od ostatniej wersji beta
Wersja 2.9.0-beta01
6 września 2023 r.
Zostanie wycofaneandroidx.work:work-*:2.9.0-beta01
Wersja 2.9.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano stałe dla przyczyn zatrzymania zwracanych przez
WorkInfo.stopReason
iListenableWorker.stopReason
(I0cc00)
Wersja 2.9.0-alpha02
26 lipca 2023 r.
Zostanie wycofaneandroidx.work:work-*:2.9.0-alpha02
Wersja 2.9.0-alpha02 zawiera te zmiany.
Nowe funkcje
- Teraz
WorkManager
podaje wskazówkę, dlaczego pracownik został wcześniej zatrzymany. Można o nią zapytać bezpośrednio z poziomu pracownika za pomocą metodygetStopReason()
lub z poziomuWorkInfo
za pomocą metodygetStopReason()
.
Zmiany w interfejsie API
- Użytkownik
stopReason
został dodany do grupyWorkInfo
. UdostępniastopReason
po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReason
w użyteczny sposób, ponieważ po zatrzymaniu procesu roboczego aplikacja może zostać bardzo szybko zamknięta. (I21386) - Zezwalaj na ustawianie zegara za pomocą konfiguracji i używaj go do określania kolejności wykonywania testów Worker. (Ic586e)
- Do
ListenableWorker
dodano metodęgetStopReason()
, która podaje wskazówkę, dlaczego instancja robocza została zatrzymana. (I07060) - Dodaliśmy
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49)
Poprawki błędów
- Dodaliśmy możliwość pomijania
overrideNextScheduleTime
za pomocąTestDriver
i rozwiązaliśmy problemy z możliwością testowania. (Ic2905)
Wersja 2.9.0-alpha01
7 czerwca 2023 r.
Zostanie wycofaneandroidx.work:work-*:2.9.0-alpha01
Wersja 2.9.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Dostrzegalność za pomocą
Flow
. ZamiastLiveData
postęp pracownika można teraz obserwować za pomocą przepływuWorkManager.getWorkInfosFlow
i podobnych metod. - Precyzyjne planowanie okresowych zadań za pomocą
setNextScheduleTimeOverride
. Umożliwia to dynamiczne obliczanie następnego okresowego harmonogramu pracy, który można wykorzystać do wdrożenia 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.UPDATE
należy używać w połączeniu z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu podczas planowania następnego. WorkManager
testowanie z wątkami pasującymi do wersji produkcyjnej.ExecutorsMode.PRESERVE_EXECUTORS
można używać do zachowywania wykonawców ustawionych wConfiguration
i do korzystania z rzeczywistego wątku głównego.- Interfejsy API do współprogramów, takie jak
CoroutineWorker
, zostały przeniesione z dodatkowego artefaktuwork-runtime-ktx
do głównego artefaktuwork-runtime
.work-runtime-ktx
jest teraz puste.
Zmiany w interfejsie API
- Konstruktor
WorkInfo
jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) work-runtime-ktx
jest teraz pusta, aCoroutineWorker
i inne narzędzia specyficzne dla języka Kotlin są teraz dostępne w głównym artefakciework-runtime
. (I71a9a)- Dodano metodę
setNextScheduleTimeOverride
, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da). - Zmieniono nazwę
getEarliestRunTimeMillis
nagetNextScheduleTimeMillis
. (I2bd7a) - Informacje o następnym zaplanowanym uruchomieniu zostaną dodane do
WorkInfo
. (I797e4) - Do elementu
WorkInfo
dodawane są informacje o początkowym opóźnieniu i okresowości. (I52f2f) - Dodano metodę obserwowania pracowników za pomocą przepływów za pomocą metod
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Dodano brakujące adnotacje
@RequiresApi(...)
do konstruktorów i właściwości Constraints. Są one teraz zgodne z odpowiednimi adnotacjami w metodach ustawiających wConstraints.Builder
, które istniały od wczesnych wersjiWorkManager
. (I6d7d2) WorkManager
ma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca wJobScheduler
i zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Do
WorkInfo
dodano ograniczenia. (I162c0)
Wersja 2.8
Wersja 2.8.1
22 marca 2023 r.
Zostanie wycofaneandroidx.work:work-*:2.8.1
Wersja 2.8.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z błędem ANR w
RescheduleReceiver
, który wcześniej nieprawidłowo obsługiwał 2 jednoczesne transmisje. (b/236906724)
Wersja 2.8.0
8 lutego 2023 r.
Zostanie wycofaneandroidx.work:work-*:2.8.0
Wersja 2.8.0 zawiera te zmiany.
Ważne zmiany od wersji 2.7.0
Nowe funkcje
- Dodaliśmy możliwość aktualizowania
WorkRequests
w 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.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany w interfejsie API
WorkManager.updateWork
dodano, aby aktualizować zadania, zachowując ich pierwotny czas dodania do kolejki i łączenie w łańcuchy (I9a248, b/219446409).- Dodano użytkownika
ExistingPeriodicWorkPolicy.UPDATE
Ta zasada umożliwia aktualizowanie pracy okresowej według nazwy. Jest podobna do istniejącej 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.REPLACE
zostało wycofane, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymi funkcjamiREPLACE
iUPDATE
. Jeśli nadal chcesz zachować poprzednią semantykęREPLACE
, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE
, który jest identyczny zREPLACE
. (I985ed, b/219446409) - Dodaliśmy możliwość przechwytywania wyjątków harmonogramu (za pomocą funkcji setSchedulingExceptionHandler).
Consumer<Throwable>
- Dodaliśmy możliwość przekazywania wartości
Consumer<Throwable>
za pomocą funkcji setInitializationExceptionHandler, aby określić, czy podczas próby zainicjowania WorkManagera wystąpiły problemy. - Pomoc w
OneTimeWorkRequest
iPeriodicWorkRequest
została przeniesiona zandroidx.work:work-runtime-ktx
doandroidx.work:work-runtime
(I0010f, b/209145335) - Dodano metody pomocnicze
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
, aby bezpośrednio tworzyćWorkQuery
. (b/199919736) (If48f2, b/199919736) - Dodano
getForegroundInfo
doWorker
. (Ic1ead) RxWorker
zarówno w przypadku RxJava 2, jak i RxJava 3 zwraca terazsetForeground
, które można używać zamiastsetForegroundInfoAsync
zwracającegoListenableFuture
.Completable
RxWorker
zarówno w przypadku RxJava 2, jak i RxJava 3 magetForegroundInfo
zwracającySingle
, którego można używać zamiastgetForegroundInfoAsync
zwracającegoListenableFuture
. (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 usługa
WorkManager
została zainicjowana. Dodaliśmy też nowy interfejs APIgetConfiguration()
, który umożliwia programistom bibliotek uzyskanie konfiguracji, z jaką zainicjowano interfejsWorkManager
. (I6eff3, b/212300336)
Poprawki błędów
- Rozwiązaliśmy problem z zachłannym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie procesów roboczych przy dużym obciążeniu. (I9686b, b/248111307)
- Dodaliśmy
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONS
w przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278) - Przekazywanie anulowań z
CoroutineScope
doListenableFuture
podczas korzystania zsuspendCancellableCoroutine
.
Wersja 2.8.0-rc01
7 grudnia 2022 r.
Zostanie wycofaneandroidx.work:work-*:2.8.0-rc01
Wersja 2.8.0-rc01 zawiera te zmiany.
Nowe funkcje
- W tej wersji nie ma nowych funkcji. Jest to głównie aktualizacja wersji
Wersja 2.8.0-beta02
9 listopada 2022 r.
Zostanie wycofaneandroidx.work:work-*:2.8.0-beta02
Wersja 2.8.0-beta02 zawiera te zmiany.
Poprawki błędów
- Naprawiono metodę
equals
wWorkInfo
, która wcześniej nie uwzględniała informacji o nowej generacji. (4977cc)
Wersja 2.8.0-beta01
5 października 2022 r.
Zostanie wycofaneandroidx.work:work-*:2.8.0-beta01
Wersja 2.8.0-beta01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z zachłannym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie procesów roboczych przy dużym obciążeniu. (I9686b, b/248111307)
Wersja 2.8.0-alpha04
7 września 2022 roku
Zostanie wycofaneandroidx.work:work-*:2.8.0-alpha04
Wersja 2.8.0-alpha04 zawiera te zmiany.
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.updateWork
lubWorkManager.enqueueUniquePeriodicWork
przy 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 inicjowaniaWorkManager
wystąpiły problemy. (I061de)
Wersja 2.8.0-alpha03
10 sierpnia 2022 r.
Zostanie wycofaneandroidx.work:work-*:2.8.0-alpha03
Wersja 2.8.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy możliwość aktualizowania
WorkRequests
w sposób nienaruszający oryginalnego czasu dodania do kolejki, łańcucha itp. Więcej informacji znajdziesz w sekcjachWorkManager.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany w interfejsie API
WorkManager.updateWork
dodano, aby aktualizować zadania, zachowując ich pierwotny czas dodania do kolejki i łączenie w łańcuchy (I9a248, b/219446409).- Dodano użytkownika
ExistingPeriodicWorkPolicy.UPDATE
Ta zasada umożliwia aktualizowanie okresowej pracy 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.REPLACE
zostało wycofane, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymiREPLACE
iUPDATE
. Jeśli nadal chcesz zachować poprzednią semantykęREPLACE
, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE
, który jest identyczny zREPLACE
. (I985ed, b/219446409) - Dodaj możliwość przechwytywania wyjątków od harmonogramu, definiując
SchedulingExceptionHandler
. (I033eb) - Pomoc w
OneTimeWorkRequest
iPeriodicWorkRequest
została przeniesiona zandroidx.work:work-runtime-ktx
doandroidx.work:work-runtime
(I0010f, b/209145335)
Poprawki błędów
- Dodano
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
Wersja 2.8.0-alpha02
6 kwietnia 2022 roku
Zostanie wycofaneandroidx.work:work-*:2.8.0-alpha02
Wersja 2.8.0-alpha02 zawiera te zmiany.
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 usługa
WorkManager
została zainicjowana. Dodaliśmy też nowy interfejs APIgetConfiguration()
, który umożliwia programistom bibliotek uzyskanie konfiguracji, z jaką zainicjowano interfejsWorkManager
. (I6eff3, b/212300336)
Wersja 2.8.0-alpha01
12 stycznia 2022 r.
Zostanie wycofaneandroidx.work:work-*:2.8.0-alpha01
Wersja 2.8.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano metody pomocnicze
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
iWorkQuery.fromTags
, aby umożliwić bezpośrednie tworzenie obiektu WorkQuery. (If48f2, b/199919736) - Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937).
- Dodano
getForegroundInfo
doWorker
. (Ic1ead) - Dodano metody pomocnicze
WorkQuery.fromIds
do tworzenia obiektu WorkQuery bezpośrednio na podstawie identyfikatorów. (Ie5bdf, b/199919736) - RxWorker zwraca teraz
setForeground
zamiastCompletable
, co można wykorzystać zamiastsetForegroundInfoAsync
, które zwracaListenableFuture
. (I85156) - RxWorker dla RxJava 2 ma teraz
getForegroundInfo
zwracającySingle
, którego można używać zamiastgetForegroundInfoAsync
zwracającegoListenableFuture
. (I21c91, b/203851459) - RxWorker w przypadku RxJava 3 ma teraz funkcję
getForegroundInfo
zwracającą wartośćSingle
, której można używać zamiast funkcjigetForegroundInfoAsync
zwracającej wartośćListenableFuture
. (I1ca8a) - RxWorker zwraca teraz
setForeground
zamiastCompletable
, co można wykorzystać zamiastsetForegroundInfoAsync
, które zwracaListenableFuture
. (I992a3, b/203851459)
Poprawki błędów
- Przekazywanie anulowań z
CoroutineScope
doListenableFuture
podczas korzystania zsuspendCancellableCoroutine
. (I77e63)
Wersja 2.7
Wersja 2.7.1
17 listopada 2021 r.
Zostanie wycofaneandroidx.work:work-*:2.7.1
Wersja 2.7.1 zawiera te zmiany.
Poprawki błędów
- Anulowania w
CoroutineScope
są propagowane doListenableFuture
podczas 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.
Zostanie wycofaneandroidx.work:work-*:2.7.0
Wersja 2.7.0 zawiera te zmiany.
Ważne zmiany od wersji 2.6.0
WorkManager wprowadza nowy interfejs
WorkRequest.Builder.setExpedited(...)
API, który pomaga w przypadku ograniczeń usług działających na pierwszym planie w Androidzie 12.Gdy używasz
setExpedited(...)
, WorkManager deleguje zadania przyspieszone w JobSchedulerze od Androida 12, 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.
Zostanie wycofaneandroidx.work:work-*:2.7.0-rc01
Wersja 2.7.0-rc01 zawiera te zmiany.
Ta wersja jest identyczna z wersją androidx.work:work-*:2.7.0-beta01
.
Wersja 2.7.0-beta01
1 września 2021 roku
Zostanie wycofaneandroidx.work:work-*:2.7.0-beta01
Wersja 2.7.0-beta01 zawiera te zmiany.
Nowe funkcje
- Ograniczanie rywalizacji w SQLite w przypadku wielu procesów 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.
Zostanie wycofaneandroidx.work:work-*:2.7.0-alpha05
Wersja 2.7.0-alpha05 zawiera te zmiany.
Ta wersja zawiera też poprawki błędów z wersji WorkManager2.6.0-beta02
.
Wersja 2.7.0-alpha04
2 czerwca 2021 r.
Zostanie wycofaneandroidx.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.
Zostanie wycofaneandroidx.work:work-*:2.7.0-alpha03
Wersja 2.7.0-alpha03 zawiera te zmiany.
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-alpha02
dodanoRemoteCoroutineWorker
, czyli implementacjęRemoteListenableWorker
, która może łączyć się z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- WorkManager
2.6.0-alpha02
:dodaliśmy obsługę ograniczeniaTEMPORARILY_UNMETERED
. (I08d5e) - Z WorkManager
2.6.0-alpha02
:obsługa procesów roboczych w wielu procesach w przypadkusetProgressAsync()
. (Ib6d08) - W WorkManagerze:ustaw
WorkManagerInitializer
jako publiczne, aby inneandroidx.startup.Initializer
mogły używać ich jako zależności.2.6.0-alpha02
(I5ab11)
Wersja 2.7.0-alpha02
10 marca 2021 r.
Zostanie wycofaneandroidx.work:work-*:2.7.0-alpha02
Wersja 2.7.0-alpha02 zawiera te zmiany.
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.
Zostanie wycofaneandroidx.work:work-*:2.7.0-alpha01
Wersja 2.7.0-alpha01 zawiera te zmiany.
Nowe funkcje
WorkManager wprowadza nowy
WorkRequest.Builder.setExpedited(...)
interfejs API, 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 wcześniej były powiązane z cyklem życia usługi działającej na pierwszym planie, aplikacje mogą oznaczać
WorkRequest
jako przyspieszone.Ten interfejs API zastępuje interfejsy
setForegroundAsync(...)
/setForeground(...)
, które zostały wycofane.Gdy używasz
setExpedited(...)
, WorkManager deleguje zadania przyspieszone wJobScheduler
od Androida 12, zapewniając jednocześnie zgodność wsteczną w starszych wersjach Androida przez delegowanie do usług na pierwszym planie.
Zmiany w interfejsie API
- Dodaliśmy obsługę przyspieszonych
WorkRequest
.
Wersja 2.6.0
Wersja 2.6.0
1 września 2021 roku
Zostanie wycofaneandroidx.work:work-*:2.6.0
Wersja 2.6.0 zawiera te zmiany.
Ważne zmiany od wersji 2.5.0
WorkManager używa teraz
androidx.startup
do inicjowania WorkManagera. Jeśli w przeszłości do inicjowania WorkManagera używanotools:node="remove"
ContentProvider
, musisz wykonać 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.
Zostanie wycofaneandroidx.work:work-*:2.6.0-rc01
Wersja 2.6.0-rc01 zawiera te zmiany.
Ta wersja jest identyczna z wersją androidx.work:work-*:2.6.0-beta02
.
Wersja 2.6.0-beta02
21 lipca 2021 r.
Zostanie wycofaneandroidx.work:work-*:2.6.0-beta02
Wersja 2.6.0-beta02 zawiera te zmiany.
Poprawki błędów
RemoteWorkManager
prawidłowo odłącza się odRemoteWorkManagerService
, co umożliwia prawidłowe oczyszczenieRemoteWorkManagerService
. aosp/1730694RemoteListenableWorker
prawidłowo odłącza się odRemoteWorkerService
, co umożliwia prawidłowe oczyszczenieRemoteWorkerService
. aosp/1743817ForceStopRunnable
działa teraz tylko w głównym procesie aplikacji. Jest to optymalizacja, która zapobiega konfliktom zasobów w przypadku aplikacji korzystających z wielu procesów. aosp/1749180, aosp/1761729
Wersja 2.6.0-beta01
2 czerwca 2021 r.
Zostanie wycofaneandroidx.work:work-*:2.6.0-beta01
Wersja 2.6.0-beta01 zawiera te zmiany.
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.
Zostanie wycofaneandroidx.work:work-*:2.6.0-alpha02
Wersja 2.6.0-alpha02 zawiera te zmiany.
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
WorkManagerInitializer
publicznie, aby inneandroidx.startup.Initializer
mogły używać go jako zależności. (I5ab11)
Wersja 2.6.0-alpha01
24 marca 2021 r.
Zostanie wycofaneandroidx.work:work-*:2.6.0-alpha01
Wersja 2.6.0-alpha01 zawiera te zmiany.
Nowe funkcje
WorkManager
używa terazandroidx.startup
do inicjowania WorkManagera. Wcześniej zajmował się tymandroidx.work.impl.WorkManagerInitializer
. (aosp/1608813)Jeśli w przeszłości do inicjowania cyklu życia procesu używano
tools:node="remove"
, musisz wykonać 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 zwracaoutputData
elementu ListenableWorker. (Ie51e3)
Poprawki błędów
- Dodaliśmy obejście błędu OEM, który powoduje zgłaszanie wyjątku
SecurityException
podczas korzystania z interfejsów APIAlarmManager
. (aosp/1587518)
Wersja 2.5.0
Wersja 2.5.0
27 stycznia 2021 r.
Zostanie wycofaneandroidx.work:work-*:2.5.0
Wersja 2.5.0 zawiera te zmiany.
Główne zmiany od wersji 2.4.0
- Nowy artefakt
:work:work-multiprocess
dla aplikacji, które korzystają z wielu procesów. Zwiększa to wydajność, ponieważ 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 proces podstawowy 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
ActivityManager
nie może utworzyć instancjiJobService
, aby rozpocząć zadanie. Powoduje to ciche odrzucenie bazowego zadania z powodu błędu platformy.WorkManager
zapewnia teraz, że dla każdegoWorkRequest
istnieją zadania pomocnicze, gdyApplication
jest inicjowany przez zadania uzgadniania. Znacznie zwiększa to niezawodność wykonywania zadań. (b/172475041, aosp/1489577) WorkManager
ogranicza wzrost bazy danych, skracając czas buforowania, w którym śledzone sąWorkRequest
po zakończeniuWorkRequest
. Wcześniej okres trwania wynosił7
dni. Został on skrócony do1
dnia plus czas trwania keepResultsForAtLeast. (aosp/1419708)TestListenableWorkerBuilder
obsługuje teraz klasę reifikowaną rozszerzającąListenableWorker
, co ułatwia testowanie. (aosp/1443299, b/169787349)- Inspektor WorkManager jest teraz dostępny w Android Studio Arctic Fox.
Wersja 2.5.0-rc01
13 stycznia 2021 r.
Zostanie wycofaneandroidx.work:work-*:2.5.0-rc01
Wersja 2.5.0-rc01 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy błąd, który powodował, że po zaktualizowaniu encji za pomocą interfejsu API opartego na
WorkQuery
nieprawidłowo unieważ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
NoSuchElementException
podczas 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.
Zostanie wycofaneandroidx.work:work-*:2.5.0-beta02
Wersja 2.5.0-beta02 zawiera te zmiany.
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
PeriodicWorkRequest
nie były prawidłowo uzgadniane. (b/172475041, aosp/1489577) - Dodano obejście błędu platformy podczas zatrzymywania usługi działającej na pierwszym planie w przypadku korzystania z interfejsów API
setForeground*
. (b/170924044, aosp/1489901)
Wersja 2.5.0-beta01
28 października 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.5.0-beta01
Wersja 2.5.0-beta01 zawiera te zmiany.
Nowe funkcje
WorkManager
automatycznie ogranicza liczbęWorkRequest
, które mogą być pobierane przez harmonogram w trakcie przetwarzania. Żądania są nadal wykonywane w kolejności FIFO. (aosp/1455228)WorkManager
próbuje przywrócić prawidłowy stan, gdy magazyn danych aplikacji jest w złym stanie. (aosp/1463103)
Poprawki błędów
- Gdy
ListenableWorker
zostaną przerwane, natychmiast oznacz je 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.
Zostanie wycofaneandroidx.work:work-*:2.5.0-alpha03
Wersja 2.5.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
TestListenableWorkerBuilder
iTestWorkerBuilder
nie używają typów surowych. (I883ad, b/169787349)
Poprawki błędów
- Użyj
ApplicationInfo
, aby określić nazwę domyślnego procesu aplikacji. (b/168716641, aosp/1429950) - Popraw reguły widoczności dla
RemoteWorkManager
iRemoteWorkContinuation
. 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
Zostanie wycofaneandroidx.work:work-*:2.5.0-alpha02
Wersja 2.5.0-alpha02 zawiera te zmiany.
Nowe funkcje
- Dodaj interfejs API do WorkQuery, aby móc używać
id
s do wysyłania zapytań doWorkInfo
s. (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. Nie jest to dobre rozwiązanie, ponieważ zwiększa konkurencję w SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, których można używać do wyznaczania głównego procesu aplikacji za pomocą
Configuration#setDefaultProcessName(processName)
.processName
to pełna nazwa procesu, która wygląda jakpackageName:processName
(np.com.example:remote
). - Nowy zestaw interfejsów API:
RemoteWorkManager
iRemoteWorkContinuation
doenqueue
,cancel
iquery
żądań pracy. Te interfejsy API nie obejmują wariantówLiveData
, aby uniknąć konfliktów SQLite w wielu procesach. Wszystkie wywołaniaenqueue
,cancel
iquery
są przekazywane do procesu aplikacjiprimary
za pomocą AIDL i zwracają płynnyListenableFuture
. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- Bibliotekę WorkManager należy zwykle zainicjować w każdym procesie aplikacji. Nie jest to dobre rozwiązanie, ponieważ zwiększa konkurencję w SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, których można używać do wyznaczania głównego procesu aplikacji za pomocą
Zmiany w interfejsie API
- WorkManager bardziej agresywnie usuwa ukończone obiekty
WorkRequest
, które nie mają niekompletnych zależności. Okres buforowy zmieniono z7
dni na1
dzień. (aosp/1419708)
Poprawki błędów
- WorkManager aktywnie uzgadnia teraz zadania, dzięki czemu zadania
WorkRequest
iJobScheduler
są zsynchronizowane po zainicjowaniuWorkManager
. (aosp/1412794, b/166292069)
Wersja 2.5.0-alpha01
19 sierpnia 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.5.0-alpha01
Wersja 2.5.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Zmiany w wewnętrznych interfejsach API, które pozwolą nam w przyszłości udostępniać lepsze narzędzia z
WorkManager
. Będziemy na bieżąco informować o zmianach.
Poprawki błędów
- Obsługa symbolu
SecurityException
podczas śledzenia stanu sieci na niektórych urządzeniach. (aosp/1396969)
Wkład zewnętrzny
- Poprawienie dokumentacji
ArrayCreatingInputMerger
przez Zaca Sweersa (github/43).
Wersja 2.4.0
Wersja 2.4.0
22 lipca 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.4.0
Wersja 2.4.0 zawiera te zmiany.
Główne zmiany od wersji 2.3.0
- Planista w procesie
WorkManager
ma teraz większe możliwości. Wcześniej w trakcie przetwarzaniaScheduler
uwzględniano tylko zadania, które nie były opóźnione i spełniały ograniczenia. Harmonogram w trakcie przetwarzania śledzi terazWorkRequest
, które mogą zostać wykonane w przyszłości, w tym PeriodicWorkRequest. ProcesScheduler
nie uwzględnia też limitów planowania (ale nadal jest ograniczony do rozmiaruExecutor
uż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,WorkManager
wprowadza 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
WorkInfo
za pomocąWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania oWorkInfo
na 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ść przesyłania do
WorkManager
żądań informacji diagnostycznych 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 doAPPEND
, ale zastępuje łańcuch, który został anulowany lub nie spełnia wymagań wstępnych. (b/134613984, aosp/1199640)Umożliwia dodawanie niestandardowego
RunnableScheduler
do śledzenia 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_LOW
do platformy. (aosp/1312583)Harmonogram w procesie korzysta teraz z lepszych interfejsów API do określania nazwy procesu. Jest to przydatne w przypadku aplikacji, które korzystają z wielu procesów. (aosp/1324732)
Nowe reguły Lint, które wymuszają:
- Używanie odpowiedniego
foregroundServiceType
podczas korzystania z interfejsów 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
ListenableWorker
są terazpublic
, gdy używana jest domyślna wartośćWorkerFactory
. (aosp/1291262)
- Używanie odpowiedniego
Wywołania
setForegroundAsync()
, które nie zostaną ukończone przed ukończeniemListenableWorker
, będą teraz sygnalizowane za pomocąIllegalStateException
w zwróconymListenableFuture
. (aosp/1262743)Usunęliśmy błąd polegający na tym, że po przerwaniu działania usługi na pierwszym planie
Worker
nie zatrzymuje się usługa na drugim planieForegroundService
. (b/155579898, aosp/1302153)Naprawiono błąd, w którym
WorkManager
próbuje wykonać wiele instancjiWorker
powiązanych z usługą działającą na pierwszym planie (b/156310133, aosp/1309853).
Wersja 2.4.0-rc01
24 czerwca 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.4.0-rc01
Wersja 2.4.0-rc01 zawiera te zmiany.
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 zmiany.
Poprawki błędów
- Usunęliśmy błąd polegający na tym, że po przerwaniu działania usługi na pierwszym planie
Worker
nie zatrzymuje się usługa na drugim planieForegroundService
. (b/155579898, aosp/1302153) - Naprawiono błąd, w którym
WorkManager
próbuje wykonać wiele instancjiWorker
powią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_LOW
do platformy. (aosp/1312583)
Wersja 2.4.0-alpha03
29 kwietnia 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.4.0-alpha03
Wersja 2.4.0-alpha03 zawiera te zmiany.
Nowe funkcje
- WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - Dodano nową regułę lint, która zapewnia, że implementacje
ListenableWorker
są terazpublic
, gdy używana jest domyślna wartośćWorkerFactory
. (aosp/1291262)
Zmiany w interfejsie API
- Wywołanie funkcji
setProgressAsync()
po zakończeniu działania funkcjiListenableWorker
będzie teraz sygnalizowaćException
za pomocą funkcjiListenableFuture
. (aosp/1285494) WorkQuery.Builder
jest teraz oznaczony jakofinal
. (aosp/1275037)WorkQuery.Builder
metody fabrycznewithStates
,withTags
iwithUniqueWorkNames
zostały zmienione nafromStates
,fromTags
ifromUniqueWorkNames
. (aosp/1280287)
Poprawki błędów
- Ignoruj
SecurityException
podczas śledzenia stanu sieci urządzenia. (b/153246136, aosp/1280813)
Wersja 2.4.0-alpha02
1 kwietnia 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.4.0-alpha02
Wersja 2.4.0-alpha02 zawiera te zmiany.
Nowe funkcje
- Dodano nową regułę Lint, która ostrzega, gdy
WorkRequest
wymaga 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. W rezultacie takie żądania będą wykonywane rzadziej niż oczekiwano. (aosp/1253840)
Zmiany w interfejsie API
Dodaliśmy możliwość wyszukiwania
WorkInfo
za pomocąWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania oWorkInfo
na podstawie kombinacji kilku atrybutów. Więcej informacji znajdziesz w sekcjachWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
iWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)Wywołania
setForegroundAsync()
, które nie zostaną ukończone przed ukończeniemListenableWorker
, będą teraz sygnalizowane za pomocąIllegalStateException
w zwróconymListenableFuture
. (aosp/1262743)
Poprawki błędów
- Naprawiono regułę lint, która sprawdza nieprawidłowe czasy trwania interwałów w przypadku
PeriodicWorkRequest
s. (aosp/1254846, b/152606442)
Wersja 2.4.0-alpha01
4 marca 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.4.0-alpha01
Wersja 2.4.0-alpha01 zawiera te zmiany.
Nowe funkcje
Planista w procesie
WorkManager
ma 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 terazWorkRequest
, które mogą zostać wykonane w przyszłości, w tymPeriodicWorkRequest
. Proces planowania w toku nie uwzględnia też limitów planowania (ale nadal jest ograniczony rozmiaremExecutor
używanego przez WorkManager). Oznacza to, że aplikacja może teraz wykonywać znacznie więcejWorkRequest
, gdy działa na pierwszym planie. (aosp/1185778)Dodaliśmy możliwość żądania informacji diagnostycznych z WorkManagera 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
foregroundServiceType
podczas korzystania z interfejsów APIsetForegroundAsync()
. (b/147873061, aosp/1215915) - Określanie identyfikatorów
JobScheduler
, którychWorkManager
należ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 doAPPEND
, ale zastępuje łańcuch, w którym anulowano lub nie spełniono wymagań wstępnych. (b/134613984, aosp/1199640)Umożliwia dodawanie niestandardowego
RunnableScheduler
do śledzeniaWorkRequest
, 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.
Zostanie wycofaneandroidx.work:work-*:2.3.4
Wersja 2.3.4 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd, który powodował uruchamianie wielu instancji długotrwałego
Worker
s po przekroczeniu 10-minutowego okna wykonywania. (aosp/1247484, b/150553353) - Poprawka dla narzędzia lint WorkManager
IssueRegistry
. Dziękujemy @ZacSweers z Slacka za pomoc. (aosp/1217923)
Wersja 2.3.3
Wersja 2.3.3
4 marca 2020 r.
Zostanie wycofaneandroidx.work:work-*:2.3.3
Wersja 2.3.3 zawiera te zmiany.
Poprawki błędów
- Usunęliśmy błąd polegający na tym, że jeśli
Worker
zostało przerwane, nie było prawidłowo planowane 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 zmiany.
Poprawki błędów
- Rozwiązuje problem, który w rzadkich przypadkach powodował przekroczenie limitu 100 zadań w JobScheduler przez WorkManager. (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)
- Ulepszono 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.
Zostanie wycofaneandroidx.work:work-*:2.3.1
Wersja 2.3.1 zawiera te zmiany.
Poprawki błędów
- Lepsze zarządzanie cyklem życia
Notification
w przypadku długotrwałychWorker
, które działają, gdy aktywna jestService
na pierwszym planie. (aosp/1218539, b/147249312) WorkManager
zależy teraz od stabilnej wersjiandroidx.sqlite:sqlite-framework:2.1.0
. (aosp/1217729)- Dodano reguły lint, aby zapewnić, że w przypadku używania
foregroundServiceType
wForegroundInfo
wAndroidManifest.xml
określonoforegroundServiceType
. (aosp/1214207, b/147873061)
Wersja 2.3.0
Wersja 2.3.0
22 stycznia 2020 r.
androidx.work:work-*:2.3.0
zostaje opublikowany bez zmian od 2.3.0-rc01
. Wersja 2.3.0 zawiera te zmiany.
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.
Zostanie wycofaneandroidx.work:work-*:2.3.0-rc01
Wersja 2.3.0-rc01 zawiera te zmiany.
Ta wersja jest identyczna z wersją 2.3.0-beta02
.
Poprawki błędów
- Artefakt
work-testing
definiuje terazapi
zależność odwork-runtime-ktx
. (aosp/1194410)
Wersja 2.3.0-beta02
18 grudnia 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.3.0-beta02
Wersja 2.3.0-beta02 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy lepszy komunikat o błędzie w przypadku nieodwracalnych wyjątków SQLite. (aosp/1185777)
- Dodano regułę lint, która zapewnia, że dostawca treści
androidx.work.impl.WorkManagerInitializer
jest usuwany zAndroidManifest.xml
podczas korzystania z inicjowania na żądanie. (aosp/1167007) - Dodano ostrzeżenie narzędzia lint, gdy w przypadku elementu
PeriodicWorkRequest
użyto elementuenqueue()
zamiastenqueueUniquePeriodicWork()
. (aosp/1166032)
Zmiany w interfejsie API
ForegroundInfo
wymaga teraz określenianotificationId
, które ma być używane podczas korzystania zListenableWorker.setForegroundAsync()
. Jest to zmiana powodująca niezgodność. Dzięki temu możesz równolegle uruchamiać wiele długotrwałychWorker
.WorkManager
lepiej zarządza też czasem życia podanychNotification
. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Poprawki błędów
- Naprawiliśmy błąd w implementacji AlarmManager, który powodował, że alarmy nie były prawidłowo usuwane. (aosp/1156444)
- Rozwiązaliśmy błąd, który powodował, że pusta lista
WorkRequest
s prowadziła do utworzenia nieprawidłowego łańcuchaWorkContinuation
. (b/142835274, aosp/1157051)
Zmiany zależności
- WorkManager używa teraz biblioteki Room w wersji 2.2.2.
Wersja 2.3.0-beta01
20 listopada 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.3.0-beta01
Wersja 2.3.0-beta01 zawiera te zmiany.
Nowe funkcje
- Dodano nową regułę lint, która zapobiega błędom programistów wynikającym z nieprawidłowej implementacji
androidx.work.Configuration.Provider
podczas korzystania z inicjowania na żądanie. aosp/1164559
Wersja 2.3.0-alpha03
23 października 2019 r.
Zostanie wycofaneandroidx.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 anulowanieWorkRequest
bez konieczności rejestrowania kolejnego komponentu wAndroidManifest.xml
. Ten interfejs API szczególnie ułatwia anulowanieWorkRequest
zNotification
. Spodziewamy się, że będzie to połączone z nowymi interfejsami API pierwszego planu w wersji 2.3.0. - WorkManager zależy teraz od stabilnej wersji
androidx.room:*:2.2.0
.
Zmiany w interfejsie API
- Zmieniono nazwę
ForegroundInfo.getNotificationType()
naForegroundInfo.getForegroundServiceType()
, aby zachować większą spójność z interfejsami 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.
Zostanie wycofaneandroidx.work:work-*:2.3.0-alpha02
Wersja 2.3.0-alpha02 zawiera te zmiany.
Nowe funkcje
- WorkManager obsługuje teraz długotrwałe lub ważne zadania, które powinny być utrzymywane 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
containsKey
w przeglądarceData
zmieni nazwę nahasKeyWithValueOfType
. Odpowiednia metoda rozszerzenia w bibliotecektx
również została zmieniona. (b/141916545)
Poprawki błędów
- WorkManager sprawiedliwie planuje pracę, gdy liczba zadań
WorkRequest
w kolejce zbliża się do limitów planowania. (aosp/1105766) - WorkManager wywołuje
ListenableWorker#onStopped()
tylko wtedy, gdy zadanie nie zostało jeszcze ukończone. (b/140055777) - WorkManager usuwa teraz informacje o postępach, gdy zadanie zostanie przerwane lub osiągnie stan końcowy. (aosp/1114572)
Data
ma teraz znacznie bardziej przydatnątoString()
reprezentację. (b/140945323)Data
ma teraz lepsząequals()
metodę. Obsługuje teżdeepEquals
w przypadku typówArray
. (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.
Zostanie wycofaneandroidx.work:work-*:2.3.September 5, 20190-alpha01
Listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
ListenableWorker
mogą teraz ustawiać postępy za pomocą interfejsu APIsetProgressAsync()
. Dodaliśmy też odpowiedni interfejs APIsuspend
-ingsetProgress
w przeglądarceCoroutineWorker
oraz interfejs APIsetProgress
w przeglądarceRxWorker
, który zwracaSingle<Void>
. Dzięki tym nowym interfejsom API instancje robocze mogą przekazywać informacje o postępach za pomocąWorkInfo
, który ma odpowiedni interfejs APIgetProgress
. (b/79481554)Data
ma interfejs APIcontainsKey()
, którego można używać do sprawdzania, czy dane wejściowe doWorker
s mają klucze o oczekiwanym typie. (b/117136838)Data
można teraz serializować za pomocąData.toByteArray()
iData.fromByteArray()
. Pamiętaj, że w przypadkuData
nie 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
InputMergerFactory
za pomocąConfiguration.setInputMergerFactory
. (b/133273159)
Zmiany w interfejsie API
- WorkManager zgłosi instancję
IllegalStateException
, jeśliWorkerFactory
zwróci instancjęListenableWorker
, która została wcześniej wywołana. (b/139554406) - Aktualizacje dokumentacji dotyczące anulowania
ListenableFuture
ionStopped()
wywołania zwrotnego wListenableWorker
. (b/138413671)
Poprawki błędów
- Procesor w trakcie przetwarzania ignoruje teraz elementy
WorkRequest
z ograniczeniemidle
. Te żądania są teraz odbierane przezJobScheduler
tylko wtedy, gdy urządzenie jestidle
. (aosp/1089779) TestScheduler
w testach prawidłowo używa określonego parametruExecutor
dla wewnętrznego wykonawcy zadań. (aosp/1090749)
Wersja 2.2.0
Wersja 2.2.0
15 sierpnia 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.2.0
Listę zmian 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.
Zostanie wycofaneandroidx.work:work-*:2.2.0-rc01
Listę zmian w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiliśmy błąd w implementacji AlarmManager, który powodował przedwczesne wyłączanie usługi i w rzadkich przypadkach skutkował
RejectedExecutionException
. (aosp/1092374) (b/138238197). - Dodaliśmy obejście problemu
NullPointerException
podczas korzystania z interfejsów APIJobScheduler
na niektórych urządzeniach. (aosp/1091020) (b/138364061), (b/138441699)
Wersja 2.2.0-beta02
19 lipca 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.2.0-beta02
Listę zmian w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność od biblioteki Jacoco, która została wprowadzona w wersji
2.2.0-beta01
.
Wersja 2.2.0-beta01
17 lipca 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.2.0-beta01
Listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
androidx.work:work-gcm:2.2.0-beta01
to nowy artefakt Mavena, który obsługuje używanie GCMNetworkManager jako harmonogramu, gdy Usługi Google Play są dostępne na poziomach interfejsu API <= 22. Jest to opcjonalna zależność, która pomaga w bardziej niezawodnym i wydajnym przetwarzaniu w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Play nie są dostępne, WorkManager będzie nadal używać AlarmManager na starszych urządzeniach.
Poprawki błędów
- Poprawka błędu
IllegalArgumentException
podczas śledzenia stanu sieci na tabletach Nvidia Shield K1. (aosp/1010188)
Wersja 2.1.0
Wersja 2.1.0
11 lipca 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.1.0
Ta wersja jest identyczna z wersją androidx.work:work-*:2.1.0-rc01
.
Ważne zmiany od wersji 2.0.1
work-runtime-ktx
wymaga teraz Javy 8. Jeśli napotkasz jakieś problemy, możesz dodać do plikubuild.gradle
te informacje:kotlinOptions { jvmTarget = "1.8" }
- Dodano inicjowanie na żądanie w przypadku WorkManagera, który będzie tworzony tylko wtedy, gdy będzie do niego odwołanie. b/127497100 Aby skonfigurować projekt pod kątem inicjowania na żądanie:
- Wyłącz automatyczny inicjator.
- Zaimplementuj
Configuration.Provider
w swoim niestandardowym obiekcieApplication
. - Zmień wszystkie odwołania do
WorkManager.getInstance()
naWorkManager.getInstance(Context)
. W ramach tej zmiany wycofaliśmyWorkManager.getInstance()
. Zawsze bezpieczniej jest wywołać nowy zamiennik, nawet jeśli nie przeprowadzasz inicjowania na żądanie.WorkManager.getInstance(Context)
PeriodicWorkRequest
obsługują teraz początkowe opóźnienia. Możesz użyć metodysetInitialDelay
naPeriodicWorkRequest.Builder
, aby ustawić początkowe opóźnienie. b/111404867- Dodano możliwość przekazywania uprawnień co najmniej jednemu zarejestrowanemu
WorkerFactory
za pomocąDelegatingWorkerFactory
. b/131435993 - Dodano możliwość dostosowania
Executor
używanego przez WorkManager do wszystkich wewnętrznych operacji za pomocąConfiguration.Builder.setTaskExecutor
. - Dodano możliwość tworzenia klas
Worker
iListenableWorker
, które można testować jednostkowo, za pomocąTestWorkerBuilder
iTestListenableWorkerBuilder
w artefakciework-testing
.- Pamiętaj, że
work-testing
pobiera 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
Data
mogą 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.
Zostanie wycofaneandroidx.work:work-*:2.1.0-rc01
Listę zmian w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiliśmy błąd, który powodował awarię aplikacji podczas wykonywania zadań z
JobScheduler
w trakcie tworzenia kopii zapasowej b/135858602.
Wersja 2.1.0-beta02
20 czerwca 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.1.0-beta02
Listę zmian w tej wersji znajdziesz tutaj.
Poprawki błędów
TestListenableWorkerBuilder
używa teraz prawidłowego znakuWorkerFactory
podczas tworzenia instancjiListenableWorker
. b/135275844- Naprawiliśmy błąd, który powodował odchylenia w oknach wykonywania
WorkRequest
z powodu zakończenia procesu. b/135272196
Wersja 2.1.0-beta01
13 czerwca 2019 r.
Zostanie wycofaneandroidx.work:work-*:2.1.0-beta01
Listę zmian 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 WorkManagera. b/134058261
- Dodano do interfejsów JobScheduler API wywołania obronne w przypadku nieprawidłowo działających urządzeń.
Wersja 2.1.0-alpha03
5 czerwca 2019 r.
Zostanie wycofaneandroidx.work:*:2.1.0-alpha03
Poprawki błędów
- Ulepszona dokumentacja
PeriodicWorkRequest
. WorkManagerTestInitHelper
używa teraz prawidłowego wykonawcy w tle do testów.- Rozwiązania problemów z SQLite podczas obsługi dużych transakcji na niektórych urządzeniach. (b/130182503)
- Zależności WorkManagera są teraz bardziej szczegółowe. (b/133169148).
- Obejście błędów specyficznych dla producenta OEM w implementacji
JobScheduler
podczas planowania zadań za pomocą WorkManager. - Ulepszenia harmonogramu opartego na AlarmManager w zakresie czasu życia usługi, które wcześniej powodowały rzadkie awarie. (b/133313734)
Wersja 2.1.0-alpha02
16 maja 2019 r.
Opublikowaliśmy wersję WorkManager 2.1.0-alpha02. Ta wersja zawiera kilka nowych interfejsów API.
Zmiany w interfejsie API
PeriodicWorkRequest
obsługują teraz początkowe opóźnienia. Możesz użyć metodysetInitialDelay
naPeriodicWorkRequest.Builder
, aby ustawić początkowe opóźnienie. b/111404867Dodano możliwość przekazywania uprawnień co najmniej jednemu zarejestrowanemu
WorkerFactory
za pomocąDelegatingWorkerFactory
. b/131435993Dodano możliwość dostosowania
Executor
używanego przez WorkManager do wszystkich wewnętrznych operacji za pomocąConfiguration.Builder.setTaskExecutor
.Ulepszona dokumentacja dotycząca
WorkRequest.keepResultsForAtLeast
(b/130638001), inicjowania na żądanie iPeriodicWorkRequest.Builder
(b/131711394).
Wersja 2.1.0-alpha01
24 kwietnia 2019 r.
Opublikowaliśmy wersję 2.1.0-alpha01 biblioteki WorkManager. 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 WorkManagera, który będzie tworzony tylko wtedy, gdy będzie do niego odwołanie. b/127497100 Aby skonfigurować projekt pod kątem inicjowania na żądanie:
- Wyłącz automatyczny inicjator.
- Zaimplementuj
Configuration.Provider
w swoim niestandardowym obiekcieApplication
. - Zmień wszystkie odwołania do
WorkManager.getInstance()
naWorkManager.getInstance(Context)
. W ramach tej zmiany wycofaliśmyWorkManager.getInstance()
. Zawsze bezpieczniej jest wywołać nowy zamiennik, nawet jeśli nie przeprowadzasz inicjowania na żądanie.WorkManager.getInstance(Context)
- Dodano możliwość tworzenia klas
Worker
iListenableWorker
, które można testować jednostkowo, za pomocąTestWorkerBuilder
iTestListenableWorkerBuilder
w artefakciework-testing
.- Pamiętaj, że
work-testing
pobiera 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
Data
mogą 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 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 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 wersję WorkManager 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
StackOverflowError
związaną z długimi łańcuchami zadań. b/129091233 - Zaktualizowano dokumentację
PeriodicWorkRequest
, aby wskazać, że elastyczny czas nie jest obsługiwany w przypadku interfejsu API w wersji 23. - Naprawiliśmy kilka uszkodzonych linków 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 wersją 2.0.0-rc01 i jest wersją stabilną 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 wersję WorkManager 2.0.0-rc01. Ta wersja jest identyczna ze stabilną wersją 1.0.0, ale ma zależności AndroidX. Gdy osiągnie ona stabilną wersję 2.0.0, należy ją uwzględnić, a starsze wersje 1.x będą otrzymywać tylko najważniejsze poprawki błędów. Wszystkie aktywne prace rozwojowe będą dotyczyć wersji 2.x.
Zależności sprzed AndroidaX
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 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 WorkManager w wersji 2.x, ponieważ w przyszłości wersja 1.x będzie rzadko aktualizowana. W przypadku biblioteki w wersji 1.x nie będziemy też udostępniać nowych interfejsów API.
Wersja 1.0.1-rc01
2 kwietnia 2019 r.
Opublikowaliśmy wersję 1.0.1-rc01 biblioteki WorkManager. Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo z 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
StackOverflowError
związaną z długimi łańcuchami 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 WorkManagera 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
Worker
s są teraz prawidłowo planowane po awarii aplikacji. b/124546316Worker
, które zgłaszają nieobsłużony wyjątekException
, są teraz prawidłowo oznaczane jakoFAILED
i nie powodują już awarii procesu aplikacji.
Wersja 1.0.0-rc01
14 lutego 2019 r.
Jest to wersja kandydująca do publikacji stabilnej wersji 1.0.0 biblioteki WorkManager. Ta wersja zawiera 1 poprawkę błędu.
Poprawki błędów
- Implementacja oparta na AlarmManagerze prawidłowo uwzględnia teraz
flex
w przypadku PeriodicWorkRequest. b/124274584
Wersja 1.0.0-beta05
6 lutego 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Naprawiono problem z używaniem
JobScheduler.getPendingJob(...)
w interfejsie API 23. b/123893059 - Naprawiono
NullPointerException
na urządzeniach z Androidem 5.1 (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 wybudzenia w przypadku korzystania z implementacji opartej na AlarmManager.
Wersja 1.0.0-beta03
25 stycznia 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Wprowadziliśmy regresję
1.0.0-beta02
, która w niektórych sytuacjach powodowała nieprawidłowe wykonywanie zadań. b/123211993 - Rozwiązaliśmy problem polegający na tym, że w niektórych przypadkach zadania nie były wykonywane zgodnie z harmonogramem wycofywania.b/122881597
- Naprawiono
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (API) lub starszym. Jest to kontynuacja poprawki z1.0.0-beta02
. b/121345393 - Dodaliśmy adnotację
exported=false
do niektórych komponentów w pliku manifestu, których ona dotychczas nie obejmowała. - Dodaliśmy informacje o tym, jak WorkManager współdziała z systemem operacyjnym, w dokumentacji na poziomie pakietu.
Wersja 1.0.0-beta02
15 stycznia 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Naprawiono przypadek brzegowy, w którym zadanie okresowe mogło być wykonywane więcej niż raz w interwale na urządzeniach z Androidem 6.0 (poziom interfejsu API 23). b/121998363
- Naprawiono
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (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
- Dodano zmianę, która ma zapobiegać potencjalnym sytuacjom wyścigu między wieloma instancjami
LiveData
używanymi przez WorkManager. - Zamiast
1.1.1-rc01
użyto zależnościRoom
1.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 były powiązane z ukończonymi zadaniami nadrzędnymi, nie będą już uruchamiane. b/120811767
- Prawidłowo zainicjowane klasy rejestrowania (widoczne głównie podczas testów).
Wersja 1.0.0-alpha13
12 grudnia 2018 r.
Ta wersja zawiera niewielką zmianę w interfejsie API, która będzie przydatna dla niektórych użytkowników Kotlina.
Zmiany w interfejsie API
- Klasa
androidx.work.Result
została przeniesiona i jest teraz klasą wewnętrzną klasyListenableWorker
. Zapobiega to konfliktom refaktoryzacji z klasą najwyższego poziomuResult
w Kotlinie. Jest to zmiana interfejsu API powodująca niezgodność wsteczną. b/120564418
Zmiany w interfejsie API powodujące niezgodność
- Klasa
androidx.work.Result
został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-rxjava2
wprowadzaRxWorker
. Jest toListenableWorker
, która oczekujeSingle<Payload>
. - Obsługa Firebase JobDispatcher została usunięta z powodu zbliżającego się wycofania tej usługi. Oznacza to, że artefakt
work-firebase
nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji. - Połączono
Payload
zResult
.Result
jest 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()
. TwojeListenableFuture
teraz kosztujeResult
zamiastPayload
.Worker
nie 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
ContentUriTriggers
i metody, które się do niej odwołują, nie są już dostępne do użytku publicznego. Jest to zmiana powodująca niezgodność. - Aby uprościć interfejs API, usunęliśmy pozostałe metody varargs w
WorkManager
,WorkContinuation
iOneTimeWorkRequest
. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty zmienne funkcjąArrays.asList(...)
. Nadal uwzględniamy wersje każdej metody z 1 argumentem. Jest to zmiana powodująca niezgodność. - Usunięto
WorkContinuation.combine(OneTimeWorkRequest, *)
wariantów. Prezentowali mylący interfejs API. Obecne metodycombine
są bardziej zrozumiałe. Jest to zmiana powodująca niezgodność.
Poprawki błędów
- Implementacje starsze niż Marshmallow są teraz bardziej niezawodne w przywracaniu działania po zakończeniu procesu już wykonywanego zadania.
LiveData
, które jest obserwowane za pomocąobserveForever
, jest śledzone za pomocą WorkManagera. Jest to przeniesienie poprawki biblioteki Room. b/74477406Data.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óciWorkInfo
z wartościąCANCELLED
State
podczasListenableWorker.onStopped()
. - Traktuj
null
Result
jako 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 z powodu zbliżającego się wycofania tej usługi. Oznacza to, że artefakt
work-firebase
nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji. - Połączono
Payload
zResult
.Result
jest 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()
. TwojeListenableFuture
teraz kosztujeResult
zamiastPayload
.Worker
nie 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
ContentUriTriggers
i metody, które się do niej odwołują, nie są już dostępne do użytku publicznego. - Aby uprościć interfejs API, usunęliśmy pozostałe metody varargs w
WorkManager
,WorkContinuation
iOneTimeWorkRequest
. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty zmienne funkcjąArrays.asList(...)
. Nadal uwzględniamy wersje każdej metody z 1 argumentem. - Usunięto
WorkContinuation.combine(OneTimeWorkRequest, *)
wariantów. Prezentowali mylący interfejs API. Obecne metodycombine
są bardziej zrozumiałe.
Wersja 1.0.0-alpha11
8 listopada 2018 r.
Ta wersja zawiera wiele zmian, które staną się stabilnym interfejsem API w dniu beta
.
Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API powodujące niezgodność poniżej.
Zmiany w interfejsie API
work-runtime-ktx
wprowadza nowyCoroutineWorker
.- Nazwa
WorkStatus
została zmieniona naWorkInfo
. Wszystkie powiązane warianty metodygetStatus
zostały zmienione na powiązane wariantygetWorkInfo
. Jest to zmiana powodująca niezgodność. ListenableWorker.onStopped()
no longer accepts ma argument logiczny określający, czyWorkRequest
został anulowany.WorkManager
nie rozróżnia już tych przypadków. Jest to zmiana powodująca niezgodność.- Pakiet
androidx.work.test
został zmieniony na pakietandroidx.work.testing
. Jest to zmiana powodująca niezgodność. - Funkcje ustawiające w
Constraints
nie są już częścią publicznego interfejsu API. Jest to zmiana powodująca niezgodność. - Funkcje
WorkerParameters.getTriggeredContentUris()
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
WorkStatus
nie 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ść. - Dodano wiele adnotacji
@NonNull
do publicznego interfejsu API, aby poprawić jego ergonomię. - Dodano interfejs API
WorkManager.enqueueUniqueWork()
, który umożliwia umieszczanie w kolejce unikalnych elementówOneTimeWorkRequest
bez konieczności tworzenia elementuWorkContinuation
. - Wszystkie warianty metod
enqueue
icancel
wWorkManager
zwracają teraz nowy typOperation
. Jest to zmiana powodująca niezgodność. - Wszystkie warianty
enqueue
nie akceptują już argumentów varargs dlaWorkRequest
. 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
initialize
WorkManager
więcej niż raz w ramach jednego procesu spowoduje teraz wystąpienieIllegalStateException
. Jest to zmiana powodująca niezgodność.
Poprawki błędów
WorkRequest.Builder
w artefakciework-runtime-ktx
używają terazListenableWorker
. Poprawki b/117666259- Upewnij się, że następny czas uruchomienia
PeriodicWork
jest w przyszłości. Poprawki b/118204399 - Usuń potencjalne operacje wejścia/wyjścia dysku podczas korzystania z WorkManager przy uruchamianiu aplikacji. Poprawki b/117796731
- Napraw sytuację wyścigu w
WorkConstraintsTracker
. Rozwiązuje problem android-workmanager/issues/56
Zmiany w interfejsie API powodujące niezgodność
- Nazwa
WorkStatus
została zmieniona naWorkInfo
. Wszystkie powiązane warianty metodygetStatus
zostały zmienione na powiązane wariantygetWorkInfo
. ListenableWorker.onStopped()
no longer accepts ma argument logiczny określający, czyWorkRequest
został anulowany.WorkManager
nie rozróżnia już tych przypadków.- Pakiet
androidx.work.test
został zmieniony na pakietandroidx.work.testing
. - Funkcje ustawiające w
Constraints
nie 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
WorkStatus
nie jest już częścią publicznego interfejsu API. - Nazwy
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostaną zmienione odpowiednio naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. - Wszystkie warianty metod
enqueue
icancel
wWorkManager
zwracają teraz nowy typOperation
. - Wszystkie warianty
enqueue
nie akceptują już argumentów varargs dlaWorkRequest
. - Próba
initialize
WorkManager
wię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 powodujące 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, która może powodować problemy. - Zmieniliśmy nazwę
NonBlockingWorker
naListenableWorker
. Jest to teraz nieukryta klasa publiczna gotowa do użycia.ListenableWorker
udostępnia jedną metodę abstrakcyjną,ListenableFuture<Payload> onStartWork()
, która jest wywoływana w głównym wątku. To Ty musisz rozpocząć i przetworzyć pracę asynchronicznie. Po zakończeniu odpowiednio zaktualizujListenableFuture
. Implementacje referencyjneListenableFuture
są dostępne w pakiecieFutures
walpha02
(patrz sekcjaWorkManager
poniżej).Worker
rozszerzaListenableWorker
i nadal działa jak wcześniej, z abstrakcyjną metodąResult doWork()
.- Przeniesiono niektóre metody i elementy z
Worker
doListenableWorker
. - Wkrótce udostępnimy implementacje referencyjne
ListenableWorker
, które korzystają z korutyn w Kotlinie (gdy zostaną wydane stabilne wersje) i RxJava2.
- Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
został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 instancjiWorkerFactory
utworzonych 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, która może powodować problemy.- 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
ListenableFuture
nie informują o tym, czy operacja zakończyła się powodzeniem, czy niepowodzeniem. Wskazują tylko, że została zakończona. Aby uzyskać te informacje, nadal musisz łączyć metody WorkManager. - Ignorujemy wywołania
cancel()
w przypadku tych obiektów, ponieważ są one mylące i trudno je interpretować (czy anulujesz operację, czy wynikającą z niej pracę?). Jest to zgodne z umowąFuture
. - Aby zachować spójność z synchronicznymi metodami
getStatus*
, udostępniliśmy wariantyListenableFuture
i 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
NullPointerException
w sytuacji wyścigu, w której praca zostałaREPLACE
d. b/116253486 i b/116677275 WorkContinuation.combine()
akceptuje teraz co najmniej 1WorkContinuation
zamiast co najmniej 2. b/117266752
Zmiany w interfejsie API powodujące niezgodność
- Usunięto wszystkie poprzednie metody i klasy
deprecated
, w tym domyślny konstruktorWorker
. - Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały scalone w klasę abstrakcyjną o nazwieWorkerFactory
. - Usunięto
WorkManager.synchronous()
iWorkContinuation.synchronous()
. - Metody
WorkManager.getStatus*()
zwracają teraz obiektyListenableFuture
.WorkManager.getStatus*LiveData()
zwracaLiveData
.
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 do usunięcia 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
Worker
w czasie działania, określającWorkerFactory
w ramachWorkManager.Configuration
. Fabryka rezerwowa toDefaultWorkerFactory
, która działa tak samo jak poprzednie wersje WorkManagera.- Konstruktory domyślne dla
Worker
iNonBlockingWorker
są 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
(niezależnego od Guavy). W przyszłych wersjach interfejsu API wprowadzimy ListenableFutures. Ta zmiana umożliwi późniejsze odkrycieNonBlockingWorker
. - Dodano możliwość uruchamiania pracy z limitem czasu w
TestDriver
za pomocąTestDriver.setInitialDelayMet(UUID)
iTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Zmiany powodujące niezgodność
- Domyślne konstruktory
Worker
iNonBlockingWorker
został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 niewykrywające bezpośredniego uruchamiania, aby nie uruchamiały się podczas bezpośredniego uruchamiania. W przyszłości udostępnimy wersję WorkManagera, która będzie obsługiwać bezpośrednie uruchamianie. b/112665532
- Rozwiązaliśmy problem, który powodował, że ponowione zadania nie były wykonywane. b/112604021
- Rozwiązanie problemu polegającego na tym, że okresowe zadania 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
JobScheduler
zadań. b/111569265 - Naprawiono
ConcurrentModificationException
wConstraintTracker
. b/112272753 - Zmieniono adnotacje typu zwracanego w przypadku funkcji
Data.getBooleanArray(String)
iData.getIntArray(String)
na@Nullable
zamiast@NonNull
. b/112275229
Zmiany w interfejsie API
Worker
oferuje teraz nowe zajęciaNonBlockingWorker
. Nie ma to wpływu na bieżące wykorzystanie. W przyszłościNonBlockingWorker
bę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@Nullable
zamiast@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
PeriodicWork
nie działała zgodnie z harmonogramem w trybie uśpienia. b/111469837 - Naprawiono wyścigową sytuację 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
RescheduleReceiver
tylko 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ą@NonNull
zamiast@Nullable
. Jeśli w przypadku ręcznej inicjalizacji singleton nie zostanie prawidłowo zainicjowany, metoda zgłosi wyjątekIllegalStateException
. Jest to zmiana interfejsu API powodująca niezgodność wsteczną.- Dodaliśmy nowy interfejs API
Configuration.Builder.setMinimumLoggingLevel(int)
, który może kontrolować szczegółowość WorkManagera. Domyślnie WorkManager rejestruje logi o poziomieLog.INFO
i wyższym. - Zmieniono sygnaturę funkcji
Data.getString()
, aby nie przyjmowała już wartości domyślnej (jest ona niejawnie równanull
). Jest to zmiana powodująca niezgodność interfejsu API. - 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, która może powodować problemy.
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
PeriodicWorkRequest
w przypadku korzystania zJobScheduler
. b/110798652 - Rozwiązaliśmy problem z nieprawidłowym wykonywaniem
PeriodicWorkRequest
po przejściu urządzenia w stan uśpienia. b/111469837 - Rozwiązaliśmy problem z początkowymi opóźnieniami podczas korzystania z Firebase JobDispatcher. b/111141023
- Usunęliśmy potencjalne problemy z wyścigiem i synchronizacją.
- Prawidłowo zwolniono
BroadcastReceiver
, które nie były już potrzebne. - Zoptymalizowana wydajność ponownego planowania, gdy aplikacje uruchamiają się ponownie po wymuszeniu zamknięcia.
- Może być wywoływana przed lub po dodaniu do kolejki danego elementu
WorkRequest
.TestScheduler.setAllConstraintsMet(UUID)
b/111238024
Zmiany powodujące niezgodność
WorkManager.getInstance()
jest teraz oznaczony adnotacją@NonNull
zamiast@Nullable
.- Zmieniono sygnaturę funkcji
Data.getString()
, aby nie przyjmowała już wartości domyślnej (jest ona niejawnie ró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
PeriodicWorkRequest
są teraz prawidłowo ponownie planowane w przypadku korzystania z implementacji opartej naAlarmManager
.- 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 przyjmowania wartości null do różnych interfejsów 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/80346526Rozwiązaliśmy problem z duplikowaniem zadań podczas korzystania z
JobScheduler
po ponownym uruchomieniu urządzenia.Zadania z wyzwalaczami identyfikatora URI treści są teraz zachowywane po ponownym uruchomieniu urządzenia. 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
.WorkManager korzysta teraz z wersji
Room
pakietu1.1.1-rc1
.
Zmiany w interfejsie API
- Dodano funkcję
getStatusesSync()
, synchroniczną wersję funkcjiWorkContinuation.getStatuses()
. Worker
potrafi odróżnić anulowanie zainicjowane przez użytkownika od tymczasowego zatrzymania na żądanie systemu operacyjnego.Worker.isStopped()
zwracatrue
, 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 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ługJobScheduler
lubAlarmManager
. Dzięki temuWorkManager
nie zajmie wszystkich dostępnych miejsc naJobScheduler
. - Dodano parametr
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, który pomaga zdefiniować zakres identyfikatorów zadańJobScheduler
bezpiecznych do użycia przezWorkManager
. b/79996760 Worker.getRunAttemptCount()
zwraca bieżącą liczbę uruchomień danegoWorker
. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
umożliwia dodanie do kolejki unikalnychPeriodicWorkRequest
. b/79600647WorkManager.cancelAllWork()
anuluje wszystkieWorker
. Biblioteki, które zależą odWorkManager
, mogą sprawdzać, kiedy ta metoda została ostatnio wywołana, 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 usuwanieWorkRequest
beztag
lub gdyid
jest niedostępny. b/109572351
Zmiany powodujące niezgodność
- Zmieniono nazwę
Worker.WorkerResult
naWorker.Result
. Worker.onStopped
ma teraz dodatkowy parametrisCancelled
, który jest ustawiony natrue
, gdyWorker
został wyraźnie anulowany.
Wersja 1.0.0-alpha02
24 maja 2018 r.
Poprawki błędów
- Naprawiono
NullPointerException
w dniuState.isFinished()
. b/79550068 - Rozwiązaliśmy problem, który powodował zmianę terminu
Worker
naApplication.onCreate()
. b/79660657 - Rozwiązaliśmy problem, który umożliwiał zaplanowanie większej ilości pracy niż dozwolona przez system operacyjny. b/79497378
- Przeniesiono czyszczenie blokad uśpienia powiązanych z
Worker
do wątku w tle. - Implementacja
AlarmManager
prawidłowo czyści dane po zakończeniu wszystkich oczekujących zadań. - Naprawiono zapytania SQL dotyczące czyszczenia, które miały wpływ na ustawienia regionalne inne niż angielskie. b/80065360
- Dodaliśmy obsługę właściwości
float
wData
. b/79443878 Data.Builder.putAll()
zwraca teraz instancjęBuilder
. b/79699162- Więcej komentarzy javadoc i poprawek w dokumentacji. b/79691663
Zmiany w interfejsie API
Worker
s mogą reagować na zatrzymanie. Za pomocąWorker.isStopped()
możesz sprawdzić, czyWorker
został zatrzymany.Worker.onStopped()
można używać do wykonywania prostych operacji czyszczenia.- Interfejs
Worker.getTags()
API zwracaSet
tagów powiązanych zWorker
. - Dodano przeciążenia
javax.time.Duration
dla interfejsów API, które przyjmują kombinację czasu trwania iTimeUnit
. Jest ona chroniona przez@RequiresApi(26)
. WorkManager
rozszerzenia zostały przeniesione z pakietuandroidx.work.ktx
do pakietuandroidx.work
. Stare rozszerzenia są wycofane 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 zadań w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01
.