WorkManager
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca | Wersja Beta | Wersja alfa |
---|---|---|---|---|
30 października 2024 r. | 2.9.1 | - | - | - |
Deklarowanie zależności
Aby dodać zależność w WorkManageru, musisz dodać do projektu repozytorium Google Maven:
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
Odlotowe
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Informacje o korzystaniu z rozszerzeń Kotlina znajdziesz w dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.10
Wersja 2.10.0
30 października 2024 r.
Usługa androidx.work:work-*:2.10.0
została zwolniona. Wersja 2.10.0 zawiera te komity.
Znaczące zmiany od wersji 2.9.1
- Do zadań z
WorkManager
dodano tagi logu czasu, co znacznie ułatwia zrozumienie harmonogramu zadania „adb shell dumpsys” w związku z tym, że zawiera on nazwę wykonywanej instancji roboczej. Dodano też sekcje śledzenia wokół kluczowych obszarówWorkManager
. - Dodano element sterujący
Configuration.workerCoroutineContext
do kontrolowania modułu rozsyłającego, w którym wykonywane jest działanieCoroutineWorker
. - Deweloperzy mogą określić
NetworkRequest
jako ograniczenie dla pracownika za pomocą metodyConstraints.setRequiredNetworkRequest
. Dzięki temu możesz dokładniej określić, w której sieci ma działać ta instancja robocza. WorkManager
Wersja 2.10.0 jest teraz skompilowana z pakietem SDK 35 i zawiera różne zmiany zapewniające zgodność z tym pakietem.
Wersja 2.10.0-rc01
24 października 2024 r.
Usługa androidx.work:work-*:2.10.0-rc01
została zwolniona. Wersja 2.10.0-rc01 zawiera te komity.
Wersja 2.10.0-beta01
2 października 2024 r.
androidx.work:work-*:2.10.0-beta01
został zwolniony. Wersja 2.10.0-beta01 zawiera te zatwierdzenia.
Wersja 2.10.0-alfa04
18 września 2024 r.
androidx.work:work-*:2.10.0-alpha04
został zwolniony. Wersja 2.10.0-alfa04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj przyczynę zatrzymania
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
, która obowiązuje w przypadku zatrzymania instancji roboczej na pierwszym planie z powodu czasu oczekiwania na wykonanie określonej na podstawie typu usługi na pierwszym planie. (Ibd0af)
Wersja 2.10.0-alfa03
4 września 2024 r.
Usługa androidx.work:work-*:2.10.0-alpha03
została zwolniona. Wersja 2.10.0-alpha03 zawiera te komity.
Nowe funkcje
- Dodano tagi śledzenia do zadań z
WorkManager
, dzięki czemu polecenie „adb shell dumpsys jobscheduler” jest dużo łatwiejsze do zrozumienia, ponieważ zawiera nazwę wykonywanego zadania. Sekcje logu czasu zostały też dodane do kluczowych obszarówWorkManager
.
Zmiany w interfejsie API
- WorkManager 2.10.0 jest teraz kompilowany z pakietem SDK 35.
- Napraw problem z usługami na pierwszym planie typu „short service” i „data sync”, które powodują przekroczenie limitu czasu i wywołują ANR, gdy
WorkManager
nie wywołujestopSelf()
. Ta poprawka dotyczy tylko urządzeń z interfejsami API 34 i 35, na których wprowadzono typy usług na pierwszym planie. (ca06b2, b/364508145) - Nowe interfejsy API
WorkerParameters
, które umożliwiają przełączanie procesu zdalnego, do któregoWorker
się łączy podczas korzystania zWorkerFactory
. (Ibdc8a, Ie8a90, I7373f)
Poprawki błędów
- Rozwiązanie problemu z awarią spowodowaną przez
WorkManager
próbę ponownego uruchomienia długotrwałego zadania (czyli zadania na pierwszym planie), gdy typ zadania na pierwszym planie miał uprawnienia wymagane przez Androida 14, które zostały cofnięte. (b/333957914) - Usunięto ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz dla wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
Wersja 2.10.0-alpha02
17 kwietnia 2024 r.
Usługa androidx.work:work-*:2.10.0-alpha02
została zwolniona. Wersja 2.10.0-alpha02 zawiera te komity.
Zmiany w interfejsie API
- Dodaliśmy możliwość emitowania zakresów śledzonych za pomocą konfigurowalnego
@RestrictTo
Tracer
wWorkManager
. (I17d7f, b/260214125) - Dodano element sterujący
Configuration.workerCoroutineContext
do kontrolowania modułu rozsyłającego, w którym wykonywane jest działanieCoroutineWorker
. Pomaga to całkowicie uniknąć użyciaDispatchers.Default
w elementachWorkManager
. (Icd1b7) - Dodaj niestandardowe moduły obsługi wyjątków dla instancji roboczych (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 Kotlina. Teraz metody zwracająceLiveData
,ListenableFuture
lubFlow
podają prawidłowe informacje o możliwości występowania wartości null. Może to wymagać wprowadzenia zmian w kodzie źródłowym klienta, jeśli założenia dotyczące możliwości występowania wartości null w tym kodzie były nieprawidłowe. (If6757)
Wersja 2.10.0-alpha01
24 stycznia 2024 r.
Usługa androidx.work:work-*:2.10.0-alpha01
została zwolniona. Wersja 2.10.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Deweloperzy mogą określić
NetworkRequest
jako ograniczenie dla pracownika za pomocą metodyConstraints.setRequiredNetworkRequest
. Pozwala to dokładniej kontrolować sieć, w której powinna działać instancja robocza.
Zmiany w interfejsie API
- Dodanie możliwości określenia
NetworkRequest
jako ograniczenia. (Id98a1, b/280634452)
Wersja 2.9
Wersja 2.9.1
7 sierpnia 2024 r.
Usługa androidx.work:work-*:2.9.1
została zwolniona. Wersja 2.9.1 zawiera te komity.
Poprawki błędów
- Rozwiązanie problemu awarii spowodowanego przez
WorkManager
próbę ponownego uruchomienia długotrwałego wątku (czyli wątku na pierwszym planie), gdy typ pracy na pierwszym planie miał wymagania wstępne Androida 14, które zostały cofnięte. (b/333957914)
Wersja 2.9.0
29 listopada 2023 r.
androidx.work:work-*:2.9.0
został zwolniony. Wersja 2.9.0 zawiera te commity.
Ważne zmiany od wersji 2.8.0
- Dostrzegalność za pomocą
Flow
. Postępy instancji roboczej można teraz obserwować za pomocą narzędzia Flow,WorkManager.getWorkInfosFlow
i podobnych metod, a nieLiveData
. - Teraz
WorkManager
zawiera wskazówkę, dlaczego usługa worker została wcześniej zatrzymana. Zapytanie może zostać wysłane przez instancję roboczą za pomocą metodygetStopReason()
lub zWorkInfo
za pomocągetStopReason()
. - Dokładne planowanie pracy pracowników okresowych za pomocą
setNextScheduleTimeOverride
. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który można wykorzystać do implementowania zaawansowanych funkcji, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie prób ponownego wykonania czy uruchamianie zadania dotyczącego kanału z wiadomościami przed każdym porannym wstaniem użytkownika bez przesunięcia. Aby uniknąć anulowania obecnie działającego zadania podczas planowania kolejnego, należy używać funkcjiExistingPeriodicWorkPolicy.UPDATE
. - Testowanie w usłudze WorkManager z produkcją dopasowującą wątki. Funkcji
ExecutorsMode.PRESERVE_EXECUTORS
można używać w narzędziuinitializeTestWorkManager
, aby zachować wykonawców określonych w obiekcieConfiguration
i używać prawdziwego wątku głównego. - Interfejsy API dotyczące coroutines, takie jak
CoroutineWorker
, zostały przeniesione z dodatkowego artefaktu work-runtime-ktx do głównego artefaktu work-runtime. work-runtime-ktx jest teraz pusty.
Zmiany w interfejsie API
- Do grupy
WorkInfo
został dodany użytkownikstopReason
. Dostęp do funkcjistopReason
jest możliwy po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReason
, ponieważ po zatrzymaniu zadania podrzędnego aplikacja może zostać bardzo szybko zamknięta. (I21386) - Umożliw ustawienie parametru
Clock
w konfiguracji i używanie go do określania kolejności wykonywania testów Worker. (Ic586e) - Do metody
getStopReason()
dodano metodęListenableWorker
, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49) - Konstruktor klasy
WorkInfo
jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) work-runtime-ktx
jest teraz pusty, aCoroutineWorker
i inne narzędzia do Kotlina są teraz dostępne w głównym artefakcie środowiska uruchomieniowego. (I71a9a)- Dodano metodę
setNextScheduleTimeOverride
, która umożliwia dokładne ustawienie okresowych harmonogramów pracy (I3b4da) - Dodano
getNextScheduleTimeMillis
, aby uzyskać informacje o planowanym czasie działania, doWorkInfo
. (I797e4) - Informacje o początkowym opóźnieniu i częstotliwości są dodawane do
WorkInfo
. (I52f2f) - Dodano obserwację instancji roboczych za pomocą przepływów z użyciem metod
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Do konstruktorów i właściwości
Constraints
dodano brakujące adnotacje@RequiresApi(...)
. Są one teraz dostosowane do odpowiednich adnotacji dotyczących zbiórek w języku:Constraints.Builder
, które istniały we wczesnych wersjach pakietuWorkManager
. (I6d7d2) WorkManager
ma teraz osobny limit dla pracowników zajmujących się uri treści, aby zapewnić im gwarantowane sloty wJobScheduler
i zapobiec braku aktualizacji treści w przypadku dużego obciążenia. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Do elementu
WorkInfo
dodano ograniczenia. (I162c0)
Wersja 2.9.0-rc01
18 października 2023 r.
androidx.work:work-*:2.9.0-rc01
został zwolniony. Wersja 2.9.0-rc01 zawiera te zatwierdzenia.
- Brak zmian od ostatniej wersji beta
Wersja 2.9.0-beta01
6 września 2023 r.
androidx.work:work-*:2.9.0-beta01
został zwolniony. Wersja 2.9.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Dodano stałe dla przyczyn zatrzymania zwracanych przez
WorkInfo.stopReason
iListenableWorker.stopReason
(I0cc00).
Wersja 2.9.0-alpha02
26 lipca 2023 r.
androidx.work:work-*:2.9.0-alpha02
został zwolniony. Wersja 2.9.0-alpha02 zawiera te commity.
Nowe funkcje
- Teraz
WorkManager
zawiera wskazówkę, dlaczego usługa worker została wcześniej zatrzymana. Zapytanie może zostać wysłane przez instancję roboczą za pomocą metodygetStopReason()
lub zWorkInfo
za pomocągetStopReason()
.
Zmiany w interfejsie API
- Element
stopReason
został dodany do playlistyWorkInfo
. Udostępnia ona danestopReason
po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReason
, ponieważ po zatrzymaniu zadania można bardzo szybko zatrzymać całą aplikację. (I21386) - Zezwalanie na ustawianie zegara za pomocą konfiguracji i używanie go do określania kolejności wykonywania testów Worker. (IC586e).
- Do
ListenableWorker
dodano metodęgetStopReason()
, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia o wycieku zasobów. (Ia8d49)
Poprawki błędów
- Dodano możliwość pominięcia
overrideNextScheduleTime
za pomocąTestDriver
oraz rozwiązano problemy z testowalnością. (Ic2905)
Wersja 2.9.0-alpha01
7 czerwca 2023 r.
Usługa androidx.work:work-*:2.9.0-alpha01
została zwolniona. Wersja 2.9.0-alpha01 zawiera te commity.
Nowe funkcje
- Dostrzegalność w zakresie
Flow
s. Postępy instancji roboczej można teraz obserwować za pomocą narzędzia Flow,WorkManager.getWorkInfosFlow
i podobnych metod, a nieLiveData
. - Dokładne planowanie pracy pracowników okresowych za pomocą
setNextScheduleTimeOverride
. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który można wykorzystać do implementowania zaawansowanych funkcji, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie prób ponownego wykonania czy uruchamianie zadania dotyczącego kanału z wiadomościami przed każdym porannym wstaniem użytkownika bez przesunięcia. Aby uniknąć anulowania obecnie działającego zadania podczas planowania następnego, należy używać funkcjiExistingPeriodicWorkPolicy.UPDATE
. WorkManager
przeprowadza testy w środowisku produkcyjnym do dopasowywania wątków.ExecutorsMode.PRESERVE_EXECUTORS
można użyć, aby zachować wykonawców ustawionych wConfiguration
i użyć prawdziwego wątku głównego.- Interfejsy API dotyczące coroutines, takie jak
CoroutineWorker
, zostały przeniesione z dodatkowego artefaktuwork-runtime-ktx
do głównego artefaktuwork-runtime
. Plikwork-runtime-ktx
jest teraz pusty.
Zmiany interfejsu API
- Konstruktor
WorkInfo
jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) - Element
work-runtime-ktx
jest teraz pusty. W głównym artefaktiework-runtime
dostępne są teraz narzędziaCoroutineWorker
oraz inne narzędzia związane z kotlinami. (I71a9a) - Dodano metodę
setNextScheduleTimeOverride
, która umożliwia dokładne ustawienie okresowych harmonogramów pracy (I3b4da) - Nazwa
getEarliestRunTimeMillis
została zmieniona nagetNextScheduleTimeMillis
. (I2bd7a) - Informacje o następnym zaplanowanym uruchomieniu zostaną dodane do zasady
WorkInfo
. (I797e4) - Informacje o początkowym opóźnieniu i częstotliwości są dodawane do
WorkInfo
. (I52f2f) - Dodano metodę observe workers via Flows za pomocą metod
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a). - Dodano brakujące adnotacje
@RequiresApi(...)
do konstruktorów i właściwości ograniczeń. Zostały one dopasowane do odpowiednich adnotacji w metodach cząstkowych w biblioteceConstraints.Builder
, które istniały już w pierwszych wersjach bibliotekiWorkManager
. (I6d7d2) WorkManager
ma teraz osobny limit dla pracowników zajmujących się uri treści, aby zapewnić im gwarantowane sloty wJobScheduler
i zapobiec braku aktualizacji treści w przypadku dużego obciążenia. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Do
WorkInfo
dodano ograniczenia. (I162c0)
Wersja 2.8
Wersja 2.8.1
22 marca 2023 r.
Usługa androidx.work:work-*:2.8.1
została zwolniona. Wersja 2.8.1 zawiera te commity.
Poprawki błędów
- Naprawiono błąd w
RescheduleReceiver
, który powodował, że ANR nie obsługiwał prawidłowo 2 jednoczesnych transmisji. (b/236906724)
Wersja 2.8.0
8 lutego 2023 r.
androidx.work:work-*:2.8.0
został zwolniony. Wersja 2.8.0 zawiera te commity.
Ważne zmiany od wersji 2.7.0
Nowe funkcje
- Dodano możliwość aktualizowania
WorkRequests
w nieinwazyjny sposób, zachowując pierwotny czas kolejkowania, łańcuchowanie itp. Więcej informacji znajdziesz w szczegółowym poście na blogu na temat tej funkcji oraz w dokumentacji Javadoc dlaWorkManager.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany w interfejsie API
- Element
WorkManager.updateWork
został dodany do aktualizacji zadania z zachowaniem pierwotnego czasu umieszczenia w kolejce i łańcucha.(I9a248, b/219446409) - Dodano użytkownika
ExistingPeriodicWorkPolicy.UPDATE
Te zasady umożliwiają aktualizację okresowego dzieła pod kątem nazwy. Jest ona podobna do obecnej funkcjiREPLACE
, ale mniej inwazyjna: nie anuluje zadania, jeśli jest ono obecnie wykonywane, i zachowuje czas kolejkowania – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu kolejkowania, a nie czasu aktualizacji. NazwaREPLACE
została wycofana, aby uniknąć pomyłek między bardzo podobnymi nazwamiREPLACE
iUPDATE
. Jeśli nadal chcesz zachować poprzednią semantykęREPLACE
, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE
, który jest identyczny z elementemREPLACE
. (I985ed, b/219446409) - Dodano możliwość przechwytywania wyjątków harmonogramu, podając
Consumer<Throwable>
za pomocą funkcji setSchedulingExceptionHandler. - Dodaliśmy możliwość podawania parametru
Consumer<Throwable>
za pomocą metody setInitializationExceptionHandler w celu określenia, czy podczas próby zainicjowania WorkManagera wystąpiły problemy. - Pomocnicze informacje inline dla funkcji
OneTimeWorkRequest
iPeriodicWorkRequest
zostały przeniesione z funkcjiandroidx.work:work-runtime-ktx
do funkcjiandroidx.work:work-runtime
(I0010f, b/209145335) - Dodano pomocnicze metody
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
iWorkQuery.fromTags
, aby umożliwić bezpośrednie tworzenie obiektówWorkQuery
. (b/199919736) (If48f2, b/199919736) - Dodano
getForegroundInfo
doWorker
. (Ic1ead) RxWorker
zarówno w przypadku RxJava 2, jak i RxJava 3 ma teraz metodęsetForeground
zwracającąCompletable
, którą można użyć zamiast metodysetForegroundInfoAsync
zwracającejListenableFuture
.RxWorker
zarówno dla RxJava 2, jak i RxJava 3,getForegroundInfo
zwraca funkcjęSingle
, której można użyć zamiastgetForegroundInfoAsync
, która zwracaListenableFuture
. (b/203851459)- Ograniczenia można teraz tworzyć bezpośrednio zamiast używać funkcji
Constraints.Builder
, co jest wygodne dla użytkowników Kotlina. (Idc390, b/137568653) - Dodano możliwość sprawdzenia, czy
WorkManager
została zainicjowana. Dodaliśmy też nowy interfejs APIgetConfiguration()
dla programistów bibliotek, aby mogli uzyskać konfigurację, z którą została zainicjowana bibliotekaWorkManager
. (I6eff3, b/212300336)
Poprawki błędów
- Rozwiązaliśmy problem z chwytliwym algorytmem szeregowania, który uniemożliwiał uruchamianie instancji roboczych natychmiast po obciążeniu. (I9686b, b/248111307)
- Dodaliśmy uprawnienie
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONS
w pakiecie SDK 33 lub nowszym. (Ie542e, b/238790278) - Rozpowszechnianie anulowań w
CoroutineScope
wListenableFuture
podczas korzystania zsuspendCancellableCoroutine
.
Wersja 2.8.0-rc01
7 grudnia 2022 r.
androidx.work:work-*:2.8.0-rc01
został zwolniony. Wersja 2.8.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Brak nowych funkcji w tej wersji. Jest to głównie aktualizacja wersji
Wersja 2.8.0-beta02
9 listopada 2022 r.
androidx.work:work-*:2.8.0-beta02
został zwolniony. Wersja 2.8.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono metodę
equals
wWorkInfo
, która wcześniej nie uwzględniała informacji nowej generacji. (4977 cm³)
Wersja 2.8.0-beta01
5 października 2022 r.
androidx.work:work-*:2.8.0-beta01
został zwolniony. Wersja 2.8.0-beta01 zawiera te commity.
Poprawki błędów
- Rozwiązaliśmy problem z łatwym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie podprocesów podczas obciążenia. (I9686b, b/248111307)
Wersja 2.8.0-alpha04
7 września 2022 roku
androidx.work:work-*:2.8.0-alpha04
został zwolniony. Wersja 2.8.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodano
WorkerInfo.getGeneration()
iWorkerParameters.getGeneration()
, które zwracają pokolenie instancji roboczej. Pracownik ma wiele generacji, jeśli został zaktualizowany za pomocą funkcjiWorkManager.updateWork
lubWorkManager.enqueueUniquePeriodicWork
za pomocą funkcjiExistingPeriodicWorkPolicy.UPDATE
. Pamiętaj, że jeśli instancja robocza jest obecnie uruchomiona, ta metoda może zwrócić nowszą generację niż ta, która jest obecnie uruchomiona, jeśli podczas wykonywania instancji roboczej nastąpiła aktualizacja. (I665c5, b/219446409) (I128a9, b/219446409) - Dodano
InitializationExceptionHandler
, czyli sterownik wyjątków, który pozwala określić, czy podczas inicjowaniaWorkManager
wystąpiły problemy. (I061de)
Wersja 2.8.0-alpha03
10 sierpnia 2022 r.
androidx.work:work-*:2.8.0-alpha03
został zwolniony. Wersja 2.8.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano możliwość aktualizowania
WorkRequests
w nieinwazyjny sposób, zachowując pierwotny czas kolejkowania, łańcuchowanie itp. Więcej informacji znajdziesz w artykułachWorkManager.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany w interfejsie API
- Dodano
WorkManager.updateWork
, aby zaktualizować pracę, zachowując jej pierwotny czas kolejkowania i łańcuchowanie.(I9a248, b/219446409) - Dodano użytkownika
ExistingPeriodicWorkPolicy.UPDATE
Te zasady umożliwiają aktualizację okresowej pracy na podstawie nazwy. Jest ona podobna do obecnej funkcjiREPLACE
, ale mniej inwazyjna: nie anuluje zadania, jeśli jest ono obecnie wykonywane, i zachowuje czas kolejkowania – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu kolejkowania, a nie czasu aktualizacji. UsługaREPLACE
została wycofana, aby zmniejszyć ryzyko pomylenia usługiREPLACE
z usługąUPDATE
, które mają bardzo podobne nazwy. Jeśli chcesz zachować poprzednią semantykę właściwościREPLACE
, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE
, który jest taki sam jakREPLACE
. (I985ed, b/219446409) - Dodaj możliwość przechwytywania wyjątków dotyczących harmonogramu przez zdefiniowanie
SchedulingExceptionHandler
. (I033eb) - Pomocnicze informacje inline dla funkcji
OneTimeWorkRequest
iPeriodicWorkRequest
zostały przeniesione z funkcjiandroidx.work:work-runtime-ktx
do funkcjiandroidx.work:work-runtime
(I0010f, b/209145335)
Poprawki błędów
- Dodano
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w pakiecie SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
Wersja 2.8.0-alpha02
6 kwietnia 2022 roku
androidx.work:work-*:2.8.0-alpha02
został zwolniony. Wersja 2.8.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Ograniczenia można teraz tworzyć bezpośrednio zamiast za pomocą Buildera, co jest wygodne dla użytkowników Kotlina. (Idc390, b/137568653)
- Dodano możliwość sprawdzania, czy
WorkManager
został zainicjowany. Oprócz tego dodaliśmy nowy interfejs APIgetConfiguration()
dla programistów bibliotek, aby uzyskać konfigurację, za pomocą której zainicjowanoWorkManager
. (I6eff3, b/212300336)
Wersja 2.8.0-alpha01
12 stycznia 2022 r.
androidx.work:work-*:2.8.0-alpha01
został zwolniony. Wersja 2.8.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Dodano pomocnicze metody
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
, które umożliwiają bezpośrednie tworzenie zapytania roboczego. (If48f2, b/199919736) - Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937)
- Dodano
getForegroundInfo
doWorker
. (Ic1ead) - Dodano metody pomocnicze
WorkQuery.fromIds
umożliwiające tworzenie zapytań bezpośrednio na podstawie identyfikatorów. (Ie5bdf, b/199919736) - Metoda RxWorker ma teraz funkcję
setForeground
, która zwraca wartośćCompletable
. Można jej używać zamiast funkcjisetForegroundInfoAsync
, która zwraca wartośćListenableFuture
. (I85156) - RxWorker dla RxJava 2 zawiera teraz funkcję
getForegroundInfo
zwracającą wartośćSingle
, której można użyć zamiastgetForegroundInfoAsync
zwracającej wartośćListenableFuture
. (I21c91, b/203851459) - RxWorker dla RxJava 3 zwraca teraz
getForegroundInfo
zwracającySingle
, którego można użyć zamiastgetForegroundInfoAsync
zwracającegoListenableFuture
. (I1ca8a) - Metoda RxWorker ma teraz funkcję
setForeground
, która zwraca wartośćCompletable
. Można jej używać zamiast funkcjisetForegroundInfoAsync
, która zwraca wartośćListenableFuture
. (I992a3, b/203851459)
Poprawki błędów
- Przenoszenie anulowań w
CoroutineScope
doListenableFuture
podczas korzystania zsuspendCancellableCoroutine
. (I77e63)
Wersja 2.7
Wersja 2.7.1
17 listopada 2021 r.
androidx.work:work-*:2.7.1
został zwolniony. Wersja 2.7.1 zawiera te commity.
Poprawki błędów
- Anulowania w
CoroutineScope
są przekazywane doListenableFuture
, gdy używaszsuspendCancellableCoroutine
. (I77e63) - Wyjątek jest zgłaszany natychmiast, gdy opóźnione żądania pracy są oznaczone jako przyspieszone. bef1762
Wersja 2.7.0
13 października 2021 r.
androidx.work:work-*:2.7.0
został zwolniony. Wersja 2.7.0 zawiera te commity.
Ważne zmiany od wersji 2.6.0
WorkManager wprowadza nowy interfejs API
WorkRequest.Builder.setExpedited(...)
, aby pomóc z ograniczeniami usług działających na pierwszym planie w Androidzie 12.Gdy używasz
setExpedited(...)
, WorkManager deleguje zadania przyspieszone w JobSchedulerze od Androida 12, zapewniając jednocześnie zgodność wsteczną w poprzednich wersjach Androida przez delegowanie do usługi na pierwszym planie.
Wersja 2.7.0-rc01
29 września 2021 r.
androidx.work:work-*:2.7.0-rc01
został zwolniony. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest identyczna z androidx.work:work-*:2.7.0-beta01
.
Wersja 2.7.0-beta01
1 września 2021 roku
androidx.work:work-*:2.7.0-beta01
został zwolniony. Wersja 2.7.0-beta01 zawiera te commity.
Nowe funkcje
- Zmniejsz współzawodnictwo SQLite w wielu procesach podczas inicjowania WorkManagera.
Zmiany w interfejsie API
- Usuń interfejsy API
@ExperimentalExpeditedWork
, ponieważ interfejsy API platformy na Androida 12 (S) są stabilne. (Aosp/1792806).
Poprawki błędów
- Udostępnij lepszy komunikat o błędzie dla pracowników przyspieszonych, którzy nie stosują się do
getForegroundInfoAsync()
. (aosp/1809376)
Wersja 2.7.0-alpha05
21 lipca 2021 r.
androidx.work:work-*:2.7.0-alpha05
został zwolniony. Wersja 2.7.0-alfa05 zawiera te zatwierdzenia.
Ta wersja zawiera też poprawki błędów z wersji WorkManagera 2.6.0-beta02
.
Wersja 2.7.0-alpha04
2 czerwca 2021 r.
androidx.work:work-*:2.7.0-alpha04
został zwolniony.
Ta wersja zawiera też zmiany z wersji 2.6.0-beta01.
Zmiany interfejsu API
- Właściwość
ListenableWorker.setForegroundAsync()
nie jest już wycofana. - W miarę możliwości zalecamy korzystanie z interfejsu
WorkRequest.Builder.setExpedited(...)
API. Aby lepiej obsługiwać sytuacje, w których aplikacja nie podlega ograniczeniom usługi na pierwszym planie, deweloperzy mogą korzystać z interfejsu APIListenableWorker.setForegroundAsync()
. - Jeśli zostanie wywołana zasada
ListenableWorker.setForegroundAsync()
, gdy aplikacja podlega ograniczeniom usługi na pierwszym planie, spowoduje to zgłoszenie ForegroundServiceStartNotAllowedException.
Poprawki błędów
- Gdy przyspieszone zadania zostaną ponownie zaplanowane, nie będą już przyspieszone. Stają się one zwykłymi zadaniami.
Wersja 2.7.0-alpha03
21 kwietnia 2021 r.
androidx.work:work-*:2.7.0-alpha03
został zwolniony. Wersja 2.7.0-alpha03 zawiera te commity.
Nowe funkcje
Z WorkManagera
2.6.0-alpha02
: dodaje obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200).Zmiany w WorkManagerze
2.6.0-alpha02
: dodanoRemoteCoroutineWorker
, czyli implementacjęRemoteListenableWorker
, która może się łączyć z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- W usłudze WorkManager
2.6.0-alpha02
:dodano obsługę ograniczenia sieciTEMPORARILY_UNMETERED
. (I08d5e) - W WorkManager
2.6.0-alpha02
:obsługa procesów wielowątkowych dlasetProgressAsync()
. (Ib6d08) - W WorkManager
2.6.0-alpha02
:ustawWorkManagerInitializer
jako publiczne, aby inneandroidx.startup.Initializer
mogły ich używać jako zależności. (I5ab11)
Wersja 2.7.0-alpha02
10 marca 2021 r.
Usługa androidx.work:work-*:2.7.0-alpha02
została zwolniona. Wersja 2.7.0-alpha02 zawiera te commity.
Poprawki błędów
- Ujawnij zmienność
PendingIntent
, aby naprawić błąd powodujący awarię podczas kierowania na Androida 12. (b/180884673)
Wersja 2.7.0-alpha01
18 lutego 2021 r.
androidx.work:work-*:2.7.0-alpha01
został zwolniony. Wersja 2.7.0-alpha01 zawiera te commity.
Nowe funkcje
WorkManager wprowadza nowy interfejs API
WorkRequest.Builder.setExpedited(...)
, który uwzględnia ograniczenia usług na pierwszym planie w Androidzie 12.Aplikacje nie mogą już uruchamiać usług na pierwszym planie, gdy działają w tle. Aby lepiej obsługiwać długotrwałe zadania, które były wcześniej powiązane z cyklem życia usługi na pierwszym planie, aplikacje mogą oznaczać
WorkRequest
jako przyspieszone.Ten interfejs API zastępuje interfejsy API
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 poprzednich wersjach Androida przez delegowanie do usług na pierwszym planie.
Zmiany w interfejsie API
- Dodaj obsługę przyspieszonego wdrożenia
WorkRequest
.
Wersja 2.6.0
Wersja 2.6.0
1 września 2021 roku
androidx.work:work-*:2.6.0
został zwolniony. Wersja 2.6.0 zawiera te zatwierdzenia.
2.6.0
nie jest zgodna z aplikacjami kierowanymi na Androida 12 (S). Należy użyć wersji 2.7.0
.Ważne zmiany od wersji 2.5.0
WorkManager do inicjowania WorkManagera używa teraz
androidx.startup
. Jeśli do inicjowania WorkManagera w przeszłości używanotools:node="remove"
ContentProvider
, wykonaj te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />
Dodano obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200)
Dodano klasę
RemoteCoroutineWorker
, która jest implementacją klasy RemoteListenableWorker i może się łączyć z procesem zdalnym. (I30578)
Wersja 2.6.0-rc01
4 sierpnia 2021 r.
androidx.work:work-*:2.6.0-rc01
został zwolniony. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest identyczna z androidx.work:work-*:2.6.0-beta02
.
Wersja 2.6.0-beta02
21 lipca 2021 r.
androidx.work:work-*:2.6.0-beta02
został zwolniony. Wersja 2.6.0-beta02 zawiera te commity.
Poprawki błędów
RemoteWorkManager
jest teraz prawidłowo odłączany odRemoteWorkManagerService
, co pozwalaRemoteWorkManagerService
prawidłowo usunąć pliki. aosp/1730694RemoteListenableWorker
jest teraz prawidłowo odłączany odRemoteWorkerService
, co pozwalaRemoteWorkerService
prawidłowo usunąć dane. aosp/1743817ForceStopRunnable
działa teraz tylko w ramach głównego procesu aplikacji. Jest to optymalizacja, która pozwala uniknąć rywalizacji o zasoby w przypadku aplikacji korzystających z wielu procesów. aosp/1749180, aosp/1761729
Wersja 2.6.0-beta01
2 czerwca 2021 r.
Usługa androidx.work:work-*:2.6.0-beta01
została zwolniona. Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Ta wersja zawiera drobne ulepszenia dokumentacji. Ta wersja jest w dużej mierze identyczna z 2.6.0-alpha02.
Wersja 2.6.0-alpha02
21 kwietnia 2021 r.
androidx.work:work-*:2.6.0-alpha02
został zwolniony. Wersja 2.6.0-alpha02 zawiera te commity.
Nowe funkcje
Dodano obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200)
Dodano element
RemoteCoroutineWorker
będący implementacjąRemoteListenableWorker
, która można powiązać z procesem zdalnym. (I30578)
Zmiany interfejsu API
- Dodano obsługę ograniczenia sieci
TEMPORARILY_UNMETERED
. (I08d5e) - Obsługa instancji roboczych w wielu procesach w przypadku
setProgressAsync()
. (Ib6d08) - Udostępnij
WorkManagerInitializer
, aby inneandroidx.startup.Initializer
mogły ich używać jako zależności. (I5ab11)
Wersja 2.6.0-alpha01
24 marca 2021 r.
Usługa androidx.work:work-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alpha01 zawiera te commity.
Nowe funkcje
WorkManager
używa terazandroidx.startup
do inicjowania WorkManagera. Wcześniej robiła toandroidx.work.impl.WorkManagerInitializer
. (Aosp/1608813).Jeśli w przeszłości do zainicjowania cyklu życia procesu używany był element
tools:node="remove"
, który jest elementemContentProvider
, wykonaj te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.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
obiektu ListenableWorker. (Ie51e3)
Poprawki błędów
- Dodaj obejście błędu OEM, który powoduje zgłaszanie żądania
SecurityException
przy korzystaniu z interfejsów APIAlarmManager
. (aosp/1587518)
Wersja 2.5.0
Wersja 2.5.0
27 stycznia 2021 r.
androidx.work:work-*:2.5.0
został zwolniony. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.4.0
- Nowy artefakt
:work:work-multiprocess
dla aplikacji, które korzystają z wielu procesów. Zwiększa to wydajność dzięki ujednoliceniu planowania zadań roboczych w ramach jednego procesu.- Aby używać aplikacji
work-multiprocess
, zdefiniuj zależność od:implementation "androidx.work:work-multiprocess:2.5.0"
- Wyznacz proces główny za pomocą metody Configuration.Builder.setDefaultProcessName(String).
- Korzystając z
work-multiprocess
, możesz też używać Menedżera pracy zdalnej do zarządzaniaWorkRequest
. RemoteWorkManager zawsze dociera do wyznaczonego procesu. Algorytm szeregowania w procesie również działa w wyznaczonym procesie.
- Aby używać aplikacji
- Czasami
ActivityManager
nie może utworzyć instancjiJobService
, aby rozpocząć zadanie. Spowoduje to, że zadanie zostanie po cichu odrzucone z powodu błędu platformy.WorkManager
sprawdza teraz, czy w przypadku każdego elementuWorkRequest
istnieją zadania tworzenia kopii zapasowych podczas inicjowaniaApplication
przez uzgadnianie zadań. Dzięki temu znacznie poprawia się niezawodność wykonywania zadań. (b/172475041, aosp/1489577) WorkManager
ogranicza wzrost bazy danych, skracając czas buforowania, w którymWorkRequest
są śledzone po zakończeniuWorkRequest
. Czas trwania wynosił7
dni. Został on skrócony do1
dni plus czas określony w parametrze keepResultsForAtLeast. (aosp/1419708)- Aby ułatwić testowanie, biblioteka
TestListenableWorkerBuilder
obsługuje teraz klasę kwalifikowaną, która rozszerza klasęListenableWorker
. (aosp/1443299, b/169787349) - Inspektor WorkManager jest teraz dostępny w Android Studio Arctic Fox.
Wersja 2.5.0-rc01
13 stycznia 2021 r.
androidx.work:work-*:2.5.0-rc01
został zwolniony. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy błąd polegający na tym, że interfejs API oparty na protokole
WorkQuery
nieprawidłowo unieważniał wartośćgetWorkInfosLiveData
po zaktualizowaniu elementów. (aosp/1540566, b/173769028) - Naprawiono błąd, który w niektórych rzadkich przypadkach powodował, że transakcje bazy danych nie były oznaczane jako udane. Może to powodować problemy na niektórych urządzeniach Motorola. (aosp/1535368, b/175944460)
- Naprawiono błąd polegający na ignorowaniu wartości
NoSuchElementException
podczas próby odłączenia się od martwego procesu. (aosp/1530589) - Ulepsz
ConstraintTrackingWorker
, aby zatrzymywaćListenableWorker
tylko wtedy, gdy nie został jeszcze zatrzymany. (Aosp/1496844, b/172946965) - Zaktualizuj biblioteki androidx.work, aby były przeznaczone dla Javy 8 (Ibd2f2).
Wersja 2.5.0-beta02
Grudzień 2, 2020
androidx.work:work-*:2.5.0-beta02
został zwolniony. Wersja 2.5.0-beta02 zawiera te commity.
Poprawki błędów
- Naprawiono błąd w
androidx.work:work-multiprocess
, który powodował, że WorkManager przypadkowo blokował wątek wywołania podczas próby połączenia z wyznaczonym procesem. (aosp/1475538) - Naprawiliśmy błąd polegający na tym, że
PeriodicWorkRequest
nie były prawidłowo uzgadniane. (b/172475041, aosp/1489577) - Dodano obejście błędu platformy podczas zatrzymywania usługi na pierwszym planie podczas używania interfejsów API
setForeground*
. (b/170924044, Aosp/1489901)
Wersja 2.5.0-beta01
28 października 2020 r.
Usługa androidx.work:work-*:2.5.0-beta01
została zwolniona. Wersja 2.5.0-beta01 zawiera te commity.
Nowe funkcje
WorkManager
automatycznie ogranicza liczbęWorkRequest
, które mogą być pobierane przez algorytm szeregowania w ramach procesu. Żądania są nadal wykonywane w kolejności FIFO. (aosp/1455228)WorkManager
próbuje przywrócić dane, gdy baza danych aplikacji jest w złym stanie. (aosp/1463103)
Poprawki błędów
- Gdy sesje
ListenableWorker
zostaną przerwane, natychmiast oznacz je jakoENQUEUED
, aby można było zmienić ich termin. (aosp/1455618, b/170273988)
Wersja 2.5.0-alpha03
14 października 2020 r.
androidx.work:work-*:2.5.0-alpha03
został zwolniony. Wersja 2.5.0-alfa03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
TestListenableWorkerBuilder
iTestWorkerBuilder
nie używają typów nieprzetworzonych. (I883ad, b/169787349)
Poprawki błędów
- Użyj polecenia
ApplicationInfo
, aby określić nazwę domyślnego procesu aplikacji. (b/168716641, Aosp/1429950) - Popraw reguły widoczności w przypadku
RemoteWorkManager
iRemoteWorkContinuation
. Te interfejsy API nie są już oznaczone jako@Restricted
. (Aosp/1432091). - Napraw reguły Proguarda dotyczące
:work:work-multiprocess
. (aosp/1432091) - Poprawa cyklu życia powiadomień w przypadku długotrwałych zadań związanych z usługą na pierwszym planie. (b/168502234, aosp/1431331)
Wersja 2.5.0-alpha02
16 września 2020 roku
Usługa androidx.work:work-*:2.5.0-alpha02
została zwolniona. Wersja 2.5.0-alpha02 zawiera te commity.
Nowe funkcje
- Dodaj interfejs API do WorkQuery, aby móc używać zapytań
id
do zapytańWorkInfo
. (aosp/1412372, b/157335295) - WorkManager lepiej obsługuje aplikacje korzystające z wielu procesów za pomocą nowego artefaktu (
androidx.work:work-multiprocess:*
). Ten nowy artefakt pomaga rozwiązać kilka problemów napotykanych przez duże aplikacje, w tym:- Zwykle należy inicjować WorkManagera w każdym procesie aplikacji. To nie jest dobry wynik, bo występuje zwiększona rywalizacja o SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, które można wykorzystać do zaznaczenia 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
). - Zestaw nowych interfejsów API:
RemoteWorkManager
iRemoteWorkContinuation
doenqueue
,cancel
iquery
. Te interfejsy API nie obejmują wariantówLiveData
, aby uniknąć kolizji SQLite w wielu procesach. Wszystkie wywołania funkcjienqueue
,cancel
iquery
są przekierowywane do procesu aplikacjiprimary
za pomocą AIDL i zwracają płynnąListenableFuture
. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- Zwykle należy inicjować WorkManagera w każdym procesie aplikacji. To nie jest dobry wynik, bo występuje zwiększona rywalizacja o SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, które można wykorzystać do zaznaczenia głównego procesu aplikacji za pomocą
Zmiany w interfejsie API
- WorkManager usuwa teraz ukończone
WorkRequest
, które nie mają niepełnych zależności, bardziej agresywnie. Zmieniono czas buforowania z7
dni na1
dzień. (aosp/1419708)
Poprawki błędów
- Teraz WorkManager z wyprzedzeniem uzgadnia zadania, więc zadania
WorkRequest
iJobScheduler
są zsynchronizowane po zainicjowaniuWorkManager
. (aosp/1412794, b/166292069)
Wersja 2.5.0-alpha01
19 sierpnia 2020 r.
androidx.work:work-*:2.5.0-alpha01
został zwolniony. Wersja 2.5.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- zmiany wewnętrznych interfejsów API, które pozwolą nam w przyszłości udostępniać lepsze narzędzia do obsługi
WorkManager
; Wkrótce podamy więcej informacji na ten temat.
Poprawki błędów
- Obsługa
SecurityException
podczas śledzenia stanu sieci na niektórych urządzeniach. (aosp/1396969)
Darowizna zewnętrzna
- Poprawiono dokumentację
ArrayCreatingInputMerger
(Zac Sweers, github/43).
Wersja 2.4.0
Wersja 2.4.0
22 lipca 2020 r.
Usługa androidx.work:work-*:2.4.0
została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.3.0
- Planista
WorkManager
jest teraz bardziej wydajny. Wcześniej w procesieScheduler
uwzględniany był tylko sposób wykonania prac, które nie były opóźnione i których ograniczenia zostały spełnione. Obecnie planista śledzi procesy, które mogą zostać wykonane w przyszłości, w tym zadania okresowe.WorkRequest
WątekScheduler
w trakcie przetwarzania również nie jest objęty limitami harmonogramowania (ale nadal jest ograniczony do rozmiaruExecutor
używanego przez WorkManager). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej poleceń WorkRequest, gdy jest na pierwszym planie. Aby zarządzać wykonywaniem opóźnionych zadań na pierwszym planie,WorkManager
wprowadza też nową konfigurowalną opcjęRunnableScheduler
. (aosp/1185778) - WorkManager obsługuje teraz RxJava 3. Aby używać środowiska RxJava 3, musisz uwzględnić tę zależność:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - Dodaliśmy możliwość wysyłania zapytań o
WorkInfo
za pomocąWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania do komponentówWorkInfo
za pomocą kombinacji kilku atrybutów. Więcej informacji znajdziesz w artykułachWorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
iWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230, b/143847546) Dodaj możliwość żądania informacji diagnostycznych z
WorkManager
za pomocą:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Zawiera on wiele przydatnych informacji, w tym:
- Żądania robocze, które zostały ukończone w ciągu ostatnich 24 godzin.
- WorkRequests, które są obecnie uruchamiane.
- Zaplanowane zadania. (aosp/1235501)
Dodaj
ExistingWorkPolicy.APPEND_OR_REPLACE
, który jest podobny doAPPEND
, ale zastępuje łańcuch, który anulował lub nie spełnił wymagań wstępnych. (b/134613984, Aosp/1199640)Dodanie możliwości dodawania niestandardowego
RunnableScheduler
do śledzenia poleceń pracy, które muszą zostać wykonane w przyszłości. Jest on używany przez Schedulera w ramach procesu. (Aosp/1203944).Dodanie obsługi dynamicznego dodawania fabryk do delegowania, gdy używasz
DelegatingWorkerFactory
. (b/156289105, aosp/1309745)Dopasuj śledzenie ograniczeń
BATTERY_NOT_LOW
do platformy. (aosp/1312583)Do określania nazwy procesu harmonogram w ramach procesu korzysta teraz z lepszych interfejsów API. Jest to przydatne, aby lepiej obsługiwać aplikacje korzystające z wielu procesów. (aosp/1324732)
Nowe reguły Lint, które egzekwują:
- Korzystanie z właściwych uprawnień
foregroundServiceType
podczas korzystania z interfejsów APIsetForegroundAsync()
. (b/147873061, aosp/1215915) - Określenie identyfikatorów JobScheduler, których WorkManager powinien używać podczas bezpośredniego korzystania z interfejsów JobService API. aosp/1223567
- Dodano nową regułę lint, która zapewnia, że implementacje
ListenableWorker
są terazpublic
, gdy używasz domyślnegoWorkerFactory
. (aosp/1291262)
- Korzystanie z właściwych uprawnień
Wywołania do
setForegroundAsync()
, które nie zostaną zakończone przed zakończeniemListenableWorker
, będą teraz sygnalizowane za pomocąIllegalStateException
w zwróconymListenableFuture
. (aosp/1262743)Napraw błąd, który powodował, że działanie elementu
ForegroundService
nie było zatrzymywane po przerwaniu działaniaWorker
na pierwszym planie. (b/155579898, aosp/1302153)Naprawiono błąd, który powodował, że
WorkManager
próbowała wykonać wiele instancjiWorker
powiązanych z usługą na pierwszym planie (b/156310133, aosp/1309853).
Wersja 2.4.0-rc01
24 czerwca 2020 r.
androidx.work:work-*:2.4.0-rc01
został zwolniony. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Algorytm szeregowania w procesie używa teraz lepszych interfejsów API do określania nazwy procesu. Jest to przydatne, aby lepiej obsługiwać aplikacje korzystające 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
są zwolnione. Wersja 2.4.0-beta01 zawiera te commity.
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że
ForegroundService
nie jest zatrzymywany po przerwaniu działaniaWorker
na pierwszym planie. (b/155579898, Aosp/1302153) - Naprawiono błąd, który powodował, że
WorkManager
próbowała wykonać wiele instancjiWorker
powiązanych z usługą na pierwszym planie (b/156310133, aosp/1309853). - Dodano obsługę dynamicznego dodawania fabryk, do których mają być przekazywane zadania w przypadku użycia funkcji
DelegatingWorkerFactory
. (b/156289105, Aosp/1309745) - Dopasuj śledzenie ograniczeń
BATTERY_NOT_LOW
do platformy. (aosp/1312583)
Wersja 2.4.0-alpha03
29 kwietnia 2020 r.
Usługa androidx.work:work-*:2.4.0-alpha03
została zwolniona. Wersja 2.4.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (Aosp/1277904) - Dodaliśmy nową regułę lintowania, która sprawi, że
ListenableWorker
wdrożenia mają teraz wartośćpublic
, jeśli używana jest domyślna wartośćWorkerFactory
. (aosp/1291262)
Zmiany w interfejsie API
- Wywołanie funkcji
setProgressAsync()
po zakończeniu wykonywania funkcjiListenableWorker
spowoduje teraz przekazanie sygnałuException
za pomocą funkcjiListenableFuture
. (aosp/1285494) - Element
WorkQuery.Builder
jest teraz oznaczony jakofinal
. (aosp/1275037) WorkQuery.Builder
metody fabrycznewithStates
,withTags
iwithUniqueWorkNames
zostały odpowiednio przemianowane nafromStates
,fromTags
ifromUniqueWorkNames
. (aosp/1280287)
Poprawki błędów
- Podczas śledzenia stanu sieci urządzenia ignoruj wartości
SecurityException
. (b/153246136, aosp/1280813)
Wersja 2.4.0-alpha02
1 kwietnia 2020 r.
androidx.work:work-*:2.4.0-alpha02
został zwolniony. Wersja 2.4.0-alpha02 zawiera te commity.
Nowe funkcje
- Dodano nową regułę Lint, która ostrzega, gdy
WorkRequest
wymaga zarównoConstraints.setRequiresCharging(...)
, jak iConstraints.setRequiresDeviceIdle(...)
. Niektóre urządzenia nigdy nie są ładowane i nie są nieaktywne w tym samym czasie. W związku z tym takie żądania będą się wykonywać rzadziej niż oczekiwano. (aosp/1253840)
Zmiany w interfejsie API
Dodaliśmy możliwość wysyłania zapytań o
WorkInfo
za pomocąWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania do komponentówWorkInfo
za pomocą kombinacji kilku atrybutów. Więcej informacji znajdziesz w artykułachWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
iWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)Połączenia z numerem
setForegroundAsync()
, które nie zostaną ukończone przed ukończeniemListenableWorker
, będą teraz sygnalizowane przezIllegalStateException
na zwróconym urządzeniuListenableFuture
. (Aosp/1262743).
Poprawki błędów
- Naprawiono regułę lint, która sprawdza nieprawidłowe długości interwałów dla
PeriodicWorkRequest
. (aosp/1254846, b/152606442)
Wersja 2.4.0-alpha01
Marzec 4, 2020
androidx.work:work-*:2.4.0-alpha01
został zwolniony. Wersja 2.4.0-alpha01 zawiera te commity.
Nowe funkcje
Stosowany w procesie algorytm szeregowania
WorkManager
ma teraz większe możliwości. Wcześniej algorytm szeregowania procesu uwzględniał tylko wykonywanie tych zadań, które nie były opóźnione i których ograniczenia zostały spełnione. Obecnie harmonogram sterujący w trakcie przetwarzania śledziWorkRequest
, które mogą zostać wykonane w przyszłości, w tymPeriodicWorkRequest
. Scheduler w ramach procesu nie przestrzega limitów harmonogramowania (ale nadal jest ograniczony do rozmiaruExecutor
używanego przez WorkManager). Oznacza to, że aplikacja może teraz wykonywać znacznie więcejWorkRequest
, gdy działa na pierwszym planie. (aosp/1185778)Dodano możliwość żądania informacji diagnostycznych z WorkManagera za pomocą
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. Zawiera on wiele przydatnych informacji, w tym:- Żądania robocze, które zostały ukończone w ciągu ostatnich 24 godzin.
- WorkRequests, które są obecnie uruchamiane.
- Zaplanowane zadania. (aosp/1235501)
Nowe reguły Lint, które egzekwują:
- Korzystanie z właściwych uprawnień
foregroundServiceType
podczas korzystania z interfejsów APIsetForegroundAsync()
. (b/147873061, Aosp/1215915) - Określanie identyfikatorów
JobScheduler
, którychWorkManager
powinien używać podczas bezpośredniego korzystania z interfejsów APIJobService
. (Aosp/1223567).
- Korzystanie z właściwych uprawnień
Zmiany w interfejsie API
Dodaj
ExistingWorkPolicy.APPEND_OR_REPLACE
, która jest podobna doAPPEND
, ale zastępuje łańcuch, który anulował lub nie spełnił wymagań wstępnych. (b/134613984, aosp/1199640)Umożliw dodanie niestandardowego
RunnableScheduler
do śledzeniaWorkRequest
, które należy wykonać w przyszłości. Jest on używany przez Schedulera w ramach procesu. (aosp/1203944)
Poprawki błędów
- Funkcja
setProgress()
w funkcjiRxWorker
została wycofana, ponieważ wcześniej zwracała wartośćSingle<Void>
, która jest nieprawidłowym typem. Dodaliśmy nowy interfejs APIsetCompletableProgress()
, który zamiastCompletable
zwracaCompletable
. Dodaliśmy też nowe reguły Lint, które ułatwiają migrację na nowe interfejsy API. (b/150080946, aosp/1242665)
Wersja 2.3.4
Wersja 2.3.4
18 marca 2020 r.
androidx.work:work-*:2.3.4
został zwolniony. Wersja 2.3.4 zawiera te commity.
Poprawki błędów
- Naprawiliśmy błąd, który powodował uruchamianie wielu wystąpień długotrwałych
Worker
po przekroczeniu 10-minutowego okna wykonywania. (aosp/1247484, b/150553353) - Poprawiono lint usługi WorkManager
IssueRegistry
. Dziękujemy @ZacSweers z Slacka za Twój wkład. (aosp/1217923)
Wersja 2.3.3
Wersja 2.3.3
4 marca 2020 r.
androidx.work:work-*:2.3.3
został zwolniony. Wersja 2.3.3 zawiera te commity.
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że jeśli
Worker
zostało przerwane, nie było ono poprawnie przeplanowywane. (b/150325687, aosp/1246571)
Wersja 2.3.2
Wersja 2.3.2
19 lutego 2020 r.
androidx.work:work-*:2.3.2
zostały opublikowane. Wersja 2.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że usługa WorkManager przekraczała limit 100 zadań w JobScheduler w rzadkich przypadkach. (aosp/1226859, b/149092520)
- Naprawiono warunek wyścigu w ConstraintControllers. (aosp/1220100)
- Ulepszony cykl zarządzania usługami na pierwszym planie w przypadku długotrwałych procesów. (aosp/1226295)
- Ulepszono zarządzanie anulowaniem powiadomień w przypadku długotrwałych procesów Workera po anulowaniu Workera. (aosp/1228346)
Wersja 2.3.1
Wersja 2.3.1
5 lutego 2020 r.
androidx.work:work-*:2.3.1
został zwolniony. Wersja 2.3.1 zawiera te zatwierdzenia:
Poprawki błędów
- Pozwala lepiej zarządzać cyklem życia elementów
Notification
w przypadku długotrwałych elementówWorker
uruchamianych, gdy aktywny 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 lintowania, aby zapewnić, że podczas korzystania z zasad
foregroundServiceType
w obiekcieForegroundInfo
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
jest publikowany bez zmian od 2.3.0-rc01
. Wersja 2.3.0 zawiera te zatwierdzenia:
Ważne zmiany od wersji 2.2.0
- Obsługa długich 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 w wczesnej identyfikacji błędów.
Wersja 2.3.0-rc01
8 stycznia 2020 r.
androidx.work:work-*:2.3.0-rc01
został zwolniony. Wersja 2.3.0-rc01 zawiera te zatwierdzenia:
Ta wersja jest identyczna z 2.3.0-beta02
.
Poprawki błędów
- Element
work-testing
definiuje teraz zależnośćapi
od elementuwork-runtime-ktx
. (aosp/1194410)
Wersja 2.3.0-beta02
18 grudnia 2019 r.
androidx.work:work-*:2.3.0-beta02
został zwolniony. Wersja 2.3.0-beta02 zawiera te zatwierdzenia:
Nowe funkcje
- Dodaliśmy lepszy komunikat o błędzie w przypadku nieodwracalnych wyjątków SQLite. (aosp/1185777)
- Dodano regułę lint, która zapewnia, że dostawca treści
androidx.work.impl.WorkManagerInitializer
zostanie usunięty zAndroidManifest.xml
podczas inicjalizacji na żądanie. (Aosp/1167007). - Dodano ostrzeżenie o błędach, gdy
enqueue()
jest używane zamiastPeriodicWorkRequest
zamiastenqueueUniquePeriodicWork()
. (aosp/1166032)
Zmiany w interfejsie API
- Funkcja
ForegroundInfo
wymaga teraz określenianotificationId
, która ma być używana podczas korzystania z funkcjiListenableWorker.setForegroundAsync()
. To jest zmiana powodująca niezgodność. Pozwala to na równoległe wykonywanie wielu długotrwałych zadań.Worker
WorkManager
lepiej zarządza też cyklem życia podanych elementówNotification
. (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 czyszczone. (Aosp/1156444).
- Rozwiązaliśmy błąd polegający na tym, że pusta lista
WorkRequest
powodowała tworzenie nieprawidłowego ciąguWorkContinuation
. (b/142835274, aosp/1157051)
Zmiany zależności
- WorkManager używa teraz Room 2.2.2.
Wersja 2.3.0-beta01
20 listopada 2019 r.
Usługa androidx.work:work-*:2.3.0-beta01
została zwolniona. Wersja 2.3.0-beta01 zawiera te commity:
Nowe funkcje
- Dodaliśmy nową regułę lintowania, która zapobiega błędom programistycznym wynikającym z nieprawidłowej implementacji kodu
androidx.work.Configuration.Provider
podczas korzystania z inicjowania na żądanie. aosp/1164559
Wersja 2.3.0-alfa03
23 października 2019 r.
androidx.work:work-*:2.3.0-alpha03
został zwolniony. Wersja 2.3.0-alpha03 zawiera te commity
Nowe funkcje
- Dodano interfejs API
WorkManager.createCancelPendingIntent()
, który ułatwia anulowanieWorkRequest
bez konieczności rejestrowania kolejnego komponentu wAndroidManifest.xml
. Dzięki temu interfejsowi API można łatwo anulowaćWorkRequest
z poziomuNotification
. Spodziewamy się, że będzie to połączone z nowymi interfejsami API dla aplikacji na pierwszym planie w wersji 2.3.0. - WorkManager korzysta teraz ze stabilnej wersji
androidx.room:*:2.2.0
.
Zmiany interfejsu API
- Zmieniono nazwę interfejsu
ForegroundInfo.getNotificationType()
naForegroundInfo.getForegroundServiceType()
, aby zachować spójność z interfejsami API platformy. (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-alfa02
9 października 2019 r.
Usługa androidx.work:work-*:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alpha02 zawiera te commity
Nowe funkcje
- WorkManager obsługuje teraz trwające lub ważne zadania, które powinny pozostać aktywne przez system operacyjny. Więcej informacji znajdziesz w artykule
ListenableWorker#setForegroundAsync()
(lubCoroutineWorker#setForeground()
w przypadku języka Kotlin). (aosp/1133636)
Zmiany interfejsu API
- Nazwa interfejsu API
containsKey
w językuData
została zmieniona nahasKeyWithValueOfType
. Zmieniono też nazwę odpowiedniej metody rozszerzenia w bibliotecektx
. (b/141916545)
Poprawki błędów
- WorkManager przydziela pracę w sposób sprawiedliwy, gdy liczba oczekujących zadań
WorkRequest
zbliża się do limitów harmonogramowania. (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)
- Firma
Data
ma teraz znacznie bardziej przydatnątoString()
reprezentację. (b/140945323) Data
ma teraz lepszą metodęequals()
. Obsługuje teżdeepEquals
w przypadku typówArray
. (b/140922528)- WorkManager przechowuje teraz swoją wewnętrzną bazę danych i pliki z ustawieniami w katalogu bez kopii zapasowej. (b/114808216)
Wersja 2.3.0-alpha01
22 sierpnia 2019 r.
Usługa androidx.work:work-*:2.3.September 5, 20190-alpha01
została zwolniona. Zmiany zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
ListenableWorker
mogą teraz ustawiać postęp za pomocą interfejsu APIsetProgressAsync()
. Dodano też odpowiedni interfejs APIsuspend
w interfejsiesetProgress
w przeglądarceCoroutineWorker
i interfejs APIsetProgress
w przeglądarceRxWorker
, który zwraca wartośćSingle<Void>
. Dzięki tym nowym interfejsom API pracownicy mogą przekazywać informacje o postępach za pomocąWorkInfo
, który ma odpowiedni interfejs APIgetProgress
. (b/79481554)Data
ma interfejs APIcontainsKey()
, który można wykorzystać do sprawdzenia, czy dane wejściowe doWorker
mają klucze o oczekiwanym typie. (b/117136838)- Obiekt
Data
może teraz być serializowany za pomocą funkcjiData.toByteArray()
iData.fromByteArray()
. Pamiętaj, że w przypadkuData
nie ma gwarancji wersji, dlatego nie przechowuj go ani nie używaj do komunikacji między aplikacjami. Można je bezpiecznie używać tylko w różnych procesach tej samej aplikacji. - Dodano możliwość określania
InputMergerFactory
za pomocąConfiguration.setInputMergerFactory
. (b/133273159)
Zmiany w interfejsie API
- WorkManager zwróci wystąpienie
IllegalStateException
, jeśliWorkerFactory
zwróci wystąpienieListenableWorker
, które zostało wcześniej wywołane. (b/139554406) - Aktualizacje dokumentacji dotyczące anulowania
ListenableFuture
i wywołania zwrotnegoonStopped()
wListenableWorker
. (b/138413671)
Poprawki błędów
- Scheduler w trakcie przetwarzania ignoruje teraz
WorkRequest
z ograniczeniemidle
. Te prośby są teraz odbierane przezJobScheduler
tylko wtedy, gdy urządzenie jest rzeczywiścieidle
. (aosp/1089779) TestScheduler
używa teraz prawidłowo określonego elementuExecutor
jako wewnętrznego wykonawcy zadań w testach. (aosp/1090749)
Wersja 2.2.0
Wersja 2.2.0
15 sierpnia 2019 r.
androidx.work:work-*:2.2.0
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Ta wersja jest taka sama jak androidx.work:work-*:2.2.0-rc01
.
Ważne zmiany w wersji 2.2.0 w porównaniu z 2.1.0
androidx.work:work-gcm:2.2.0
to nowy artefakt Maven, który obsługuje użycie GCMNetworkManager jako algorytmu szeregowania, gdy Usługi Google Play są dostępne dla poziomów interfejsu API <= 22. Jest to zależność opcjonalna, która pomaga zwiększyć niezawodność i wydajność przetwarzania w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Google Play są niedostępne, WorkManager nadal będzie używać interfejsu AlarmManager na starszych urządzeniach.
Wersja 2.2.0-rc01
30 lipca 2019 r.
androidx.work:work-*:2.2.0-rc01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiono błąd w implementacji AlarmManagera, który powodował przedwczesne wyłączenie usługi i w rzadkich przypadkach
RejectedExecutionException
. (aosp/1092374) (b/138238197). - Dodano 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.
androidx.work:work-*:2.2.0-beta02
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność od jacoco, która została wprowadzona w
2.2.0-beta01
.
Wersja 2.2.0-beta01
17 lipca 2019 r.
androidx.work:work-*:2.2.0-beta01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
org.jacoco:org.jacoco.agent:0.8.3
, która może spowodować niepowodzenie kompilacji. Zaktualizuj aplikację do najnowszej wersji, w której ta zależność została usunięta.Nowe funkcje
androidx.work:work-gcm:2.2.0-beta01
to nowy element Maven, który obsługuje używanie GCMNetworkManager jako harmonogramisty, gdy Usługi Google Play są dostępne na poziomie interfejsu API ≤ 22. Jest to opcjonalna zależność, która zwiększa niezawodność i wydajność przetwarzania w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Google Play są niedostępne, WorkManager nadal będzie używać interfejsu AlarmManager na starszych urządzeniach.
Poprawki błędów.
- Naprawiono błąd
IllegalArgumentException
podczas śledzenia stanu sieci na tabletach Nvidia Shield K1. (aosp/1010188)
Wersja 2.1.0
Wersja 2.1.0
11 lipca 2019 r.
Usługa androidx.work:work-*:2.1.0
została zwolniona. Ta wersja jest identyczna z 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, dodaj te informacje dobuild.gradle
:kotlinOptions { jvmTarget = "1.8" }
- Dodano inicjowanie WorkManagera na żądanie, które tworzy WorkManagera tylko wtedy, gdy jest używany. b/127497100 Aby skonfigurować projekt na potrzeby inicjalizacji na żądanie:
- Wyłącz automatyczne inicjator.
- Zaimplementuj
Configuration.Provider
w niestandardowym obiekcieApplication
. - Zmień wszystkie wystąpienia
WorkManager.getInstance()
naWorkManager.getInstance(Context)
. W ramach tej zmiany wycofujemyWorkManager.getInstance()
. Zawsze bezpieczniej jest wywołać nowy element zastępczyWorkManager.getInstance(Context)
, nawet jeśli nie wykonujesz inicjowania na żądanie.
PeriodicWorkRequest
obsługują teraz początkowe opóźnienia. Aby ustawić opóźnienie początkowe, użyj metodysetInitialDelay
wPeriodicWorkRequest.Builder
. b/111404867- Dodano możliwość delegowania uprawnień do co najmniej 1 zarejestrowanego
WorkerFactory
za pomocąDelegatingWorkerFactory
. b/131435993 - Dodano możliwość dostosowywania
Executor
używanego przez WorkManager do wszystkich swoich wewnętrznych operacji księgowych za pomocąConfiguration.Builder.setTaskExecutor
. - Dodano możliwość tworzenia testów jednostkowych klas
Worker
iListenableWorker
za pomocą artefaktuwork-testing
z elementamiTestWorkerBuilder
iTestListenableWorkerBuilder
.- 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.
androidx.work:work-*:2.1.0-rc01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiliśmy błąd, który powodował awarię aplikacji podczas wykonywania zadań przy użyciu funkcji
JobScheduler
podczas tworzenia kopii zapasowej b/135858602.
Wersja 2.1.0-beta02
20 czerwca 2019 r.
androidx.work:work-*:2.1.0-beta02
został zwolniony. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
TestListenableWorkerBuilder
używa teraz prawidłowej wartościWorkerFactory
podczas tworzenia instancjiListenableWorker
. b/135275844- Naprawiono błąd powodujący przesunięcia okien wykonania
WorkRequest
z powodu zakończenia działania procesu. b/135272196
Wersja 2.1.0-beta01
13 czerwca 2019 r.
androidx.work:work-*:2.1.0-beta01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- WorkManager zależy teraz od
Room 2.1.0
, co powinno rozwiązać niektóre problemy z bazą danych. - Usunięto niektóre operacje wejścia/wyjścia na dysku podczas uruchamiania w wątku głównym.
- Rozwiązano potencjalny impas w śledzeniu ograniczeń. b/134361006
- Anulowanie nieprawidłowych zadań przypisanych do WorkManagera. b/134058261
- Dodano kilka wywołań interfejsów JobScheduler API w celu ochrony przed nieprawidłowym działaniem urządzeń.
Wersja 2.1.0-alpha03
5 czerwca 2019 r.
Usługa androidx.work:*:2.1.0-alpha03
została zwolniona.
Poprawki błędów.
- Ulepszona dokumentacja
PeriodicWorkRequest
. WorkManagerTestInitHelper
używa teraz odpowiedniego 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).
- Podczas planowania zadań za pomocą WorkManager możesz obejść błędy OEM w implementacji
JobScheduler
. - Ulepszenia w harmonogramie opartym na interfejsie AlarmManager dotyczące czasu działania usług, które wcześniej powodowały rzadkie awarie. (b/133313734)
Wersja 2.1.0-alpha02
16 maja 2019 r.
Udostępniono 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. Aby ustawić opóźnienie początkowe, użyj metodysetInitialDelay
wPeriodicWorkRequest.Builder
. b/111404867Dodano możliwość przekazywania uprawnień do co najmniej 1 zarejestrowanego adresu
WorkerFactory
za pomocąDelegatingWorkerFactory
. b/131435993Dodano możliwość dostosowania interfejsu
Executor
używanego przez WorkManagera na potrzeby całego wewnętrznego księgowości za pomocąConfiguration.Builder.setTaskExecutor
.Ulepszona dokumentacja dotycząca funkcji
WorkRequest.keepResultsForAtLeast
(b/130638001), inicjalizacji na żądanie i funkcjiPeriodicWorkRequest.Builder
(b/131711394).
Wersja 2.1.0-alpha01
24 kwietnia 2019 r.
Opublikowano WorkManager 2.1.0-alpha01. Ta wersja zawiera kilka nowych interfejsów API. Pamiętaj, że od tej wersji wprowadzimy nowe funkcje, które nie będą dostępne w wersji 1.x. Zalecamy przejście na wersję 2.x.
Zmiany w interfejsie API
- Dodano inicjowanie WorkManagera na żądanie, które tworzy WorkManagera tylko wtedy, gdy jest używany. b/127497100 Aby skonfigurować projekt na potrzeby inicjalizacji na żądanie:
- Wyłącz automatyczny inicjalizator.
- Zaimplementuj
Configuration.Provider
w obiekcie niestandardowymApplication
. - Zmień wszystkie wystąpienia
WorkManager.getInstance()
naWorkManager.getInstance(Context)
. W ramach tej zmiany wycofujemyWorkManager.getInstance()
. Zawsze bezpieczniej jest wywołać nową funkcjęWorkManager.getInstance(Context)
, nawet jeśli nie wykonujesz inicjalizacji na żądanie.
- Dodano możliwość tworzenia testów jednostkowych klas
Worker
iListenableWorker
za pomocą artefaktuwork-testing
z elementamiTestWorkerBuilder
iTestListenableWorkerBuilder
.- Zwróć uwagę, że
work-testing
pobiera teraz Kotlin jako zależność, ale domyślnie zawiera również kilka rozszerzeń Kotlin.
- Zwróć uwagę, ż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 wpisane nieprawidłowo jakoCoroutineDispatcher
. Nie jest już potrzebne, ponieważ możesz samodzielnie otworzyć odpowiedni kontekst coroutineContext w treści funkcji zawieszającej. RxWorker.createWork()
iRxWorker.getBackgroundScheduler()
są teraz oznaczone zwracanymi typami@NonNull
.
Wersja 2.0.1
Wersja 2.0.1
9 kwietnia 2019 r.
Udostępniono WorkManager 2.0.1. Ta wersja jest identyczna z 2.0.1-rc01.
Wersja 2.0.1-rc01
3 kwietnia 2019 r.
Opublikowano WorkManager 2.0.1-rc01. Ta wersja zawiera poprawki błędów. W przypadku użytkowników starszej wersji 1.x niektóre z tych zmian są również dostępne w wersji 1.0.1-rc01.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo w usłudze WorkManager. b/122553577
- Naprawiono błąd awarii w przypadku szczególnych przypadków, gdy ograniczenia nie były usuwane w interfejsach JobScheduler API. b/129226383
- Naprawiono błąd
StackOverflowError
dotyczący długich łańcuchów zadań. b/129091233 - Zaktualizowano dokumentację dotyczącą
PeriodicWorkRequest
, aby wskazać, że czas elastyczny nie jest obsługiwany w interfejsie API 23. - Naprawiono niedziałające linki w dokumentacji Kotlina.
Wersja 2.0.0
Wersja 2.0.0
20 marca 2019 r.
Opublikowano WorkManager 2.0.0. Ta wersja jest taka sama jak 2.0.0-rc01 i jest stabilną wersją AndroidaX 1.0.0 z zależnościami AndroidaX. Zalecamy kierowanie reklam na tę wersję zamiast na starsze wersje 1.x. Wszystkie aktualizacje w wersji 2.x i 1.x będą zawierać ważne poprawki błędów tylko przez ograniczony czas.
Wersja 2.0.0-rc01
7 marca 2019 r.
Opublikowano WorkManager 2.0.0-rc01. Ta wersja jest identyczna z 1.0.0, ale zawiera zależności AndroidX. Gdy wersja 2.0.0 stanie się stabilna, uwzględnij ją, a starsze wersje 1.x będą otrzymywać tylko niektóre poprawki krytycznych błędów. Wszystkie aktywne prace programistyczne będą dotyczyć wersji 2.x.
Zależności sprzed AndroidaX
Dokumenty referencyjne: 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 WorkManagera w wersji 1.0.1. Ta wersja jest identyczna z wersją 1.0.1-rc01.
Zdecydowanie zachęcamy użytkowników do przejścia na wersję WorkManager 2.x, ponieważ w przyszłości będzie bardzo niewiele aktualizacji gałęzi 1.x. Nowe interfejsy API nie będą też udostępniane do biblioteki 1.x.
Wersja 1.0.1-rc01
2 kwietnia 2019 r.
Opublikowano WorkManager 1.0.1-rc01. Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo z WorkManagerem. b/122553577
- Naprawiono błąd awarii w przypadku szczególnych przypadków, gdy ograniczenia nie były usuwane w interfejsach JobScheduler API. b/129226383
- Naprawiono błąd
StackOverflowError
dotyczący długich łańcuchów zadań. b/129091233
Wersja 1.0.0
Wersja 1.0.0
5 marca 2019 r.
Jest to stabilna wersja WorkManager 1.0.0. Ta wersja WorkManager jest identyczna z 1.0.0-rc02.
Wersja 1.0.0-rc02
21 lutego 2019 r.
Jest to druga wersja kandydująca do stabilnej wersji 1.0.0 usługi WorkManager. Ta wersja zawiera 2 poprawki błędów.
Poprawki błędów
Worker
s są teraz prawidłowo zaplanowane po awarii aplikacji. b/124546316Worker
s, które zgłaszają niesprawdzony błądException
, są teraz prawidłowo oznaczane jakoFAILED
i nie powodują już awarii procesu aplikacji.
Wersja 1.0.0-rc01
14 lutego 2019 r.
To wersja kandydująca do publikacji stabilnej wersji 1.0.0 WorkManagera. Ta wersja zawiera 1 poprawkę błędu.
Poprawki błędów
- Implementacja oparta na AlarmManagerze prawidłowo uwzględnia okna
flex
w przypadku PeriodicWorkRequests. b/124274584
Wersja 1.0.0-beta05
6 lutego 2019 r.
Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Naprawiono przypadek korzystania z interfejsu
JobScheduler.getPendingJob(...)
w interfejsie API 23. b/123893059 - Usunięto błąd
NullPointerException
na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/123835104
Wersja 1.0.0-beta04
4 lutego 2019 r.
Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Ulepszono harmonogramowanie okresowego działania dla implementacji opartej na AlarmManager.
- Rozwiązaliśmy problem polegający na tym, że WorkManager nieprawidłowo śledził ograniczenia przy użyciu implementacji opartej na AlarmManager. b/123379508
- Rozwiązano problem polegający na tym, że WorkManager nie próbował ponownie wykonać zadania po zakończeniu działania procesu przy użyciu implementacji opartej na AlarmManager. b/123329850
- Rozwiązaliśmy problem, który powodował wyciek Wakelocków przez WorkManagera podczas korzystania z implementacji opartej na AlarmManagerze.
Wersja 1.0.0-beta03
25 stycznia 2019 r.
Ta wersja zawiera kilka poprawek 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 pracy. b/123211993 - Rozwiązanie problemu polegającego na tym, że zadanie nie respektowało prawidłowo czasu odpoczynku. b/122881597
- Naprawiono błąd
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (API lub starszym). Jest to kontynuacja poprawki z1.0.0-beta02
. b/121345393 - Dodaliśmy
exported=false
do niektórych komponentów w pliku manifestu, które nie miały tej adnotacji. - Dodanie do dokumentacji na poziomie pakietu informacji o tym, jak WorkManager współdziała z systemem operacyjnym.
Wersja 1.0.0-beta02
15 stycznia 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Rozwiązano problem, w którym zadania okresowe mogły być wykonywane więcej niż raz w interwale na urządzeniach z Androidem 6.0 (poziom interfejsu API 23).b/121998363
- Naprawiono błąd
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/121345393 - Rozwiązano problem z błędnym wykonywaniem pracy, gdy nie są spełnione ograniczenia na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/122578012
- Zoptymalizowana obsługa ukończenia pracy w celu skrócenia czasu w niektórych przypadkach skrajnych. b/122358129
- Dodano zmianę, która rozwiązuje potencjalne problemy z konkurencją między wieloma instancjami
LiveData
używanymi przez WorkManager. - Zamiast
1.1.1-rc01
używamy teraz zależnościRoom
1.1.1
, ponieważ obie wersje są identyczne. b/122578011
Wersja 1.0.0-beta01
19 grudnia 2018 r.
Ta wersja nie zawiera żadnych zmian interfejsu API. W przyszłości interfejs API WorkManager powinien być stabilny do czasu wydania kolejnej wersji, chyba że wystąpi jakiś poważny problem. Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Wcześniej anulowane zadania podrzędne do zakończonego zadania nadrzędnego nie będą już wykonywane. b/120811767
- prawidłowo zainicjowane klasy rejestrowania (głównie w ramach testów);
Wersja 1.0.0-alpha13
12 grudnia 2018 r.
Ta wersja zawiera niewielką zmianę interfejsu API, która będzie przydatna dla niektórych użytkowników Kotlin.
Zmiany w interfejsie API
- Klasa
androidx.work.Result
została przeniesiona do klasy wewnętrznejListenableWorker
. Zapobiega to konfliktom refaktoryzacji z klasąResult
najwyższego poziomu w Kotlinie. To jest zmiana interfejsu API, która powoduje przerwanie działania. b/120564418
Zmiany w interfejsie API, które powodują przerwanie zgodności
- Klasa
androidx.work.Result
została przeniesiona do klasy wewnętrznejListenableWorker
.
Wersja 1.0.0-alfa12
5 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API powodujące niezgodność. Zapoznaj się z sekcją Zmiany w interfejsie API powodujące niezgodność. Ta wersja prawdopodobnie zostanie wydana jako pierwsza wersja beta. alpha12
zawiera też obszerne aktualizacje dokumentacji.
Zmiany w interfejsie API
- Nowy artefakt
work-rxjava2
zawieraRxWorker
. To jestListenableWorker
, który oczekujeSingle<Payload>
. - W związku z nadchodzącym wycofaniem usługi Firebase JobDispatcher wycofaliśmy jej obsługę. Oznacza to, że artefakt
work-firebase
nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywy. - Scalono
Payload
zResult
.Result
jest teraz „zamkniętą klasą” z 3 konkretnymi implementacjami, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(lubResult.failure(Data)
) iResult.retry()
. TwojeListenableFuture
to terazResult
zamiastPayload
. Elementy typuWorker
nie mają metod pobierania ani metody ustawiania dla danych wyjściowychData
. To niezwykła zmiana. - Dodano
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
iConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
oraz ich warianty, aby lepiej obsługiwać identyfikatory URI treści z długim czasem uruchamiania. b/119919774 - Dodano
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
wariant. Ta metoda wymaga interfejsu API 26. - Dodano metody rozszerzeń Kotlina
Operation.await()
iListenableFuture.await()
. - Nazwa
Operation.getException()
została zmieniona naOperation.getThrowable()
. To niezwykła zmiana. - Klasa i metody odwołujące się do obiektu
ContentUriTriggers
nie są już dostępne do użytku publicznego. To jest zmiana powodująca niezgodność. - Usunęliśmy pozostałe metody varargs w
WorkManager
,WorkContinuation
iOneTimeWorkRequest
, aby usprawnić interfejs API. Aby rozwiązać problemy z kompilacją, możesz dodać do istniejących zmiennych znacznikiArrays.asList(...)
. Nadal uwzględniamy wersje każdej metody z jednym argumentem. To jest zmiana powodująca niezgodność. - Usunięto warianty
WorkContinuation.combine(OneTimeWorkRequest, *)
. Prezentowany interfejs API był trudny do zrozumienia. Istniejące metodycombine
są bardziej zrozumiałe. To jest zmiana powodująca niezgodność.
Poprawki błędów
- Implementacje sprzed Marshmallow są teraz bardziej niezawodne w przywracaniu procesu po awarii już wykonywanego zadania.
- Pole
LiveData
zaobserwowane w usłudzeobserveForever
jest śledzone przez WorkManagera. Jest to wersja wsteczna poprawki biblioteki Room. b/74477406 - Funkcja
Data.Builder.build()
wyrzuca teraz wyjątek, jeśli serializowany obiekt przekracza maksymalny rozmiar. Wcześniej zdarzało się to tylko w wątku w tle, gdzie nie można było tego odpowiednio obsłużyć. - Dalsze rozróżnianie zadań zatrzymanych i anulowanych;
getWorkInfoById()
zwróciWorkInfo
zCANCELLED
State
podczasListenableWorker.onStopped()
. - Traktuj
null
Result
jako błędy w procesieListenableWorker
. b/120362353 - Przypuszczalna poprawka dla Shield Tablets z interfejsem API 24, która czasami powodowała błąd
IllegalArgumentException
. b/119484416
Zmiany w interfejsie API, które powodują przerwanie zgodności
- W związku z nadchodzącym wycofaniem usługi Firebase JobDispatcher wycofaliśmy jej obsługę. Oznacza to, że artefakt
work-firebase
nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. Planujemy dodać w przyszłości alternatywną wersję. - Scalono
Payload
zResult
.Result
jest teraz „zamkniętą klasą” z 3 konkretnymi implementacjami, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(lubResult.failure(Data)
) iResult.retry()
.ListenableFuture
ma teraz wynikResult
zamiastPayload
.Worker
nie mają metod get i set dla danych wyjściowychData
. - Dodano metody rozszerzeń Kotlina
Operation.await()
iListenableFuture.await()
. - Nazwa
Operation.getException()
została zmieniona naOperation.getThrowable()
. - Klasa
ContentUriTriggers
i metody, które się do niej odwołują, nie są już dostępne publicznie. - Aby uprościć interfejs API, usunięto pozostałe metody varargs w interfejsach
WorkManager
,WorkContinuation
iOneTimeWorkRequest
. Aby rozwiązać problemy z kompilacją, możesz dodać do istniejących zmiennych znacznikiArrays.asList(...)
. Nadal jednak uwzględniamy wersje z pojedynczym argumentem dla każdej metody. - Usunięto warianty
WorkContinuation.combine(OneTimeWorkRequest, *)
. Prezentowany interfejs API był trudny do zrozumienia. Istniejące 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 wersji beta
.
W tej wersji wprowadziliśmy zmiany w interfejsie API. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API poniżej.
Zmiany interfejsu API
work-runtime-ktx
wprowadza nowe urządzenieCoroutineWorker
.- Nazwa
WorkStatus
została zmieniona naWorkInfo
. Wszystkie odpowiadające im warianty metodygetStatus
zostały przemianowane na odpowiadające im wariantygetWorkInfo
. To jest zmiana powodująca niezgodność. ListenableWorker.onStopped()
no longer accepts ma argument logiczny, który wskazuje, czyWorkRequest
zostało anulowane.WorkManager
nie rozróżnia już tych dwóch rodzajów. To jest zmiana powodująca niezgodność.- Nazwa pakietu
androidx.work.test
została zmieniona naandroidx.work.testing
. To niezwykła zmiana. - Metody ustawień w interfejsie
Constraints
nie są już częścią publicznego interfejsu API. To jest zmiana powodująca niezgodność. - tablice
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwracane wcześniej. Teraz te metody zwracają kolekcje. To jest zmiana powodująca niezgodność. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. To niezwykła zmiana. - Konstruktor klasy
WorkStatus
nie jest już częścią publicznego interfejsu API. To niezwykła zmiana. - Jednostki organizacyjne
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały odpowiednio przemianowane naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. To jest zmiana powodująca niezgodność. - Dodano wiele adnotacji
@NonNull
do publicznego interfejsu API, aby poprawić jego ergonomię. - Dodaj interfejs
WorkManager.enqueueUniqueWork()
API, aby dodać do kolejki unikalnychOneTimeWorkRequest
bez konieczności tworzeniaWorkContinuation
. - Wszystkie warianty metod
enqueue
icancel
wWorkManager
zwracają teraz nowy typOperation
. To jest zmiana powodująca niezgodność. - Wszystkie warianty funkcji
enqueue
nie obsługują już argumentów zmiennych w przypadku argumentuWorkRequest
. To niezwykła zmiana. Zamiast nich używaj kolekcji. Możesz użyćArrays.asList()
, aby zmodyfikować istniejący kod. Zrobiliśmy to, aby zmniejszyć liczbę interfejsów API i metod. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje błądIllegalStateException
. To jest zmiana powodująca niezgodność.
Poprawki błędów
- Elementy
WorkRequest.Builder
w artefakciework-runtime-ktx
korzystają teraz z elementówListenableWorker
. Poprawki b/117666259 - Upewnij się, że następny czas uruchomienia reguły
PeriodicWork
jest w przyszłości. Poprawki b/118204399 - Usuń potencjalne operacje wejścia/wyjścia na dysk podczas uruchamiania aplikacji za pomocą WorkManagera. Poprawiono parametr b/117796731
- Popraw stan wyścigu w mieście
WorkConstraintsTracker
. Rozwiązano problem android-workmanager/issues/56
Zmiany w interfejsie API, które powodują przerwanie zgodności
- Nazwa konta
WorkStatus
została zmieniona naWorkInfo
. Wszystkie odpowiadające im warianty metodygetStatus
zostały przemianowane na odpowiadające im wariantygetWorkInfo
. - Funkcja
ListenableWorker.onStopped()
nie akceptuje już argumentu logicznego wskazującego, czyWorkRequest
został anulowany.WorkManager
nie rozróżnia już tych dwóch rodzajów. - Nazwa pakietu
androidx.work.test
została zmieniona naandroidx.work.testing
. - Metody ustawień w interfejsie
Constraints
nie są już częścią publicznego interfejsu API. - tablice
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwracane wcześniej. Teraz te metody zwracają kolekcje. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. - Konstruktor klasy
WorkStatus
nie jest już częścią publicznego interfejsu API. - Jednostki organizacyjne
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały odpowiednio przemianowane naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. - Wszystkie warianty metod
enqueue
icancel
w funkcjiWorkManager
zwracają teraz nowy typOperation
. - Wszystkie warianty funkcji
enqueue
nie obsługują już argumentów zmiennych w przypadku argumentuWorkRequest
. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje błądIllegalStateException
.
Wersja 1.0.0-alpha10
11 października 2018 r.
Ta wersja obsługuje pracę asynchroniczną kontrolowaną przez dewelopera. W tej wersji wprowadzono zmiany w interfejsie API, które powodują niezgodność. Zapoznaj się z sekcją Zmiany w interfejsie API poniżej.
Oczekujemy, że WorkManager wkracza w ostatnią fazę okresu alfa. Spodziewamy się, że interfejs API będzie stabilny w wersji beta, więc poświęć chwilę na przesłanie opinii w naszym narzędziu do śledzenia problemów.
Zmiany w interfejsie API
- Usunięto wszystkie metody i klasy
deprecated
, w tym domyślny konstruktorWorker
. Jest to przełomowa zmiana interfejsu API. - Zmieniliśmy nazwę zajęć
NonBlockingWorker
naListenableWorker
. Są one teraz widoczne i gotowe do użycia.ListenableWorker
zapewnia dostęp do jednej abstrakcyjnej metodyListenableFuture<Payload> onStartWork()
, która jest wywoływana w wątku głównym. Rozpoczynanie i przetwarzanie pracy w tle zależy od Ciebie. Po zakończeniu należy odpowiednio zaktualizowaćListenableFuture
. Referencyjne implementacjeListenableFuture
są dostępne w pakiecieFutures
w gałęzialpha02
(patrz sekcjaWorkManager
).- Komponent
Worker
rozszerza zakresListenableWorker
i nadal działa tak jak wcześniej, z abstrakcyjną metodąResult doWork()
. - Niektóre metody i użytkowników zostały losowo przełożone z
Worker
doListenableWorker
. - Wkrótce udostępnimy implementacje referencyjne dla systemów
ListenableWorker
, które korzystają z współrzędnych Kotlin (po opublikowaniu wersji stabilnych) i RxJava2.
- Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały połączone w abstrakcyjną klasę o nazwieWorkerFactory
. Dzięki tej implementacji domyślne działanie oparte na odbiciu jest wywoływane jako ostateczne rozwiązanie w przypadku wszystkich utworzonych przez użytkownika instancjiWorkerFactory
. To jest zmiana powodująca niezgodność. - Usunięto metody
WorkManager.synchronous()
iWorkContinuation.synchronous()
oraz wszystkie powiązane z nimi metody. DodanoListenableFuture<Void>
jako typ zwracany wielu metod w interfejsie API. Jest to zmiana interfejsu API, która powoduje przerwanie działania.- Teraz możesz synchronicznie pobierać i obserwować dane za pomocą funkcji
ListenableFuture
. Na przykład funkcjaWorkManager.enqueue()
zwracała wcześniejvoid
, 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ą, czy operacja zakończyła się sukcesem, czy niepowodzeniem, tylko że została zakończona. Aby znaleźć te informacje, musisz połączyć metody w usłudze WorkManager. - Ignorujemy wywołania
cancel()
w przypadku tych obiektów, ponieważ są one mylące i trudne do interpretacji (czy anulujesz operację, czy tylko jej wynik?). To jest zgodne z umowąFuture
. - Aby zachować zgodność z synchronicznymi metodami
getStatus*
, udostępniliśmy wariantyListenableFuture
i przemianowaliśmy istniejące metody, które zwracałyLiveData
, tak aby w ich nazwie wyraźnie widniało „LiveData” (np.getStatusesByIdLiveData(UUID)
). To zmiana interfejsu API, która powoduje przerwanie działania.
- Teraz możesz synchronicznie pobierać i obserwować dane za pomocą funkcji
Poprawki błędów
- Naprawiliśmy znany problem z wersji alfa09 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ć nową instrukcję konstruktora
Worker
. b/116296569 - Popraw potencjalne
NullPointerException
w warunkach wyścigu, w których praca byłaREPLACE
d. b/116253486 i b/116677275 WorkContinuation.combine()
akceptuje teraz co najmniej 1WorkContinuation
zamiast 2 lub więcej. b/117266752
Zmiany w interfejsie API, które powodują przerwanie zgodności
- Usunięto wszystkie metody i klasy dostępne wcześniej w usłudze
deprecated
, a zwłaszcza domyślny konstruktorWorker
. - Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały połączone w abstrakcyjną klasę o nazwieWorkerFactory
. - Usunięto
WorkManager.synchronous()
iWorkContinuation.synchronous()
. - Metody
WorkManager.getStatus*()
zwracają terazListenableFuture
.WorkManager.getStatus*LiveData()
zwracaLiveData
s.
Wersja 1.0.0-alpha09
19 września 2018 r.
Znany problem
Jeśli napotkasz ten problem: „Znaleziono więcej niż 1 plik ze ścieżką niezależną od systemu operacyjnego „META-INF/proguard/androidx-annotations.pro””, umieść poniższy kod w pliku Gradle jako tymczasowe obejście tego problemu i naprawimy go w wersji alfa10:
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 rozwiązania problemu „100 zadań”. b/115560696
- Dodaliśmy kilka poprawek błędów ograniczeń klucza obcego spowodowanych warunkami wyścigu. b/114705286
- Przekazane połączenia
ConstraintTrackingWorker.onStopped(boolean)
do podstawowegoWorker
. b/114125093 - Wymuś prawidłowe minimalne opóźnienie w przypadku Firebase JobDispatcher. b/113304626
- Ulepszone wątkowanie zapewnia wewnętrzne gwarancje biblioteki.
- Skoryguj potencjalny problem z wewnętrznym usuwaniem duplikatów wartości
LiveData
.
Zmiany w interfejsie API
- Teraz możesz tworzyć własne instancje
Worker
w czasie wykonywania kodu, podając wartośćWorkerFactory
w ramachWorkManager.Configuration
. Fabryka zastępcza toDefaultWorkerFactory
, która odpowiada działaniu poprzednich wersji WorkManagera.- Domyślne konstruktory
Worker
iNonBlockingWorker
są teraz oznaczone jako wycofane. Użyj nowego konstruktora (Worker(Context, WorkerParameters)
) i wywołaj metodęsuper(Context, WorkerParameters)
. W przyszłych wersjach WorkManager konstruktor domyślny zostanie usunięty.
- Domyślne konstruktory
- Wewnętrznie zaczęliśmy używać nowego artefaktu
ListenableFuture
(bez zależności od Guavy). W kolejnych wersjach dodamy do tego interfejsu API ListenableFutures. Ta zmiana umożliwi odsłonięcieNonBlockingWorker
. - Dodaj możliwość aktywowania zadań czasowych w
TestDriver
przez funkcjeTestDriver.setInitialDelayMet(UUID)
iTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Zmiany powodujące niezgodność
- Domyślne konstruktory
Worker
iNonBlockingWorker
są przestarzałe. Jak najszybciej przejdź na nowego konstruktora. W przyszłych wersjach konstruktor domyślny zostanie usunięty.
Wersja 1.0.0-alpha08
27 sierpnia 2018 r.
Poprawki błędów
- wyraźnie oznaczyć komponenty WorkManager jako nieobsługujące bezpośredniego uruchamiania, aby nie uruchamiały się podczas bezpośredniego uruchamiania; W przyszłości udostępnimy wersję WorkManagera z obsługą bezpośredniego rozruchu. b/112665532
- Rozwiązaliśmy problem, który powodował, że nie wykonywano powtórzonych zadań. b/112604021
- Rozwiązanie problemu polegającego na tym, że zadania okresowe nie były wykonywane wielokrotnie (związany z powyższym problemem). b/112859683
- Zasady odstąpienia od zasad, gdy proces aplikacji jest już uruchomiony.
- Poprawiono komunikaty o wyjątkach w pliku
Data
, wskazujące limit na 10 KB. - Zmniejszono maksymalną wartość
Configuration.setMaxSchedulerLimit(int)
do 50, aby uwzględnić pewien czas oczekiwania na zakończenie przetwarzaniaJobScheduler
. 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 zwrócić nieograniczoną liczbę wyników.
- Zadania, które zostały zakończone, teraz prawidłowo anulują wszystkie oczekujące kopie tego zadania w innych harmonogramach. Spowoduje to przekroczenie limitu
JobScheduler
zadań. b/111569265 - Naprawiono błąd
ConcurrentModificationException
w plikuConstraintTracker
. b/112272753 - Zmieniono adnotacje typu zwracanego w funkcjach
Data.getBooleanArray(String)
iData.getIntArray(String)
na@Nullable
zamiast@NonNull
. b/112275229
Zmiany w interfejsie API
Worker
obejmuje teraz nowe zajęcia,NonBlockingWorker
. Nie wpłynie to na bieżące korzystanie z usługi. W przyszłościNonBlockingWorker
stanie się w pełni obsługiwanym elementem w przypadku niestandardowych rozwiązań dotyczących wątków.- Adnotacje typu zwracania
Data.getBooleanArray(String)
iData.getIntArray(String)
zostały zmienione na@Nullable
zamiast@NonNull
. b/112275229 - Rozszerzenia Kotlina: wycofane
Map.toWorkData()
i dodanoworkDataOf(vararg Pair<String, Any?>)
najwyższego poziomu, aby zachować 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
- Naprawiono błąd, który powodował, że
PeriodicWork
nie działał zgodnie z harmonogramem w trybie Doze. b/111469837 - Napraw warunek wyścigu podczas śledzenia ograniczeń, które powodują awarię
WorkManager
. googlecodelabs/android-workmanager/issues/56 - Utwórz unikalne
WorkRequest
, gdy używaszWorkRequest.Builder#build()
. b/111408337 - Włącz używanie usługi
RescheduleReceiver
tylko wtedy, gdy elementy (WorkRequest
) jej potrzebują. b/111765853
Wersja 1.0.0-alpha05
24 lipca 2018 r.
Zmiany interfejsu API
- Etykieta
WorkManager.getInstance()
jest teraz oznaczona adnotacją@NonNull
zamiast@Nullable
. Jeśli jednak w przypadku inicjalizacji ręcznej singleton nie zostanie prawidłowo zainicjowany, metoda zwróci błądIllegalStateException
. Jest to zmiana interfejsu API, która powoduje przerwanie działania. - Dodaliśmy nowy interfejs API
Configuration.Builder.setMinimumLoggingLevel(int)
, który umożliwia kontrolowanie szczegółowości WorkManagera. Domyślnie WorkManager rejestrujeLog.INFO
i nowsze. - Zmieniono podpis
Data.getString()
, aby nie używał już wartości domyślnej (domyślnienull
). To zmiana interfejsu API, która powoduje niezgodność. - 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 powoduje przerwanie działania.
Poprawki błędów
- WorkManager nie wykonuje już zadań w znanych przypadkach automatycznego tworzenia kopii zapasowych. Może to spowodować awarię. b/110564377
- Rozwiązaliśmy problem z podwójnym planowaniem
PeriodicWorkRequest
podczas używaniaJobScheduler
. b/110798652 - Rozwiązaliśmy problem polegający na tym, że
PeriodicWorkRequest
nie działały prawidłowo po przejściu urządzenia w stan uśpienia. b/111469837 - Rozwiązaliśmy problem z opóźnieniami początkowymi podczas używania Dispatchera zadań Firebase. b/111141023
- Naprawiono niektóre potencjalne problemy z warunkami wyścigu i czasami.
- Prawidłowo zwolnione
BroadcastReceiver
, które nie były już potrzebne. - Zoptymalizowano wydajność przeplanowania po ponownym uruchamianiu aplikacji po wymuszeniu ich zamknięcia.
- Zezwolono na wywoływanie funkcji
TestScheduler.setAllConstraintsMet(UUID)
przed lub po umieszczeniu danego elementuWorkRequest
w kolejce. b/111238024
Zmiany powodujące niezgodność
- Etykieta
WorkManager.getInstance()
jest teraz oznaczona adnotacją@NonNull
zamiast@Nullable
. - Zmieniono sygnaturę atrybutu
Data.getString()
, aby nie przyjmował on już wartości domyślnej (jest to domyślnienull
). - Oznaczyliśmy niektóre metody potrzebne tylko do użytku wewnętrznego jako
@hide
. Obejmuje to konstruktorConstraints
,Data.toByteArray()
orazData.fromByteArray(byte[])
.
Wersja 1.0.0-alpha04
26 czerwca 2018 r.
Poprawki błędów
- Gdy korzystasz z implementacji opartej na
AlarmManager
, harmonogramy zdarzeń typuPeriodicWorkRequest
są teraz prawidłowo ustawiane. - Rozwiązano potencjalny problem z ANR podczas ponownego planowania wszystkich instancji roboczych po wymuszonym zatrzymaniu lub ponownym uruchomieniu. b/110507716
- Dodano adnotacje o dopuszczaniu wartości null do różnych interfejsów API WorkManager. b/110344065
- Logowanie niewykrytych wyjątków, które występują podczas wykonywania zadania. b/109900862
- Dozwolono na migrację bazy danych z niszczącymi skutkami, jeśli zdecydujesz się cofnąć do starszej wersji WorkManagera. b/74633270
- Rozwiązaliśmy problem, który powodował awarię migracji przy tworzeniu zduplikowanych tagów niejawnych. Jest to bardzo rzadki problem, który występuje tylko wtedy, gdy użyjesz tego samego formatu tagu domyślnego.
Wersja 1.0.0-alpha03
19 czerwca 2018 r.
Poprawki błędów
Usunięto warunek wyścigu w implementacji opartej na
AlarmManager
(b/80346526).Rozwiązaliśmy problem z duplikatami zadań podczas używania funkcji
JobScheduler
po ponownym uruchomieniu urządzenia.Zadania z wyzwalaczami identyfikatora URI treści są teraz zachowywane po ponownym uruchomieniu. b/80234744
Aktualizacje dokumentacji. b/109827628, b/109758949, b/80230748
Naprawiono awarię podczas ponownego umieszczania w kolejce
WorkRequest
. b/109572353.Naprawiliśmy ostrzeżenia kompilatora Kotlin podczas korzystania z zależności
work-runtime-ktx
.WorkManager używa teraz wersji
Room
1.1.1-rc1
.
Zmiany w interfejsie API
- Dodano
getStatusesSync()
, synchroniczną wersjęWorkContinuation.getStatuses()
. Worker
może rozróżnić anulowanie zainicjowane przez użytkownika i tymczasowe zatrzymanie na żądanie systemu operacyjnego.Worker.isStopped()
zwracatrue
, jeśli została przesłana prośba o zatrzymanie.Worker.isCancelled()
zwracatrue
, gdy zadanie zostało wyraźnie anulowane. b/79632247- Dodano obsługę metody JobParameters#getNetwork() w wersji interfejsu API 28. Jest ona dostępna za pomocą
Worker.getNetwork()
. - Dodano
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
, aby można było określić maksymalną liczbę zadań, które mogą być wysyłane doJobScheduler
lubAlarmManager
. Dzięki temuWorkManager
nie zajmie wszystkich dostępnychJobScheduler
miejsc. - Dodano
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, który pomaga zdefiniować zakres identyfikatorów zadańJobScheduler
, które są bezpieczne do użycia przezWorkManager
. b/79996760 Worker.getRunAttemptCount()
zwraca bieżącą liczbę uruchomień danego elementuWorker
. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
umożliwia umieszczanie w kolejce unikalnychPeriodicWorkRequest
. b/79600647WorkManager.cancelAllWork()
anuluje wszystkieWorker
. Biblioteki zależne odWorkManager
mogą sprawdzać, kiedy ta metoda została ostatnio wywołana, używającWorkManager.getLastCancelAllTimeMillis()
do dodatkowego czyszczenia stanu wewnętrznego.- Dodano
WorkManager.pruneWork()
, aby usuwać ukończone zadania z wewnętrznej bazy danych. b/79950952, b/109710758
Zmiany w zachowaniu
- Dodano domyślny tag dla wszystkich elementów
WorkRequest
, który jest pełną nazwą klasy dla elementuWorker
. Umożliwia to usuwanieWorkRequest
beztag
lub gdyid
jest niedostępny. b/109572351
Zmiany powodujące niezgodność
- Nazwa
Worker.WorkerResult
została zmieniona naWorker.Result
. - Element
Worker.onStopped
ma teraz dodatkowy parametrisCancelled
, który jest ustawiony natrue
, gdy elementWorker
został wyraźnie anulowany.
Wersja 1.0.0-alpha02
24 maja 2018 r.
Poprawki błędów
- Naprawiono błąd
NullPointerException
w witrynieState.isFinished()
. b/79550068 - Rozwiązaliśmy problem, który powodował przeplanowanie
Worker
naApplication.onCreate()
. b/79660657 - Rozwiązaliśmy problem, który umożliwiał zaplanowanie większej ilości pracy niż dozwolone przez system operacyjny. b/79497378
- Przeniesienie czyszczenia blokad uśpienia powiązanych z
Worker
na wątek w tle. - Wdrożenie
AlarmManager
teraz prawidłowo usuwa dane, gdy wszystkie oczekujące zadania zostaną ukończone. - Naprawiliśmy zapytania SQL czyszczenia, które wpływały na języki inne niż angielski. b/80065360
- Dodaliśmy obsługę właściwości
float
w składnikuData
. b/79443878 - Funkcja
Data.Builder.putAll()
zwraca teraz wystąpienie elementuBuilder
. b/79699162 - Więcej informacji w dokumentacji i poprawki. b/79691663
Zmiany w interfejsie API
Worker
s może zareagować na zatrzymanie. Za pomocąWorker.isStopped()
możesz sprawdzić, czyWorker
została zatrzymana.Worker.onStopped()
można używać do wykonywania prostych operacji czyszczenia.- Interfejs API
Worker.getTags()
zwracaSet
tagów powiązanych zWorker
. - Dodano przeciążenia
javax.time.Duration
dla interfejsów API, które przyjmują kombinację czasu trwania iTimeUnit
. Jest on chroniony przez@RequiresApi(26)
. - Rozszerzenia
WorkManager
zostały przeniesione z pakietuandroidx.work.ktx
do pakietuandroidx.work
. Stare rozszerzenia zostały wycofane i w przyszłej wersji zostaną usunięte. - Środowisko wykonawcze
Configuration.withExecutor()
zostało wycofane. Zamiast tego użyj polaConfiguration.setExecutor()
.
Wersja 1.0.0-alpha01
8 maja 2018 r.
WorkManager upraszcza planowanie i wykonywanie gwarantowanego działania w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01
.