Menedżer roboczy
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
7 sierpnia 2024 r. | 2.9.1 | - | - | 2.10.0-alfa02 |
Deklarowanie zależności
Aby dodać zależność od WorkManagera, musisz dodać repozytorium Google Maven do swojego projekt:
Dodaj zależności 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ń Kotlin znajdziesz w dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.
Zobacz dokumentację narzędzia Issue Tracker. .
Wersja 2.10
Wersja 2.10.0-alfa02
17 kwietnia 2024 r.
Usługa androidx.work:work-*:2.10.0-alpha02
została zwolniona. Wersja 2.10.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano możliwość wysyłania spanów logów czasu za pomocą konfigurowalnego
@RestrictTo
Tracer
wWorkManager
. (I17d7f, b/260214125) - Do elementu sterującego dyspozytorem dodano
Configuration.workerCoroutineContext
, gdzie wykonywane jest polecenieCoroutineWorker
. Pomaga całkowicie unikać korzystania zDispatchers.Default
wWorkManager
. (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)WorkManager
zajęcia zostały przeniesione do Kotlin. Obecnie metody, które zwracają wartościLiveData
,ListenableFuture
lubFlow
, dostarczają prawidłowe informacje o dopuszczalności wartości null. Może wymagać wprowadzenia zmian w ustawieniach kodu źródłowego, jeśli założenia dotyczące 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 instancji roboczej za pomocą metodyConstraints.setRequiredNetworkRequest
. Pozwala to dokładniej kontrolować sieć, w której powinna działać instancja robocza.
Zmiany interfejsu API
- Dodano możliwość 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 zatwierdzenia.
Poprawki błędów
- Naprawiono awarię, która spowodowała, że usługa
WorkManager
próbowała ponownie uruchomić długo działającą instancję roboczą (tj. instancję roboczą na pierwszym planie), gdy działanie na pierwszym planie miało unieważnione uprawnienia wstępne Androida 14. (b/333957914)
Wersja 2.9.0
29 listopada 2023 r.
Usługa androidx.work:work-*:2.9.0
została zwolniona. Wersja 2.9.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.8.0
- 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
. - Teraz
WorkManager
podaje wskazówkę, dlaczego instancja robocza została wcześniej zatrzymana. Zapytanie może zostać wysłane przez instancję roboczą za pomocą metodygetStopReason()
lub zWorkInfo
za pomocągetStopReason()
. - Dokładne harmonogramy pracowników okresowych przez
setNextScheduleTimeOverride
. Umożliwia to dynamiczne obliczanie następnego okresowego harmonogramu pracy, za pomocą którego można wdrożyć funkcje zaawansowane, takie jak adaptacyjne okresy odświeżania, niestandardowe ponawianie prób lub uruchamianie procesu roboczego kanału wiadomości, zanim użytkownik obudzi się codziennie rano, bez konieczności dryfu. Z tych technik należy korzystać w odniesieniu doExistingPeriodicWorkPolicy.UPDATE
, aby uniknąć anulowania obecnie uruchomionej instancji roboczej podczas planowania kolejnej. - 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 Coroutines, takie jak
CoroutineWorker
, zostały przeniesione z dodatkowego artefaktu „Work-runtime-ktx” do głównego środowiska wykonawczego roboczego artefaktu. Plik Work-runtime-ktx jest teraz pusty.
Zmiany interfejsu API
- Element
stopReason
został dodany do playlistyWorkInfo
. UdostępniastopReason
po uruchomieniu instancji roboczej. Może się to przydać w raportowaniustopReason
w użyteczny sposób, ponieważ zatrzymanie pracownika może prowadzić do bardzo szybkiego zakończenia działania aplikacji. (I21386) - Zezwalaj na ustawienie opcji
Clock
w konfiguracji i używanie jej do sekwencjonowania testów instancji roboczych. (IC586e). - Do
ListenableWorker
dodano metodęgetStopReason()
, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano element
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia o wycieku zasobów. (Ia8d49). - Konstruktor
WorkInfo
jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) - Plik
work-runtime-ktx
jest teraz pusty, aCoroutineWorker
i inne narzędzia specyficzne dla Kotlin są teraz dostępne w głównym artefaktie środowiska wykonawczego. (I71a9a) - Dodano metodę
setNextScheduleTimeOverride
, która umożliwia dokładne ustawienie okresowych harmonogramów pracy (I3b4da) - Dodano
getNextScheduleTimeMillis
w celu uzyskania informacji o zaplanowanym czasie uruchomienia doWorkInfo
. (I797e4) - Informacje o początkowym opóźnieniu i okresowości są dodawane do kolumny
WorkInfo
. (I52f2f) - Dodano obserwację instancji roboczych za pomocą przepływów z użyciem metod
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Do aplikacji „
Constraints
” dodano brakujące adnotacje (@RequiresApi(...)
) konstruktory i właściwości. 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 instancji roboczych identyfikatora treści, aby zapewnić im gwarantowane przedziały w regionieJobScheduler
. Pozwala to uniknąć brakujących aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować wConfiguration.Builder.setContentUriTriggerWorkersLimit
. (IC128f).- Do elementu
WorkInfo
dodano ograniczenia. (I162C0)
Wersja 2.9.0-rc01
18 października 2023 r.
Usługa androidx.work:work-*:2.9.0-rc01
została zwolniona. Wersja 2.9.0-rc01 zawiera te zatwierdzenia.
- Brak zmian od ostatniej wersji beta
Wersja 2.9.0-beta01
6 września 2023 r.
Usługa androidx.work:work-*:2.9.0-beta01
została zwolniona. Wersja 2.9.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano stałe do przyczyn zatrzymania zwróconych przez
WorkInfo.stopReason
iListenableWorker.stopReason
(I0cc00)
Wersja 2.9.0-alpha02
26 lipca 2023 r.
Usługa androidx.work:work-*:2.9.0-alpha02
została zwolniona. Wersja 2.9.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Teraz
WorkManager
podaje wskazówkę, dlaczego instancja robocza została wcześniej zatrzymana. Zapytanie może zostać wysłane przez instancję roboczą za pomocą metodygetStopReason()
lub zWorkInfo
za pomocągetStopReason()
.
Zmiany interfejsu API
- Element
stopReason
został dodany do playlistyWorkInfo
. UdostępniastopReason
po uruchomieniu instancji roboczej. Może się to przydać w raportowaniustopReason
, ponieważ zatrzymanie pracownika może prowadzić do bardzo szybkiego wyłączenia aplikacji. (I21386) - Zezwalaj na ustawianie zegara w konfiguracji i używanie ich do sekwencjonowania testów instancji roboczych. (IC586e).
- Do
ListenableWorker
dodano metodęgetStopReason()
, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano element
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia o wycieku zasobów. (Ia8d49).
Poprawki błędów
- Dodano możliwość omijania
overrideNextScheduleTime
przy użyciuTestDriver
i rozwiązaliśmy 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-alfa01 zawiera te zatwierdzenia.
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 harmonogramy pracowników okresowych przez
setNextScheduleTimeOverride
. Umożliwia to dynamiczne obliczanie następnego okresowego harmonogramu pracy, za pomocą którego można wdrożyć funkcje zaawansowane, takie jak adaptacyjne okresy odświeżania, niestandardowe ponawianie prób lub uruchamianie procesu roboczego kanału wiadomości, zanim użytkownik obudzi się codziennie rano, bez konieczności dryfu. Z tych technik należy używaćExistingPeriodicWorkPolicy.UPDATE
, aby uniknąć anulowania obecnie uruchomionej instancji roboczej podczas planowania kolejnej. WorkManager
przeprowadza testy w środowisku produkcyjnym do dopasowywania wątków. Za pomocą zasadyExecutorsMode.PRESERVE_EXECUTORS
można zachować wykonawców określonych w elemencieConfiguration
i używać prawdziwego wątku głównego.- Interfejsy API 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 okresowości są dodawane do kolumny
WorkInfo
. (I52f2f) - Dodano obserwację instancji roboczych za pomocą przepływów z użyciem metod
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Dodano brakujące adnotacje (
@RequiresApi(...)
) do sekcji Ograniczenia konstruktory i właściwości. 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 instancji roboczych identyfikatora treści, aby zapewnić im gwarantowane przedziały w regionieJobScheduler
. Pozwala to uniknąć brakujących aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować wConfiguration.Builder.setContentUriTriggerWorkersLimit
. (IC128f).- Do elementu
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 zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd ANR w regionie
RescheduleReceiver
, który wcześniej nie obsługiwał prawidłowo 2 transmisji jednocześnie. (b/236906724)
Wersja 2.8.0
8 lutego 2023 r.
Usługa androidx.work:work-*:2.8.0
została zwolniona. Wersja 2.8.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.7.0
Nowe funkcje
- Dodaliśmy możliwość aktualizowania aplikacji
WorkRequests
w sposób nienachalny. Pozwala ona zachować pierwotny czas umieszczenia w kolejce, łańcuchy itd. Więcej informacji znajdziesz w szczegółowym poście na blogu dotyczącym tej funkcji oraz w dokumentacji Java dlaWorkManager.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany interfejsu 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
Ta zasada umożliwia aktualizowanie utworu okresowego pod nazwą. Jest podobny do istniejącegoREPLACE
, ale jest mniej uciążliwy: nie anuluje instancji roboczej, jeśli jest obecnie uruchomiona, i zachowuje czas kolejki. Początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu umieszczenia w kolejce, a nie czasu aktualizacji. InterfejsREPLACE
został wycofany, aby nie pomylić nazwyREPLACE
iUPDATE
. 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) - Dodano możliwość przechwytywania wyjątków od harmonogramu przez wywołanie funkcji
Consumer<Throwable>
przez setSchedulingExceptionHandler. - Dodaliśmy możliwość podawania zasady
Consumer<Throwable>
za pomocą metody setInitializationExceptionHandler w celu określenia, czy podczas próby zainicjowania WorkManagera wystąpiły problemy. - Wbudowane pomocnicze funkcje
OneTimeWorkRequest
i Przeniesiono użytkownikaPeriodicWorkRequest
z:androidx.work:work-runtime-ktx
do:androidx.work:work-runtime
(I0010f, b/209145335) - Dodano metody pomocnicze
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
iWorkQuery.fromTags
, aby bezpośrednio utworzyć metodęWorkQuery
. (b/199919736) (If48f2, b/199919736) - Dodano
getForegroundInfo
do listyWorker
. (Ic1ead). RxWorker
zarówno w przypadku RxJava 2, jak i RxJava 3 zwraca terazsetForeground
zwracającą wartośćCompletable
, której można użyć zamiastsetForegroundInfoAsync
, która zwracaListenableFuture
.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 korzystać z metody
Constraints.Builder
, co jest wygodne dla użytkowników Kotlin. (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)
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)
- Dodano
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnieńPOST_NOTIFICATIONS
w pakiecie SDK 33 i nowszych. (IE542e, b/238790278) - Przenoszenie anulowań w
CoroutineScope
doListenableFuture
podczas korzystania zsuspendCancellableCoroutine
.
Wersja 2.8.0-rc01
7 grudnia 2022 r.
Usługa androidx.work:work-*:2.8.0-rc01
została zwolniona. Wersja 2.8.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Brak nowych funkcji w tej wersji. To głównie różnica w wersji
Wersja 2.8.0-beta02
9 listopada 2022 r.
Usługa androidx.work:work-*:2.8.0-beta02
została zwolniona. 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. (4977cc)
Wersja 2.8.0-beta01
5 października 2022 r.
Usługa androidx.work:work-*:2.8.0-beta01
została zwolniona. Wersja 2.8.0-beta01 zawiera te zatwierdzenia.
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)
Wersja 2.8.0-alpha04
7 września 2022 roku
Usługa androidx.work:work-*:2.8.0-alpha04
została zwolniona. Wersja 2.8.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano
WorkerInfo.getGeneration()
iWorkerParameters.getGeneration()
, które zwracają pokolenie instancji roboczej. Instancja robocza ma wiele generacji, jeśli została zaktualizowana za pomocąWorkManager.updateWork
lubWorkManager.enqueueUniquePeriodicWork
za pomocąExistingPeriodicWorkPolicy.UPDATE
. Pamiętaj, że jeśli instancja robocza jest obecnie uruchomiona, ta metoda może zwrócić nowszą generację z aktualnie uruchomionej instancji roboczej, jeśli podczas jej wykonywania nastąpiła aktualizacja. (I665c5, b/219446409) (I128a9, b/219446409) - Dodano moduł obsługi wyjątków
InitializationExceptionHandler
, którego można używać do sprawdzania, czy podczas próby zainicjowaniaWorkManager
wystąpiły problemy. (I061de).
Wersja 2.8.0-alfa03
10 sierpnia 2022 r.
Usługa androidx.work:work-*:2.8.0-alpha03
została zwolniona. Wersja 2.8.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy możliwość aktualizowania aplikacji
WorkRequests
w nienachalny sposób z zachowaniem pierwotnego czasu umieszczenia w kolejce, łańcuchem konfiguracji itp. Więcej informacji znajdziesz na stronachWorkManager.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany interfejsu 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
Ta zasada umożliwia aktualizowanie utworu okresowego pod nazwą. Jest podobny do istniejącegoREPLACE
, ale jest mniej uciążliwy: nie anuluje instancji roboczej, jeśli jest obecnie uruchomiona, i zachowuje czas kolejki. Początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu umieszczenia w kolejce, a nie czasu aktualizacji. InterfejsREPLACE
został wycofany, aby nie pomylić nazwyREPLACE
iUPDATE
. 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) - Aby dodać możliwość przechwytywania wyjątków od harmonogramu, zdefiniuj
SchedulingExceptionHandler
. (I033eb) - Wbudowane pomocnicze funkcje
OneTimeWorkRequest
i Przeniesiono użytkownikaPeriodicWorkRequest
z:androidx.work:work-runtime-ktx
do:androidx.work:work-runtime
(I0010f, b/209145335)
Poprawki błędów
- Dodano
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnień POST_notificationS w pakiecie SDK 33 i nowszych. (IE542e, b/238790278)
Wersja 2.8.0-alpha02
6 kwietnia 2022 roku
Usługa androidx.work:work-*:2.8.0-alpha02
została zwolniona. Wersja 2.8.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Ograniczenia można teraz tworzyć bezpośrednio, zamiast korzystać z narzędzia Builder, co jest wygodne dla użytkowników Kotlin. (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.
Usługa androidx.work:work-*:2.8.0-alpha01
została zwolniona. Wersja 2.8.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Metody pomocnicze
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
, Dodano interfejsyWorkQuery.fromTags
, aby bezpośrednio tworzyć zapytania WorkQuery. (If48f2, b/199919736) - Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937)
- Dodaj
getForegroundInfo
doWorker
. (Ic1ead). - Metody pomocnicze
WorkQuery.fromIds
umożliwiające tworzenie zapytań WorkQuery bezpośrednio na podstawie identyfikatorów dodano. (Ie5bdf, b/199919736) - RxWorker ma teraz wartość
setForeground
zwracającąCompletable
może zostać użyta zamiastsetForegroundInfoAsync
, która zwracaListenableFuture
(I85156) - RxWorker dla RxJava 2 ma teraz
getForegroundInfo
zwracającySingle
, który może zostać użyta zamiastgetForegroundInfoAsync
, która zwracaListenableFuture
(I21c91, b/203851459) - RxWorker dla RxJava 3 zwraca teraz
getForegroundInfo
wartośćSingle
, może zostać użyta zamiastgetForegroundInfoAsync
, która zwracaListenableFuture
(I1ca8a). - RxWorker ma teraz wartość
setForeground
zwracającąCompletable
może zostać użyta zamiastsetForegroundInfoAsync
, która zwracaListenableFuture
(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.
Usługa androidx.work:work-*:2.7.1
została zwolniona. Wersja 2.7.1 zawiera te zatwierdzenia.
Poprawki błędów
- Jeśli korzystasz z
suspendCancellableCoroutine
, anulowania wCoroutineScope
są przekazywane doListenableFuture
. (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.
Usługa androidx.work:work-*:2.7.0
została zwolniona. Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone 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 interfejsu
setExpedited(...)
, WorkManager przekazuje do przyspieszonego wykonywania zadań w Jobawce od Androida 12, jednocześnie zapewniając zgodność wsteczną z wcześniejszymi wersjami Androida przez przekazywanie dostępu do usługi działającej na pierwszym planie.
Wersja 2.7.0-rc01
29 września 2021 r.
Usługa androidx.work:work-*:2.7.0-rc01
została zwolniona. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest taka sama jak androidx.work:work-*:2.7.0-beta01
.
Wersja 2.7.0-beta01
1 września 2021 roku
Usługa androidx.work:work-*:2.7.0-beta01
została zwolniona. Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Ogranicz rywalizację o wiele procesów SQLite podczas inicjowania WorkManagera.
Zmiany interfejsu API
- Usuń interfejsy API (
@ExperimentalExpeditedWork
), ponieważ bazowe interfejsy API platformy na Androida 12 (S) są stabilne. (Aosp/1792806).
Poprawki błędów
- Wyświetlaj lepszy komunikat o błędzie dla przyspieszonego wdrożenia, które nie stosują
getForegroundInfoAsync()
. (Aosp/1809376).
Wersja 2.7.0-alpha05
21 lipca 2021 r.
Usługa androidx.work:work-*:2.7.0-alpha05
została zwolniona. Wersja 2.7.0-alfa05 zawiera te zatwierdzenia.
Ta wersja zawiera też poprawki błędów z wersji WorkManager 2.6.0-beta02
.
Wersja 2.7.0-alpha04
2 czerwca 2021 r.
Usługa androidx.work:work-*:2.7.0-alpha04
została zwolniona.
Ta wersja zawiera też zmiany z wersji 2.6.0-beta01.
Zmiany interfejsu API
- Interfejs
ListenableWorker.setForegroundAsync()
nie jest już wycofany. - W miarę możliwości zalecamy korzystanie z interfejsu API
WorkRequest.Builder.setExpedited(...)
. Aby lepiej rozwiązać problemy, w których aplikacja nie podlega ograniczeniom usług na pierwszym planie, deweloperzy mogą używać interfejsu APIListenableWorker.setForegroundAsync()
. - Jeśli wywołana jest zasada
ListenableWorker.setForegroundAsync()
, gdy aplikacja podlega ograniczeniom usługi na pierwszym planie, spowoduje to zgłoszenie ForegroundServiceStartNotAllowedException.
Poprawki błędów
- Przełożone zadania przyspieszone nie są już przyspieszone. Stają się one standardowymi ofertami pracy.
Wersja 2.7.0-alpha03
21 kwietnia 2021 r.
Usługa androidx.work:work-*:2.7.0-alpha03
została zwolniona. Wersja 2.7.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
Od WorkManagera
2.6.0-alpha02
: dodaje obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200).Z poziomu WorkManagera
2.6.0-alpha02
: dodanoRemoteCoroutineWorker
, który jest implementacjąRemoteListenableWorker
, która może powiązać proces zdalny. (I30578)
Zmiany interfejsu API
- W usłudze WorkManager
2.6.0-alpha02
:dodano obsługę ograniczenia sieciTEMPORARILY_UNMETERED
. (I08d5e) - W usłudze WorkManager
2.6.0-alpha02
:obsługa wielu procesów roboczych w środowiskusetProgressAsync()
. (IB6d08) - W usłudze WorkManager
2.6.0-alpha02
:ustawWorkManagerInitializer
jako publiczne, aby inne osobyandroidx.startup.Initializer
mogły używać ich 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-alfa02 zawiera te zatwierdzenia.
Poprawki błędów
- Aby rozwiązać problem z awarią podczas kierowania na Androida 12, określ zmienność funkcji
PendingIntent
jako jawną. (B/180884673)
Wersja 2.7.0-alpha01
18 lutego 2021 r.
Usługa androidx.work:work-*:2.7.0-alpha01
została zwolniona. Wersja 2.7.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
WorkManager wprowadza nowy interfejs API
WorkRequest.Builder.setExpedited(...)
, aby uwzględnić ograniczenia usług na pierwszym planie w Androidzie 12.Aplikacje nie mogą już uruchamiać usług na pierwszym planie, gdy działają w tle. Dlatego, aby lepiej obsługiwać długotrwałą pracę, która była wcześniej powiązana z cyklem życia usługi na pierwszym planie, aplikacje mogą oznaczać pola
WorkRequest
jako przyspieszone.Ten interfejs API zastępuje interfejsy API
setForegroundAsync(...)
/setForeground(...)
, które zostały wycofane.Gdy używasz interfejsu
setExpedited(...)
, WorkManager przekazuje do przyspieszonego wykonywania zadań wJobScheduler
od Androida 12, jednocześnie zapewniając zgodność wsteczną z wcześniejszymi wersjami Androida przez przekazywanie dostępu do usług działających na pierwszym planie.
Zmiany interfejsu API
- Dodaj obsługę przyspieszonego wdrożenia
WorkRequest
.
Wersja 2.6.0
Wersja 2.6.0
1 września 2021 roku
Usługa androidx.work:work-*:2.6.0
została zwolniona. Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.5.0
WorkManager do inicjowania WorkManagera używa teraz
androidx.startup
. Jeśli do inicjowania WorkManagera używasz w przeszłości interfejsutools:node="remove"
ContentProvider
, musisz zamiast tego wykonać te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />
Dodano obsługę instancji roboczych, które mogą być uruchamiane w dowolnym procesie. (Iaf200).
Dodano
RemoteCoroutineWorker
, który jest implementacją elementu RemoteListenableWorker, które można powiązać z procesem zdalnym. (I30578)
Wersja 2.6.0-rc01
4 sierpnia 2021 r.
Usługa androidx.work:work-*:2.6.0-rc01
została zwolniona. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest taka sama jak androidx.work:work-*:2.6.0-beta02
.
Wersja 2.6.0-beta02
21 lipca 2021 r.
Usługa androidx.work:work-*:2.6.0-beta02
została zwolniona. Wersja 2.6.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Powiązanie
RemoteWorkManager
jest teraz prawidłowo odłączone od zbioru danychRemoteWorkManagerService
, co umożliwia prawidłowe wyczyszczenie regułyRemoteWorkManagerService
. Aosp/1730694 - Powiązanie
RemoteListenableWorker
jest teraz prawidłowo odłączone od zbioru danychRemoteWorkerService
, co umożliwia prawidłowe wyczyszczenie regułyRemoteWorkerService
. aosp/1743817 - Aplikacja
ForceStopRunnable
działa teraz tylko w głównym procesie 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 kilka drobnych ulepszeń w dokumentacji. Wersja jest zasadniczo taka sama jak 2.6.0-alfa02.
Wersja 2.6.0-alpha02
21 kwietnia 2021 r.
Usługa androidx.work:work-*:2.6.0-alpha02
została zwolniona. Wersja 2.6.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
Dodaje obsługę instancji roboczych, które mogą być uruchamiane 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 wielu procesów roboczych dla instancji
setProgressAsync()
. (IB6d08) - Udostępnij plik
WorkManagerInitializer
publicznie, aby inneandroidx.startup.Initializer
mogły używać go jako zależności. (I5Ab11)
Wersja 2.6.0-alpha01
24 marca 2021 r.
Usługa androidx.work:work-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
WorkManager
używa terazandroidx.startup
do inicjowania WorkManagera. Wcześniej za tę czynność odpowiadał użytkownikandroidx.work.impl.WorkManagerInitializer
. (Aosp/1608813).Jeśli użyto funkcji
tools:node="remove"
, do inicjalizacji użyto elementuContentProvider
cykl życia przetwarzania w przeszłości, musisz zamiast tego wykonać te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.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 interfejsu API
- Dodaj interfejs API
Result.getOutputData()
, który zwracaoutputData
interfejsu 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.
Usługa androidx.work:work-*:2.5.0
została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.4.0
- Nowy artefakt
:work:work-multiprocess
dla aplikacji korzystających z wielu procesów. Zwiększa to wydajność dzięki ujednoliceniu planowania zadań roboczych w ramach jednego procesu.- Aby użyć funkcji
work-multiprocess
, zdefiniuj zależność:implementation "androidx.work:work-multiprocess:2.5.0"
- Wskaż proces główny przy użyciu metody Configuration.Builder.setDefaultProcessName(String).
- Jeśli używasz
work-multiprocess
, chcesz też używać RemoteWorkManagera do zarządzania zadaniamiWorkRequest
. RemoteWorkManager zawsze komunikuje się z wyznaczonym procesem. Algorytm szeregowania w procesie również działa w wyznaczonym procesie.
- Aby użyć funkcji
- Czasami
ActivityManager
nie może utworzyć instancjiJobService
w celu uruchomienia zadania. Powoduje to, że bazowe zadanie jest dyskryminowane z powodu błędu platformy.WorkManager
sprawdza teraz, czy w przypadku każdego elementuWorkRequest
istnieją zadania tworzenia kopii zapasowych, gdyApplication
jest inicjowany przez uzgadnianie zadań. To znacznie zwiększa niezawodność wykonywania zadań. (b/172475041, Aosp/1489577) WorkManager
ogranicza przyrost bazy danych, skracając czas buforowania, który zdarzeniaWorkRequest
są śledzone po zakończeniu wykonywaniaWorkRequest
. Wcześniej okres ten wynosił7
dni. Został zmniejszony do1
dnia + czas trwania keepResultsForAtLeast. (Aosp/1419708).- Aby ułatwić testowanie,
TestListenableWorkerBuilder
obsługuje teraz poprawioną klasę przedłużającąListenableWorker
. (Aosp/1443299, b/169787349) - Podczas korzystania z Androida Studio Arctic Fox możesz teraz korzystać z Inspektora WorkManager.
Wersja 2.5.0-rc01
13 stycznia 2021 r.
Usługa androidx.work:work-*:2.5.0-rc01
została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował nieprawidłowe unieważnienie elementów
getWorkInfosLiveData
w przypadku korzystania z interfejsu API opartego naWorkQuery
. (Aosp/1540566, b/173769028) - Naprawiono błąd polegający na tym, że w niektórych rzadkich przypadkach transakcje z bazy danych nie były oznaczane jako udane. Powoduje to problemy na niektórych urządzeniach Motorola. (Aosp/1535368, b/175944460)
- Naprawiono błąd ignorowania elementów
NoSuchElementException
podczas próby usunięcia powiązania z martwym procesem. (Aosp/1530589). - Popraw działanie
ConstraintTrackingWorker
, tak abyListenableWorker
został zatrzymany tylko wtedy, gdy nie został jeszcze zatrzymany. (Aosp/1496844, b/172946965) - Zaktualizuj biblioteki androidx.work, aby kierować aplikacje na Javę 8 (Ibd2f2)
Wersja 2.5.0-beta02
Grudzień 2, 2020
Usługa androidx.work:work-*:2.5.0-beta02
została zwolniona. Wersja 2.5.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd w
androidx.work:work-multiprocess
, który powodował, że usługa WorkManager nieumyślnie blokowała wątek wywołania podczas próby utworzenia powiązania z wyznaczonym procesem. (Aosp/1475538) - Naprawiliśmy błąd polegający na tym, że jednostki
PeriodicWorkRequest
nie były prawidłowo uzgadniane. (b/172475041, Aosp/1489577) - Dodaliśmy obejście błędu platformy występującego w przypadku zatrzymywania usługi na pierwszym planie podczas korzystania z 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 zatwierdzenia.
Nowe funkcje
- Funkcja
WorkManager
automatycznie ogranicza liczbę elementówWorkRequest
, które mogą odebrać algorytm szeregowania procesu. Żądania są nadal wykonywane w kolejności FIFO. (Aosp/1455228) WorkManager
próbuje przywrócić dane, gdy magazyn 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.
Usługa androidx.work:work-*:2.5.0-alpha03
została zwolniona. Wersja 2.5.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
TestListenableWorkerBuilder
iTestWorkerBuilder
nie używają typów nieprzetworzonych. (I883ad, b/169787349)
Poprawki błędów
- Użyj elementu
ApplicationInfo
, aby określić nazwę domyślnego procesu aplikacji. (b/168716641, Aosp/1429950) - Napraw reguły widoczności w regułach
RemoteWorkManager
iRemoteWorkContinuation
. Te interfejsy API nie są już oznaczone jako@Restricted
. (Aosp/1432091). - Napraw reguły ProGuard w przeglądarce
:work:work-multiprocess
. (Aosp/1432091). - Popraw cykle życia powiadomień w przypadku długo trwających zadań powią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-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj do WorkQuery interfejs API, aby móc używać elementów
id
do wysyłania zapytań dotyczących obiektówWorkInfo
. (Aosp/1412372, b/157335295) - WorkManager lepiej obsługuje aplikacje, które używają wielu procesów z nowym artefaktem (
androidx.work:work-multiprocess:*
). Ten nowy artefakt pomaga rozwiązać kilka problemów napotykanych przez duże aplikacje, takich jak:- 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órych można użyć do wyznaczenia głównego procesu aplikacji za pomocą funkcji
Configuration#setDefaultProcessName(processName)
.processName
jest pełną i jednoznaczną nazwą procesu, która wygląda jakpackageName:processName
(np.com.example:remote
). - Zestaw nowych interfejsów API:
RemoteWorkManager
iRemoteWorkContinuation
do żądań roboczychenqueue
,cancel
iquery
. Te interfejsy API nie obejmują wariantówLiveData
, aby uniknąć rywalizacji z SQLite między wieloma procesami. Wszystkie połączenia z numeramienqueue
,cancel
iquery
są przekazywane do procesu aplikacjiprimary
przy użyciu AIDL i zwracają biegleListenableFuture
. (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órych można użyć do wyznaczenia głównego procesu aplikacji za pomocą funkcji
Zmiany interfejsu API
- WorkManager bardziej agresywnie przycina teraz ukończone
WorkRequest
, które nie mają niekompletnych zależności. Zmieniono czas buforowania z7
dni na1
dzień. (Aosp/1419708).
Poprawki błędów
- Teraz WorkManager aktywnie uzgadnia zadania, więc zadania
WorkRequest
iJobScheduler
są zsynchronizowane po zainicjowaniuWorkManager
. (aosp/1412794, b/166292069)
Wersja 2.5.0-alpha01
19 sierpnia 2020 r.
Usługa androidx.work:work-*:2.5.0-alpha01
została zwolniona. Wersja 2.5.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Zmiany w wewnętrznych interfejsach API, które pozwolą nam od tej pory dostarczać lepsze narzędzia w
WorkManager
. Wkrótce podamy więcej informacji na ten temat.
Poprawki błędów
- Obsługuj parametry
SecurityException
podczas śledzenia stanu sieci na niektórych urządzeniach. (Aosp/1396969).
Treści tłumaczone przez użytkowników zewnętrznych
- Naprawiono dokumentację dotyczącą
ArrayCreatingInputMerger
według 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
- Stosowany w procesie algorytm szeregowania
WorkManager
ma teraz większe możliwości. 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 algorytm szeregowania procesu śledzi żądaniaWorkRequest
, które mogą być wykonywane w przyszłości, w tym PeriodicWorkRequests. W procesieScheduler
też nie obowiązują limity planowania (ale nadal ogranicza się do rozmiaru obiektuExecutor
używanego przez WorkManager). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej żądań WorkRequests, gdy działa na pierwszym planie. Aby zarządzać wykonywaniem opóźnionych zadań na pierwszym planie,WorkManager
wprowadza też nową konfigurowalną pracę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) - Dodano możliwość wysyłania zapytań dotyczących elementów
WorkInfo
za pomocą interfejsuWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania do komponentówWorkInfo
za pomocą kombinacji kilku atrybutów. Więcej informacji znajdziesz tutaj:WorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
lubWorkQuery.Builder.fromUniqueWorkNames(...)
. (Aosp/1253230, b/143847546) Dodaj możliwość wysyłania żądań informacji diagnostycznych do
WorkManager
za pomocą:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Znajdziesz w nim wiele przydatnych informacji, m.in.:
- Żądania robocze, które zostały ukończone w ciągu ostatnich 24 godzin.
- Żądania WorkRequests, które są obecnie URUCHOMIONE.
- Zaplanowane żądania pracy. (Aosp/1235501).
Dodaj komponent
ExistingWorkPolicy.APPEND_OR_REPLACE
podobny doAPPEND
, ale zastępuje sieć, która anulowała lub nie spełniła wymagań wstępnych. (b/134613984, Aosp/1199640)Umożliwia dodanie niestandardowego obiektu
RunnableScheduler
w celu śledzenia żądań WorkRequest, które będą wykonywane w przyszłości. Jest ona używana przez algorytm szeregowania w procesie. (Aosp/1203944).Dodano obsługę dynamicznego dodawania fabryk, do których mają być przekazywane zadania w przypadku użycia funkcji
DelegatingWorkerFactory
. (b/156289105, Aosp/1309745).Dokładniej dopasuj śledzenie ograniczeń
BATTERY_NOT_LOW
do platformy. (Aosp/1312583).Algorytm szeregowania w procesie używa teraz lepszych interfejsów API do określania nazwy procesu. Pozwala to lepiej obsługiwać aplikacje, które korzystają z wielu procesów. (Aosp/1324732).
Nowe reguły Lint, które egzekwują:
- Użycie właściwego atrybutu
foregroundServiceType
przy korzystaniu z interfejsów APIsetForegroundAsync()
. (b/147873061, Aosp/1215915) - Określenie identyfikatorów JobScheduler, których WorkManager ma używać przy bezpośrednim korzystaniu z interfejsów JobService API. Aosp/1223567
- 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).
- Użycie właściwego atrybutu
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).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, przez który
WorkManager
próbuje uruchomić wiele wystąpień elementuWorker
powiązanego z usługą działającą na pierwszym planie (b/156310133, Aosp/1309853)
Wersja 2.4.0-rc01
24 czerwca 2020 r.
Usługa androidx.work:work-*:2.4.0-rc01
została zwolniona. 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. Pozwala to lepiej obsługiwać aplikacje korzystające z wielu procesów. (Aosp/1324732).
Wersja 2.4.0-beta01
20 maja 2020 r.
Udostępniono androidx.work:work-gcm:2.4.0-beta01
, androidx.work:work-runtime:2.4.0-beta01
, androidx.work:work-runtime-ktx:2.4.0-beta01
, androidx.work:work-rxjava2:2.4.0-beta01
i androidx.work:work-testing:2.4.0-beta01
. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- 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 polegający na tym, że
WorkManager
próbuje wykonać wiele wystąpień elementuWorker
powiązanego z usługą działającą 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) - Dokładniej dopasuj śledzenie ograniczeń
BATTERY_NOT_LOW
do platformy. (Aosp/1312583).
Wersja 2.4.0-alpha03
29 kwietnia 2020 roku
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ć środowiska 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 interfejsu API
- Wywołanie
setProgressAsync()
po zakończeniu wykonywania poleceniaListenableWorker
spowoduje teraz sygnałException
przezListenableFuture
. (Aosp/1285494). WorkQuery.Builder
ma teraz oznaczeniefinal
. (Aosp/1275037).- Metody fabryki
WorkQuery.Builder
withStates
,withTags
iwithUniqueWorkNames
zostały zmienione odpowiednio nafromStates
,fromTags
ifromUniqueWorkNames
. (Aosp/1280287).
Poprawki błędów
- Ignoruj
SecurityException
podczas śledzenia stanu sieci urządzenia. (b/153246136, Aosp/1280813)
Wersja 2.4.0-alpha02
Kwiecień 1, 2020
Usługa androidx.work:work-*:2.4.0-alpha02
została zwolniona. Wersja 2.4.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nową regułę Lint, która ostrzega, gdy
WorkRequest
wymaga zarównoConstraints.setRequiresCharging(...)
, jak iConstraints.setRequiresDeviceIdle(...)
. Niektóre urządzenia nigdy nie ładują się i są nieaktywne w tym samym czasie. W związku z tym żądania takie byłyby wysyłane rzadziej, niż oczekiwano. (Aosp/1253840).
Zmiany interfejsu API
Dodano możliwość wysyłania zapytań dotyczących elementów
WorkInfo
za pomocą interfejsuWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania do komponentówWorkInfo
za pomocą kombinacji kilku atrybutów. Więcej informacji znajdziesz tutaj:WorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
lubWorkQuery.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łę lintowania, która sprawdza nieprawidłowe czasy trwania interwałów dla
PeriodicWorkRequest
s. (aosp/1254846, b/152606442)
Wersja 2.4.0-alpha01
Marzec 4, 2020
Usługa androidx.work:work-*:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alfa01 zawiera te zatwierdzenia.
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 algorytm szeregowania procesu śledzi zdarzeniaWorkRequest
, które mogą być wykonywane w przyszłości, w tym elementyPeriodicWorkRequest
. Algorytm szeregowania w procesie nie też przekracza limitów planowania (ale nadal ogranicza się do rozmiaru obiektuExecutor
używanego przez WorkManagera). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej poleceńWorkRequest
, gdy działa na pierwszym planie. (Aosp/1185778)Dodano możliwość żądania informacji diagnostycznych od WorkManager za pomocą interfejsu
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. Znajdziesz w nim wiele przydatnych informacji, m.in.:- Żądania robocze, które zostały ukończone w ciągu ostatnich 24 godzin.
- Żądania WorkRequests, które są obecnie URUCHOMIONE.
- Zaplanowane żądania pracy. (Aosp/1235501).
Nowe reguły Lint, które egzekwują:
- Użycie właściwego atrybutu
foregroundServiceType
przy korzystaniu z interfejsów APIsetForegroundAsync()
. (b/147873061, Aosp/1215915) - Określam identyfikatory
JobScheduler
, którychWorkManager
ma używać bezpośrednio przy korzystaniu z interfejsów APIJobService
. (Aosp/1223567).
- Użycie właściwego atrybutu
Zmiany interfejsu API
Dodaj sieć
ExistingWorkPolicy.APPEND_OR_REPLACE
podobną doAPPEND
, która jednak zastępuje sieć, która nie spełniła warunków wstępnych lub została anulowana. (b/134613984, Aosp/1199640).Możliwość dodania niestandardowego obiektu
RunnableScheduler
w celu śledzenia elementówWorkRequest
, które będą musiały być wykonywane w przyszłości. Jest ona używana przez algorytm szeregowania w procesie. (Aosp/1203944).
Poprawki błędów
- Wycofano atrybut
setProgress()
w obiekcieRxWorker
, ponieważ wcześniej zwracał on wartośćSingle<Void>
, której typ jest niemożliwy. Dodano nowy interfejs APIsetCompletableProgress()
, który zwraca wartośćCompletable
. i dodaliśmy nowe reguły Lint, które pomogą w migracji do nowych interfejsów API. (b/150080946, Aosp/1242665).
Wersja 2.3.4
Wersja 2.3.4
18 marca 2020 r.
Usługa androidx.work:work-*:2.3.4
została zwolniona. Wersja 2.3.4 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd, który powodował uruchamianie wielu wystąpień długotrwałych elementów
Worker
po przekroczeniu 10-minutowego okna wykonywania. (Aosp/1247484, b/150553353) - Poprawiono lint usługi WorkManager
IssueRegistry
. Dziękujemy @ZacSweers z platformy Slack za Twoją pomoc. (Aosp/1217923).
Wersja 2.3.3
Wersja 2.3.3
Marzec 4, 2020
Usługa androidx.work:work-*:2.3.3
została zwolniona. Wersja 2.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że przerwanie wydarzenia
Worker
powodowało, że nie można było go prawidłowo przełożyć. (b/150325687, Aosp/1246571)
Wersja 2.3.2
Wersja 2.3.2
19 lutego 2020 r.
Zwolniono androidx.work:work-*:2.3.2
. 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)
- Poprawiono warunek wyścigu w kontrolerach ConstraintControllers. (Aosp/1220100).
- Skorygowano cykl życia usługi działającej na pierwszym planie dla długo działających procesów roboczych. (Aosp/1226295).
- Ulepszono zarządzanie anulowaniem powiadomień dla długotrwałych pracowników po anulowaniu przez instancję roboczą. (Aosp/1228346).
Wersja 2.3.1
Wersja 2.3.1
5 lutego 2020 r.
Usługa androidx.work:work-*:2.3.1
została zwolniona. 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 jest pierwszy planService
. (Aosp/1218539, b/147249312) WorkManager
korzysta teraz ze 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
Styczeń 22, 2020
Usługa androidx.work:work-*:2.3.0
została udostępniona bez zmian od 2.3.0-rc01
. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.2.0
- Pomoc w przypadku długotrwałych i ważnych prac dzięki
ListenableWorker#setForegroundAsync()
. - Pomoc dotycząca postępów pracowników w usłudze
ListenableWorker#setProgressAsync()
. - WorkManager dodaje teraz do biblioteki dodatkowe reguły lintowania, co ułatwia wczesne wykrywanie błędów.
Wersja 2.3.0-rc01
Styczeń 8, 2020
Usługa androidx.work:work-*:2.3.0-rc01
została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest taka sama jak 2.3.0-beta02
Poprawki błędów.
- Artefakt
work-testing
definiuje teraz zależnośćapi
odwork-runtime-ktx
. (Aosp/1194410).
Wersja 2.3.0-beta02
18 grudnia 2019 r.
Usługa androidx.work:work-*:2.3.0-beta02
została zwolniona. Wersja 2.3.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy lepszy komunikat o błędzie w przypadku niemożliwych do odzyskania wyjątków SQLite. (Aosp/1185777)
- Dodano regułę lintowania, która powoduje, że dostawca treści
androidx.work.impl.WorkManagerInitializer
jest usuwany zAndroidManifest.xml
podczas inicjowania na żądanie. (Aosp/1167007). - Dodano ostrzeżenie o lintowaniu, gdy zasada
enqueue()
jest używana dlaPeriodicWorkRequest
zamiastenqueueUniquePeriodicWork()
. (Aosp/1166032).
Zmiany interfejsu API
ForegroundInfo
wymaga teraz określenianotificationId
, które ma być używane podczas korzystania zListenableWorker.setForegroundAsync()
. To niezwykła zmiana. Dzięki temu możesz równolegle uruchamiać wiele długotrwałych elementówWorker
.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)
- Naprawiliśmy błąd, który powodował, że pusta lista elementów
WorkRequest
powodowała powstawanie nieprawidłowego łańcuchaWorkContinuation
. (b/142835274, Aosp/1157051)
Zmiany zależności
- WorkManager używa teraz pokoju 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 zatwierdzenia.
Nowe funkcje
- Dodano nową regułę lintowania, która zapobiega błędom programistycznym wynikającym z nieprawidłowej implementacji funkcji
androidx.work.Configuration.Provider
podczas korzystania z inicjowania na żądanie. aosp/1164559
Wersja 2.3.0-alfa03
23 października 2019 r.
Usługa androidx.work:work-*:2.3.0-alpha03
została zwolniona. Wersja 2.3.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano interfejs API
WorkManager.createCancelPendingIntent()
, który ułatwia anulowanie elementówWorkRequest
bez konieczności rejestrowania innego komponentu w interfejsieAndroidManifest.xml
. Ten interfejs API szczególnie ułatwia anulowanie subskrypcjiWorkRequest
wNotification
. Zamierzamy połączyć to rozwiązanie z nowymi interfejsami API działającymi na pierwszym planie w wersji 2.3.0. - WorkManager korzysta teraz ze stabilnej wersji
androidx.room:*:2.2.0
.
Zmiany interfejsu API
- Zmieniliśmy nazwę
ForegroundInfo.getNotificationType()
naForegroundInfo.getForegroundServiceType()
, aby była bardziej spójna z interfejsami API platformy. (b/142729893, Aosp/1143316)
Poprawki błędów.
- Naprawiliśmy błąd spowodowany przez niepotrzebne wywołanie
setTransactionSuccessful()
poza transakcją. Dotyczy to 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-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- WorkManager obsługuje teraz trwające lub ważne zadania, które powinny pozostać aktywne przez system operacyjny. Więcej informacji znajdziesz na stronie
ListenableWorker#setForegroundAsync()
(lubCoroutineWorker#setForeground()
w przypadku Kotlin). (Aosp/1133636).
Zmiany interfejsu API
- Nazwa interfejsu API
containsKey
w językuData
została zmieniona nahasKeyWithValueOfType
. Zmieniliśmy też nazwę odpowiedniej metody rozszerzenia w bibliotecektx
. (b/141916545)
Poprawki błędów.
- Harmonogramy Work Manager działają sprawiedliwie, gdy liczba
WorkRequest
w kolejce zbliża się do limitów harmonogramu. (Aosp/1105766) - WorkManager wywołuje metodę
ListenableWorker#onStopped()
tylko wtedy, gdy dana praca nie została jeszcze ukończona. (B/140055777) - WorkManager usuwa teraz informacje o postępach, gdy instancja robocza zostanie przerwana lub osiągnie stan końcowy. (Aosp/1114572)
- Firma
Data
jest teraz znacznie bardziej użytecznatoString()
przedstawiana. (b/140945323) - Metoda
Data
ma teraz lepszą metodęequals()
. Obsługuje również typdeepEquals
w przypadkuArray
. (b/140922528) - WorkManager przechowuje teraz wewnętrzną bazę danych i pliki ustawień w katalogu bez kopii zapasowej. (b/114808216)
Wersja 2.3.0-alfa01
22 sierpnia 2019 r.
Usługa androidx.work:work-*:2.3.September 5, 20190-alpha01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
ListenableWorker
może teraz ustawiać postęp za pomocą interfejsu APIsetProgressAsync()
. Dodano też odpowiedni interfejs APIsuspend
-ingsetProgress
w tabeliCoroutineWorker
oraz interfejssetProgress
wRxWorker
, który zwracaSingle<Void>
. Dzięki tym nowym interfejsom API pracownicy mogą przekazywać informacje o postępach za pomocą interfejsuWorkInfo
, który ma odpowiedni interfejs APIgetProgress
. (b/79481554)Data
ma interfejs APIcontainsKey()
, którego można użyć do sprawdzenia, czy dane wejściowe instancjiWorker
zawierają klucze o oczekiwanym typie. (b/117136838)- Pole
Data
może być teraz serializowane za pomocą atrybutówData.toByteArray()
iData.fromByteArray()
. Pamiętaj, że interfejsData
nie gwarantuje obsługi wersji, dlatego nie należy go zachowywać ani używać w przypadku protokołu IPC między aplikacjami. Można ich bezpiecznie używać tylko między różnymi procesami tej samej aplikacji. - Dodano możliwość określania
InputMergerFactory
za pomocąConfiguration.setInputMergerFactory
. (b/133273159)
Zmiany interfejsu API
- WorkManager zgłosi instancję
IllegalStateException
, jeśliWorkerFactory
zwróci instancjęListenableWorker
, która została wcześniej wywołana. (b/139554406) - Aktualizujemy dokumentację dotyczącą anulowania
ListenableFuture
i wywołania zwrotnegoonStopped()
wListenableWorker
. (b/138413671)
Poprawki błędów.
- W trakcie procesu algorytm szeregowania ignoruje teraz wywołania typu
WorkRequest
z ograniczeniemidle
. Te żądania są teraz przetwarzane przez usługęJobScheduler
, gdy urządzenie jest w rzeczywistościidle
. (Aosp/1089779). TestScheduler
teraz prawidłowo używa podanegoExecutor
jako wewnętrznego wykonawcy zadań w testach. (Aosp/1090749)
Wersja 2.2.0
Wersja 2.2.0
15 sierpnia 2019 r.
Usługa androidx.work:work-*:2.2.0
została zwolniona. Zatwierdzenia 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 od 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 uzyskiwać pomoc dotyczącą GCMNetworkManager. Jeśli Usługi Google Play nie będą dostępne, na starszych urządzeniach w WorkManageru będzie można wrócić do AlarmManagera.
Wersja 2.2.0-rc01
30 lipca 2019 r.
Usługa androidx.work:work-*:2.2.0-rc01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- Naprawiliśmy błąd w implementacji AlarmManager, który powodował przedwczesne wyłączanie usługi i kończenie się błędem
RejectedExecutionException
. (aosp/1092374) (b/138238197). - Dodano obejście problemu
NullPointerException
w przypadku 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.
Usługa androidx.work:work-*:2.2.0-beta02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- Usunięto niezamierzoną zależność jacoco w
2.2.0-beta01
.
Wersja 2.2.0-beta01
17 lipca 2019 r.
Usługa androidx.work:work-*:2.2.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
androidx.work:work-gcm:2.2.0-beta01
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 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 uzyskiwać pomoc dotyczącą GCMNetworkManager. Jeśli Usługi Google Play nie będą dostępne, na starszych urządzeniach w WorkManageru będzie można wrócić do AlarmManagera.
Poprawki błędów.
- Naprawiono błąd
IllegalArgumentException
dotyczący ś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 taka sama jak androidx.work:work-*:2.1.0-rc01
.
Ważne zmiany wprowadzone od wersji 2.0.1
work-runtime-ktx
wymaga teraz środowiska Java 8. Jeśli napotkasz jakieś problemy, dobuild.gradle
dodaj te elementy:kotlinOptions { jvmTarget = "1.8" }
- Dodano inicjowanie na żądanie dla WorkManager, co spowoduje utworzenie WorkManagera
tylko po odwołaniu. b/127497100 Aby skonfigurować projekt na potrzeby inicjowania na żądanie:
- Wyłącz automatyczne inicjator.
- Zaimplementuj
Configuration.Provider
w niestandardowym obiekcieApplication
. - Zmień wszystkie odniesienia pliku
WorkManager.getInstance()
naWorkManager.getInstance(Context)
W ramach tej zmiany wycofano dyrektywęWorkManager.getInstance()
. Zawsze bezpieczniej jest zadzwonić do nowejWorkManager.getInstance(Context)
– wymiana, nawet jeśli nie robisz inicjowania na żądanie.
PeriodicWorkRequest
obsługują teraz początkowe opóźnienia. Za pomocą MetodasetInitialDelay
wPeriodicWorkRequest.Builder
, aby ustawić wartość początkową opóźnienia. b/111404867- Dodano możliwość przekazywania uprawnień do co najmniej 1 zarejestrowanego użytkownika
WorkerFactory
za pomocąDelegatingWorkerFactory
b/131435993 - Dodano możliwość dostosowywania funkcji
Executor
używanych przez WorkManager do całej wewnętrznej dokumentacji księgowej w ramach usługiConfiguration.Builder.setTaskExecutor
. - Dodano możliwość tworzenia elementów
Worker
iListenableWorker
dostępnych do testowania jednostkowego za pomocą funkcjiTestWorkerBuilder
iTestListenableWorkerBuilder
w funkcjiwork-testing
artefakt.- Zwróć uwagę, że
work-testing
pobiera teraz Kotlin jako zależność i domyślnie zawiera 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 zmień maksymalny rozmiarData
obiektów. - WorkManager korzysta teraz z usługi
Room 2.1.0
, co powinno rozwiązać niektóre problemy z bazą danych.
Wersja 2.1.0-rc01
27 czerwca 2019 r.
Usługa androidx.work:work-*:2.1.0-rc01
została zwolniona. Zatwierdzenia 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.
Usługa androidx.work:work-*:2.1.0-beta02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
TestListenableWorkerBuilder
używa teraz prawidłowej wartościWorkerFactory
podczas tworzenia instancjiListenableWorker
. b/135275844- Naprawiliśmy błąd, który powodował dryfy w okresach wykonania
WorkRequest
s z powodu śmierci procesu. b/135272196
Wersja 2.1.0-beta01
13 czerwca 2019 r.
Usługa androidx.work:work-*:2.1.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- WorkManager korzysta teraz z usługi
Room 2.1.0
, co powinno rozwiązać niektóre problemy z bazą danych. - Usunięto część wejścia-wyjścia dysku startowego w wątku głównym.
- Naprawiono potencjalne zakleszczenie w śledzeniu ograniczeń. b/134361006
- Zapobiegawcze anulowane nieprawidłowe zadania przypisane do WorkManagera. b/134058261
- Do interfejsów API JobScheduler dodaliśmy wywołania defensywne związane z niewłaściwie działającymi urządzeniami.
Wersja 2.1.0-alfa03
5 czerwca 2019 r.
Usługa androidx.work:*:2.1.0-alpha03
została zwolniona.
Poprawki błędów.
- Ulepszona dokumentacja funkcji
PeriodicWorkRequest
. WorkManagerTestInitHelper
używa teraz na potrzeby testów odpowiedniego wykonawcy w tle.- Usunięto problemy z SQLite, które występowały 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
. - Usprawnienia w algorytmie szeregowania opartego na AlarmManagera dotyczące okresów ważności usług, które wcześniej powodowały rzadkie awarie. (b/133313734)
Wersja 2.1.0-alfa02
16 maja 2019 r.
Udostępniono WorkManager 2.1.0-alpha02. Ta wersja zawiera kilka nowych interfejsów API.
Zmiany interfejsu API
PeriodicWorkRequest
obsługują teraz początkowe opóźnienia. Za pomocą MetodasetInitialDelay
wPeriodicWorkRequest.Builder
, aby ustawić wartość początkową opóźnienia. b/111404867Dodano możliwość przekazywania uprawnień do co najmniej 1 zarejestrowanego użytkownika
WorkerFactory
za pomocąDelegatingWorkerFactory
b/131435993Dodano możliwość dostosowywania funkcji
Executor
używanych przez WorkManager do całej wewnętrznej księgi rachunkowej w ramach usługiConfiguration.Builder.setTaskExecutor
.Ulepszona dokumentacja dotycząca
WorkRequest.keepResultsForAtLeast
(b/130638001), inicjowanie na żądanie orazPeriodicWorkRequest.Builder
(b/131711394).
Wersja 2.1.0-alpha01
24 kwietnia 2019 r.
Udostępniono WorkManager 2.1.0-alpha01. Ta wersja zawiera kilka nowych interfejsów API. Pamiętaj, że od tej wersji pojawią się nowe funkcje, nie zostanie przeniesiona do wersji 1.x. Zalecamy przejście na wersję 2.x.
Zmiany interfejsu API
- Dodano inicjowanie na żądanie dla WorkManager, co spowoduje utworzenie WorkManagera
tylko po odwołaniu. b/127497100 Aby skonfigurować projekt na potrzeby inicjowania na żądanie:
- Wyłącz automatyczne inicjator.
- Zaimplementuj
Configuration.Provider
w niestandardowym obiekcieApplication
. - Zmień wszystkie odniesienia pliku
WorkManager.getInstance()
naWorkManager.getInstance(Context)
W ramach tej zmiany wycofano dyrektywęWorkManager.getInstance()
. Zawsze bezpieczniej jest zadzwonić do nowejWorkManager.getInstance(Context)
– wymiana, nawet jeśli nie robisz inicjowania na żądanie.
- Dodano możliwość tworzenia elementów
Worker
iListenableWorker
dostępnych do testowania jednostkowego za pomocą funkcjiTestWorkerBuilder
iTestListenableWorkerBuilder
w funkcjiwork-testing
artefakt.- Zwróć uwagę, że
work-testing
pobiera teraz Kotlin jako zależność, ale również domyślnie zawiera 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 zmień maksymalny rozmiarData
obiektów. - Wycofano:
CoroutineWorker.coroutineContext
. To pole było nieprawidłowe wpisany jakoCoroutineDispatcher
; Nie jest już potrzebny, ponieważ możesz przejść do pożądany kontekst coroutineContext w treści funkcji zawieszającej. RxWorker.createWork()
iRxWorker.getBackgroundScheduler()
są teraz z adnotacjami z 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.
Udostępniono WorkManager 2.0.1-rc01. Ta wersja zawiera poprawki błędów. Dla: starszej wersji 1.x, niektóre z tych zmian 1.0.1-rc01.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo w usłudze WorkManager. b/122553577
- Usunięto problem awaryjny, który powodował, że śledzenie ograniczeń nie było czyszczone API typu pre-JobScheduler. b/129226383
- Naprawiono błąd
StackOverflowError
dotyczący długich łańcuchów pracy. b/129091233 - Zaktualizowaliśmy dokumentację dotyczącą
PeriodicWorkRequest
s, by wskazać, że czas elastyczny nieobsługiwany przez interfejs API 23. - Naprawiono niektóre uszkodzone linki w dokumentacji Kotlin.
Wersja 2.0.0
Wersja 2.0.0
20 marca 2019 r.
Udostępniono WorkManager 2.0.0. Ta wersja jest taka sama jak 2.0.0-rc01 i jest stabilna wersja AndroidaX 1.0.0 z zależnościami AndroidaX. Zalecamy kierowanych na tę wersję zamiast na starsze wersje 1.x. Wszystkie aktywne w wersji 2.x i 1.x będą poprawiać krytyczne błędy ograniczone czasowo.
Wersja 2.0.0-rc01
Marzec 7, 2019
Udostępniono WorkManager 2.0.0-rc01. Ta wersja jest identyczna ze stabilną wersją 1.0.0 ale ma zależności AndroidaX. Po osiągnięciu stabilnej wersji 2.0.0 do tej wersji, a starsze wersje 1.x otrzymają tylko poprawki błędów. Cały proces programowania jest kierowany na wersję 2.x.
Zależności sprzed AndroidaX
Dokumenty referencyjne: Java
Odlotowe
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.
Udostępniono WorkManager 1.0.1. Ta wersja jest identyczna z 1.0.1-rc01.
Zdecydowanie zachęcamy użytkowników do przejścia na wersję WorkManager 2.x, że gałąź 1.x będzie wkrótce zawierać niewiele aktualizacji. Nowe interfejsy API nie są też udostępniane w bibliotece 1.x.
Wersja 1.0.1-rc01
2 kwietnia 2019 r.
Udostępniono WorkManager 1.0.1-rc01. Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo w usłudze WorkManager. b/122553577
- Usunięto problem awaryjny, który powodował, że śledzenie ograniczeń nie było czyszczone API typu pre-JobScheduler. b/129226383
- Naprawiono błąd
StackOverflowError
dotyczący długich łańcuchów pracy. b/129091233
Wersja 1.0.0
Wersja 1.0.0
5 marca 2019 r.
To jest stabilna wersja WorkManager 1.0.0. Ta wersja WorkManagera jest identyczne jak 1.0.0-rc02.
Wersja 1.0.0-rc02
21 lutego 2019 r.
To jest 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
Aplikacje
Worker
są teraz prawidłowo zaplanowane po awarii aplikacji. b/124546316Elementy typu
Worker
, które rzucają niezaznaczone poleException
, są teraz prawidłowo oznaczane jakoFAILED
i nie zawieszaj procesu aplikacji.
Wersja 1.0.0-rc01
14 lutego 2019 r.
Jest to kandydująca wersja stabilnej wersji WorkManager 1.0.0. Ta wersja zawiera 1 poprawkę błędu.
Poprawki błędów
- Implementacja oparta na usłudze AlarmManager prawidłowo obsługuje teraz okna
flex
dla PeriodicWorkRequests. b/124274584
Wersja 1.0.0-beta05
6 lutego 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w interfejsie API 23 była używana wartość
JobScheduler.getPendingJob(...)
. b/123893059 - Naprawiono błąd
NullPointerException
na urządzeniach z Androidem 5.1 (poziom interfejsu API 22). lub niższy. b/123835104
Wersja 1.0.0-beta04
4 lutego 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Poprawiono harmonogram pracy okresowej w implementacji opartej na AlarmManager.
- Rozwiązaliśmy problem, który powodował, że usługa WorkManager nie mogła prawidłowo śledzić ograniczeń za pomocą implementacji opartej na AlarmManager. b/123379508
- Naprawiono problem, który powodował, że WorkManager nie ponawiał próby po śmierci procesu, gdy za pomocą implementacji opartej na AlarmManager. b/123329850
- Naprawiliśmy problem, który powodował, że z WorkManagera były ujawniane blokady uśpienia przy korzystaniu z interfejsu Implementacja oparta na usłudze AlarmManager.
Wersja 1.0.0-beta03
25 stycznia 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Wprowadzono regresję
1.0.0-beta02
, która uniemożliwiała wykonywanie zadań w pewnych sytuacjach. b/123211993 - Rozwiązaliśmy problem, który powodował, że praca nie uwzględniała czasu do ponowienia. b/122881597
- Naprawiono błąd
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (interfejs API) lub mniejszą. Jest to kontynuacja poprawki w aplikacji1.0.0-beta02
. b/121345393 - Dodaliśmy
exported=false
w przypadku niektórych brakujących komponentów w pliku manifestu tę adnotację. - Informacje o tym, jak WorkManager współpracuje z systemem operacyjnym, znajdziesz w sekcji dokumentacji na poziomie pakietu.
Wersja 1.0.0-beta02
15 stycznia 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Naprawiono przypadek skrajny, w którym okresowa praca mogła być wykonywana więcej niż raz w danym przedziale czasu na urządzeniach z Androidem 6.0 (poziom interfejsu API 23). b/121998363
- Naprawiono błąd
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (interfejs API) poziomu 22) lub niższym. b/121345393 - Naprawiono błędne wykonywanie pracy, gdy na urządzeniach nie były spełnione ograniczenia z Androidem 5.1 (poziom interfejsu API 22) lub niższym. b/122578012
- Zoptymalizowano obsługę ukończenia pracy w celu skrócenia w niektórych przypadkach skrajnych. b/122358129
- Dodaliśmy zmianę odnoszącą się do potencjalnych warunków wyścigu w wielu instancjach
z
LiveData
używanych przez WorkManager. - Przeniesiono, aby używać zależności
Room
1.1.1
zamiast1.1.1-rc01
; ich są identyczne. b/122578011
Wersja 1.0.0-beta01
19 grudnia 2018 r.
Ta wersja nie zawiera żadnych zmian interfejsu API. od tej pory WorkManager powinien zachować stabilny interfejs API do następnej wersji, chyba że wystąpi problem krytyczny. Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Anulowane wcześniej elementy podrzędne dla pomyślnie ukończonego zadania nadrzędnego nie będą już działać. b/120811767
- Prawidłowo zainicjowane klasy logowania (wyświetlane głównie podczas testów).
Wersja 1.0.0-alfa13
12 grudnia 2018 r.
Ta wersja zawiera niewielką zmianę interfejsu API, która będzie przydatna dla niektórych użytkowników Kotlin.
Zmiany interfejsu API
- Element
androidx.work.Result
został przeniesiony do klasy wewnętrznejListenableWorker
. Zapobiega to konfliktom refaktoryzacyjnym z klasąResult
najwyższego poziomu Kotlin. Ta zmiana interfejsu API jest niezbędna. b/120564418
Zmiana w interfejsie API
- Element
androidx.work.Result
został przeniesiony 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ę poniżej z sekcją Zmiana znaczenia zmian w interfejsie API. Prawdopodobnie udostępnimy tę wersję jako pierwszą wersję beta. alpha12
zawiera też obszerne aktualizacje dokumentacji.
Zmiany interfejsu API
- Nowy artefakt,
work-rxjava2
, przedstawiaRxWorker
. To jest zasób typuListenableWorker
, który oczekuje na właściwośćSingle<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 w momencie przejścia na wersję beta. Planujemy dodać w przyszłości alternatywną wersję. - Łącznie
Payload
wResult
.Result
jest teraz „zapieczętą klasą” dzięki 3 konkretnym wdrożeniom, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(alboResult.failure(Data)
) iResult.retry()
.ListenableFuture
ma teraz wynikResult
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 warianty, aby lepiej obsługiwać identyfikatory URI treści wyzwalających wolno wyzwalanie. b/119919774 - Dodano
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
wariant. Ta metoda wymaga interfejsu API 26. - Dodano metody rozszerzeń
Operation.await()
iListenableFuture.await()
Kotlin. - 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 niezwykła zmiana. - 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 jednak uwzględniamy wersje z pojedynczym argumentem dla każdej metody. To niezwykła zmiana. - Usunięto
WorkContinuation.combine(OneTimeWorkRequest, *)
wariantu. przedstawiał mylący interfejs API; metodycombine
są bardziej zrozumiałe. To niezwykła zmiana.
Poprawki błędów
- Implementacje sprzed wersji przedpremierowej z większą niezawodnością są teraz bardziej niezawodne, jeśli chodzi o odzyskiwanie stanu trwającego już procesu.
- Pole
LiveData
zaobserwowane w usłudzeobserveForever
jest śledzone przez WorkManagera. To jest backend poprawki z biblioteki pokoi. b/74477406 Data.Builder.build()
zgłasza teraz wyjątek, jeśli zserializowany obiekt przekracza maksymalny rozmiar. Wcześniej działo się to tylko w wątku w tle, w którym nie było można prawidłowo go obsłużyć.- Rozróżnianie zadań zatrzymanych i anulowanych;
getWorkInfoById()
zwróci wartośćWorkInfo
zCANCELLED
State
w okresieListenableWorker.onStopped()
. - Traktuj
null
Result
jako błędy w procesieListenableWorker
. b/120362353 - Poprawka spekulacyjna dotycząca tabletów Shield z interfejsem API 24, który czasami zwracał błąd
IllegalArgumentException
. b/119484416
Zmiana w interfejsie API
- 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 w momencie przejścia na wersję beta. Planujemy dodać w przyszłości alternatywną wersję. - Łącznie
Payload
wResult
.Result
jest teraz „zapieczętą klasą” dzięki 3 konkretnym wdrożeniom, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(alboResult.failure(Data)
) iResult.retry()
.ListenableFuture
ma teraz wynikResult
zamiastPayload
. Elementy typuWorker
nie mają metod pobierania ani metod ustawiania danych wyjściowych dla danych wyjściowychData
. - Dodano metody rozszerzeń
Operation.await()
iListenableFuture.await()
Kotlin. - Nazwa
Operation.getException()
została zmieniona naOperation.getThrowable()
. - Klasa i metody odwołujące się do obiektu
ContentUriTriggers
nie są już dostępne do użytku publicznego. - 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 jednak uwzględniamy wersje z pojedynczym argumentem dla każdej metody. - Usunięto
WorkContinuation.combine(OneTimeWorkRequest, *)
wariantu. przedstawiał mylący interfejs API; metodycombine
są bardziej zrozumiałe.
Wersja 1.0.0-alfa11
8 listopada 2018 r.
Ta wersja zawiera wiele zmian, które staną się stabilnym interfejsem API od beta
.
W tej wersji wprowadzono zmiany w interfejsie API, które są nieistotne. zapoznaj się poniżej z sekcją Zmiana znaczenia zmian w interfejsie API.
Zmiany interfejsu API
work-runtime-ktx
wprowadza nowe urządzenieCoroutineWorker
.- Nazwa konta
WorkStatus
została zmieniona naWorkInfo
. Nazwy wszystkich odpowiednich wariantów metodygetStatus
zostały zmienione na odpowiednich wariantów (getWorkInfo
). To niezwykła zmiana. - Funkcja
ListenableWorker.onStopped()
nie akceptuje już argumentu logicznego wskazującego, czyWorkRequest
został anulowany.WorkManager
nie ma już tego rozróżnienia. To niezwykła zmiana. - Nazwa pakietu
androidx.work.test
została zmieniona naandroidx.work.testing
. To niezwykła zmiana. - Konfigurujący w domenie
Constraints
nie są już częścią publicznego interfejsu API. To niezwykła zmiana. - Funkcje
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje. To niezwykła zmiana. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. To niezwykła zmiana. - Konstruktor dla
WorkStatus
nie jest już częścią publicznego interfejsu API. To niezwykła zmiana. - Nazwy
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały zmienione naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. To niezwykła zmiana. - Dodaliśmy 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 niezwykła zmiana. - Żadne warianty atrybutu
enqueue
nie akceptują już zmiennych typuWorkRequest
. To niezwykła zmiana. Zamiast tego używaj kolekcji. Aby zmodyfikować istniejący kod, możesz użyć poleceniaArrays.asList()
. Zrobiliśmy to, aby zmniejszyć liczbę powierzchni i metod interfejsu API. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje teraz błądIllegalStateException
. To niezwykła zmiana.
Poprawki błędów
- Elementy
WorkRequest.Builder
w artefaktiework-runtime-ktx
używają terazListenableWorker
. Poprawiono parametr b/117666259 - Upewnij się, że następne uruchomienie instancji
PeriodicWork
przypada w przyszłości. Poprawiono parametr b/118204399 - Podczas uruchamiania aplikacji przy użyciu WorkManagera usuń potencjalne wejścia/wyjścia dysku. Poprawiono parametr b/117796731
- Napraw stan wyścigu w:
WorkConstraintsTracker
. Naprawiono android-workmanager/issues/56.
Zmiana w interfejsie API
- Nazwa konta
WorkStatus
została zmieniona naWorkInfo
. Nazwy wszystkich odpowiednich wariantów metodygetStatus
zostały zmienione na odpowiednich wariantów (getWorkInfo
). - Funkcja
ListenableWorker.onStopped()
nie akceptuje już argumentu logicznego wskazującego, czyWorkRequest
został anulowany.WorkManager
nie ma już tego rozróżnienia. - Nazwa pakietu
androidx.work.test
została zmieniona naandroidx.work.testing
. - Konfigurujący w domenie
Constraints
nie są już częścią publicznego interfejsu API. - Funkcje
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwróciły wcześniej tablice. Teraz te metody zwracają kolekcje. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. - Konstruktor dla
WorkStatus
nie jest już częścią publicznego interfejsu API. - Nazwy
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały zmienione naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. - Wszystkie warianty metod
enqueue
icancel
wWorkManager
zwracają teraz nowy typOperation
. - Żadne warianty atrybutu
enqueue
nie akceptują już zmiennych typuWorkRequest
. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje teraz błądIllegalStateException
.
Wersja 1.0.0-alpha10
11 października 2018 r.
Ta wersja obsługuje pracę asynchroniczną kontrolowaną przez programistę. W tej wersji wprowadzono zmiany w interfejsie API, które są nieistotne. zapoznaj się poniżej z sekcją Zmiana znaczenia zmian w interfejsie API.
Przewidujemy, że WorkManager rozpocznie ostatnie fazy okresu alfa. Spodziewamy się, że interfejs API w wersji beta będzie stabilny, dlatego prosimy o przesyłanie opinii na temat narzędzia do śledzenia błędów.
Zmiany interfejsu API
- Usunięto wszystkie metody i klasy dostępne wcześniej w usłudze
deprecated
, a zwłaszcza domyślny konstruktorWorker
. Jest to przełomowa zmiana interfejsu API. - Nazwa
NonBlockingWorker
została zmieniona naListenableWorker
, która jest teraz odkrytą klasą publiczną i jest gotowa do użycia.- Funkcja
ListenableWorker
zapewnia dostęp do jednej metody abstrakcyjnej,ListenableFuture<Payload> onStartWork()
, która jest wywoływana w wątku głównym. Od Ciebie zależy, czy rozpoczniesz i przetwarzasz pracę asynchronicznie. Gdy skończysz, odpowiednio zaktualizujListenableFuture
. Referencyjne implementacje komponentówListenableFuture
znajdziesz w pakiecieFutures
walpha02
(patrz sekcjaWorkManager
poniżej). - 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.
- Funkcja
- Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały połączone w klasę abstrakcyjną o nazwieWorkerFactory
. Implementacja daje pewność, że w przypadku każdej instancjiWorkerFactory
utworzonej przez użytkownika domyślne zachowanie oparte na odbiciach będzie nazywane „ostatnią próbą”. To niezwykła zmiana. - Usunięto metody
WorkManager.synchronous()
iWorkContinuation.synchronous()
oraz wszystkie powiązane metody. DodanoListenableFuture<Void>
jako typ zwracany wielu metod w interfejsie API. Jest to przełomowa zmiana interfejsu API.- Teraz możesz synchronicznie pobierać i obserwować je za pomocą funkcji
ListenableFuture
. Na przykład hasłoWorkManager.enqueue()
zostało użyte do zwrócenia wartościvoid
; zwraca terazListenableFuture<Void>
. Możesz wywołaćListenableFuture.addListener(Runnable, Executor)
lubListenableFuture.get()
, aby uruchomić kod po zakończeniu operacji. - Pamiętaj, że te elementy typu
ListenableFuture
nie informują, czy operacja zakończyła się powodzeniem, czy niepowodzeniem. tylko że skończyli. Aby znaleźć te informacje, musisz połączyć metody w usłudze WorkManager. - Pomijamy wywołania funkcji
cancel()
w przypadku tych obiektów, ponieważ są one mylące i trudne do przełożenia (czy anulujesz operację czy związaną z nią pracę?). Wynika to z umowyFuture
. - Aby zachować spójność z synchronicznymi metodami
getStatus*
, udostępniliśmy wariantyListenableFuture
i zmieniliśmy nazwę tych, które zwracały wartośćLiveData
, na „LiveData” jako część nazwy (na przykładgetStatusesByIdLiveData(UUID)
). Jest to przełomowa zmiana w interfejsie API.
- Teraz możesz synchronicznie pobierać i obserwować je 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ć nowy konstruktor
Worker
. b/116296569 - Popraw potencjalne zagrożenie (
NullPointerException
) w wyścigu, w którym czas pracy byłREPLACE
d. b/116253486 i b/116677275 WorkContinuation.combine()
akceptuje teraz co najmniej 1WorkContinuation
zamiast 2 lub więcej. b/117266752
Zmiana w interfejsie API
- 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 klasę abstrakcyjną 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ść ten kod w pliku Gradle jako tymczasowe obejście tego problemu i naprawimy go w wersji alfa10:
Odlotowe
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ę niezbędną w przypadku „100 zadań” . b/115560696
- Dodaliśmy kilka poprawek błędów ograniczeń klucza obcych spowodowanych warunkami wyścigu. b/114705286
- Przekazane wywołania
ConstraintTrackingWorker.onStopped(boolean)
do bazowego elementuWorker
. b/114125093 - Egzekwuj poprawne minimalne opóźnienie wycofywania dla Firebase JobDispatcher. b/113304626
- Ulepszone wątkowanie gwarantuje wewnętrzny dostęp do biblioteki.
- Skoryguj potencjalny problem z wewnętrznym usuwaniem duplikatów wartości
LiveData
.
Zmiany interfejsu API
- Możesz teraz tworzyć własne instancje
Worker
w czasie działania, określającWorkerFactory
wWorkManager.Configuration
. Fabryka kreacji zastępczej toDefaultWorkerFactory
, która odpowiada działaniu poprzednich wersji WorkManagera.- Domyślne konstruktory dla
Worker
iNonBlockingWorker
są teraz oznaczone jako wycofane. Użyj nowego konstruktora (Worker(Context, WorkerParameters)
) i wywołajsuper(Context, WorkerParameters)
; w kolejnych wersjach WorkManager zostanie usunięty domyślny konstruktor.
- Domyślne konstruktory dla
- Zaczęliśmy korzystać z nowego artefaktu
ListenableFuture
wewnętrznie (bez zależności Guava). W kolejnych wersjach dodamy do tego interfejsu API ListenableFutures. Ta zmiana umożliwi późniejsze ukrycie stronyNonBlockingWorker
. - Dodaj możliwość aktywowania zadań czasowych w
TestDriver
przez funkcjeTestDriver.setInitialDelayMet(UUID)
iTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Zmiany najważniejsze
- Domyślne konstruktory
Worker
iNonBlockingWorker
zostały wycofane. Jak najszybciej przejdź na nowy konstruktor. W kolejnych wersjach domyślny konstruktor zostanie usunięty.
Wersja 1.0.0-alpha08
27 sierpnia 2018 r.
Poprawki błędów
- Komponenty WorkManager wyraźnie oznaczone jako rozruch bezpośrednie, nieświadome, dzięki czemu nie uruchamiają się podczas bezpośredniego rozruchu. W przyszłości udostępnimy wersję WorkManagera z obsługą bezpośredniego rozruchu. b/112665532
- Rozwiązaliśmy problem, który powodował, że ponawiana praca nie była wykonywana. b/112604021
- Naprawiliśmy problem z powtarzającym się okresowym wykonywaniem zadań (związane z powyższym problemem). b/112859683
- Uznawane zasady ponowienia, gdy proces aplikacji jest już uruchomiony.
- Poprawiono komunikaty o wyjątkach w pliku
Data
, wskazujące limit na 10 KB. - Zmniejszono maksymalną wartość z
Configuration.setMaxSchedulerLimit(int)
do 50, aby uwzględnić pewne opóźnienia w zakończeniu 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.
- Wykonanie zadania, które zostało zakończone, powoduje teraz prawidłowe anulowanie wszystkich oczekujących kopii tej pracy w innych algorytmach szeregowania. Doprowadziło to do przekroczenia limitu
JobScheduler
zadań. b/111569265 - Naprawiono
ConcurrentModificationException
wConstraintTracker
. b/112272753 - Adnotacje typu zwracania
Data.getBooleanArray(String)
iData.getIntArray(String)
zostały zmienione na@Nullable
zamiast@NonNull
. b/112275229
Zmiany interfejsu API
- Rozszerzenie
Worker
rozszerza teraz nowe zajęcia:NonBlockingWorker
. Nie będzie to miało wpływu na bieżące wykorzystanie danych. W przyszłościNonBlockingWorker
stanie się w pełni obsługiwaną encją na potrzeby rozwiązań z niestandardowymi wątkami. - Adnotacje typu zwracania
Data.getBooleanArray(String)
iData.getIntArray(String)
zostały zmienione na@Nullable
zamiast@NonNull
. b/112275229 - Rozszerzenia Kotlin: wycofaliśmy dyrektywę
Map.toWorkData()
i dodaliśmyworkDataOf(vararg Pair<String, Any?>)
najwyższego poziomu, aby zapewnić większą spójność z istniejącymi interfejsami API.
Wersja 1.0.0-alpha06
1 sierpnia 2018 r.
Poprawki błędów
- Zapobiegaj blokadzie bazy danych podczas planowania pracy. b/111801342
- Usuń błąd, który powodował, że aplikacja
PeriodicWork
nie uruchamiała się zgodnie z harmonogramem w trybie uśpienia. b/111469837 - Napraw warunek wyścigu podczas śledzenia ograniczeń, które powodują awarię
WorkManager
. googlecodelabs/android-workmanager/issues/56. - Przy korzystaniu z elementu
WorkRequest.Builder#build()
twórz unikalne elementyWorkRequest
. b/111408337 - Włączaj używanie usługi
RescheduleReceiver
tylko wtedy, gdy komponentyWorkRequest
jej potrzebują. b/111765853
Wersja 1.0.0-alpha05
24 lipca 2018 r.
Zmiany interfejsu API
WorkManager.getInstance()
jest teraz oznaczona adnotacją@NonNull
zamiast@Nullable
. Jeśli usługa singleton nie zostanie prawidłowo zainicjowana w przypadku inicjowania ręcznego, metoda zwróciIllegalStateException
. To jest zmiana interfejsu API powodująca niezgodność.- Dodaliśmy nowy interfejs API
Configuration.Builder.setMinimumLoggingLevel(int)
, który może kontrolować szczegółowość WorkManagera. Domyślnie WorkManager rejestruje zasadyLog.INFO
i nowsze. - Zmieniono podpis
Data.getString()
, aby nie używał już wartości domyślnej (domyślnienull
). Jest to przełomowa zmiana w interfejsie API. - Niektóre metody potrzebne tylko do użytku wewnętrznego oznaczono jako
@hide
. Obejmuje to konstruktorConstraints
,Data.toByteArray()
orazData.fromByteArray(byte[])
. Jest to przełomowa zmiana interfejsu API.
Poprawki błędów
- WorkManager nie wykonuje już zadań w znanych przypadkach automatycznej kopii zapasowej. Mogło to spowodować wypadek. b/110564377
- Rozwiązano podwójne harmonogramy (
PeriodicWorkRequest
) podczas korzystania z zasadJobScheduler
. b/110798652 - Rozwiązaliśmy problem z nieprawidłowym wykonywaniem zadań
PeriodicWorkRequest
po uśpieniu urządzenia. b/111469837 - Rozwiązaliśmy problem z początkowymi opóźnieniami podczas korzystania z Firebase JobDispatcher. b/111141023
- Naprawiliśmy niektóre potencjalne warunki wyścigu i problemy z czasem jego trwania.
- Prawidłowo zwolniono
BroadcastReceiver
sekund, które nie były już potrzebne. - Zoptymalizowana jest wydajność zmiany harmonogramu w przypadku ponownego uruchomienia aplikacji po wymuszeniu zamknięcia.
- Zezwolono na wywoływanie funkcji
TestScheduler.setAllConstraintsMet(UUID)
przed lub po umieszczeniu danego elementuWorkRequest
w kolejce. b/111238024
Zmiany najważniejsze
WorkManager.getInstance()
jest teraz oznaczona adnotacją@NonNull
zamiast@Nullable
.- Zmieniono podpis
Data.getString()
, aby nie używał już wartości domyślnej (domyślnienull
). - Niektóre metody potrzebne tylko do użytku wewnętrznego oznaczono 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ązaliśmy problem, który mógł wystąpić podczas zmiany harmonogramu wszystkich instancji roboczych po wymuszeniu zatrzymania lub ponownym uruchomieniu. b/110507716
- Dodano adnotacje dotyczące wartości null do różnych interfejsów API WorkManager. b/110344065
- Rejestruje nieobsłużone wyjątki, które występują podczas wykonywania instancji roboczej. b/109900862
- Dozwolone niszczące migracje bazy danych na wypadek przywrócenia starszej wersji WorkManagera. b/74633270
- Rozwiązaliśmy problem, który powodował awarię migracji przy tworzeniu zduplikowanych tagów niejawnych. To bardzo rzadki problem, który występuje tylko w przypadku samodzielnego użycia tego samego formatu tagu niejawnego.
Wersja 1.0.0-alpha03
19 czerwca 2018 r.
Poprawki błędów
Naprawiono warunek wyścigu w implementacji opartej na
AlarmManager
. b/80346526.Rozwiązaliśmy zduplikowane zadania występujące podczas korzystania z usługi
JobScheduler
po ponownym uruchomieniu urządzenia.Zadania z aktywatorami identyfikatora URI treści są teraz zachowywane po ponownym uruchomieniu. b/80234744
Aktualizacje dokumentacji. b/109827628, b/109758949, b/80230748
Naprawiono błąd, który występował podczas ponownego dodawania
WorkRequest
do kolejki. b/109572353.Naprawiliśmy ostrzeżenia kompilatora Kotlin podczas korzystania z zależności
work-runtime-ktx
.WorkManager używa teraz
Room
w wersji1.1.1-rc1
.
Zmiany interfejsu API
- Dodano
getStatusesSync()
, synchroniczną wersjęWorkContinuation.getStatuses()
. Worker
potrafi rozróżnić anulowanie inicjowane przez użytkownika od tymczasowego zatrzymania na żądanie systemu operacyjnego. MetodaWorker.isStopped()
zwraca wartośćtrue
, jeśli zostanie zażądany jakikolwiek przystanek. FunkcjaWorker.isCancelled()
zwraca wartośćtrue
, gdy zadanie zostało wyraźnie anulowane. b/79632247- Dodano obsługę JobParameters#getNetwork() w interfejsie API 28. Ta informacja jest udostępniana przez
Worker.getNetwork()
. - Dodano zasadę
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
, aby umożliwić Ci wyegzekwowanie liczby zadań, które można wysłać do usługJobScheduler
lubAlarmManager
. Dzięki temuWorkManager
nie będzie mógł zająć wszystkich dostępnychJobScheduler
miejsc. - Dodano
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, który ułatwia zdefiniowanie zakresu identyfikatorów zadańJobScheduler
, których może używaćWorkManager
. b/79996760 Worker.getRunAttemptCount()
zwraca bieżącą liczbę uruchomień dla danegoWorker
. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
umożliwia dodanie unikalnych komponentówPeriodicWorkRequest
do kolejki. b/79600647WorkManager.cancelAllWork()
anuluje wszystkieWorker
. Biblioteki zależne odWorkManager
mogą wysyłać zapytania, gdy ta metoda została wywołana jako ostatnia, używającWorkManager.getLastCancelAllTimeMillis()
do dodatkowego czyszczenia stanu wewnętrznego.- Dodano zadanie
WorkManager.pruneWork()
, aby usunąć ukończone zadania z wewnętrznej bazy danych. b/79950952, b/109710758
Zmiany w działaniu
- Do wszystkich elementów
WorkRequest
dodano tag niejawny. Jest to w pełni kwalifikowana nazwa klasy obiektuWorker
. Umożliwia to usuwanie elementówWorkRequest
, które nie mają komponentówtag
lub gdy usługaid
jest niedostępna. b/109572351
Zmiany najważniejsze
- Nazwa
Worker.WorkerResult
została zmieniona naWorker.Result
. Worker.onStopped
ma teraz dodatkowy parametrisCancelled
, który jest ustawiony natrue
, jeśli parametrWorker
został jednoznacznie anulowany.
Wersja 1.0.0-alpha02
24 maja 2018 r.
Poprawki błędów
- Naprawiono
NullPointerException
naState.isFinished()
. b/79550068 - Rozwiązaliśmy problem, który powodował przełożenie spotkań
Worker
naApplication.onCreate()
. b/79660657 - Rozwiązaliśmy problem, który powodował, że można było zaplanować więcej pracy, niż pozwala na to system operacyjny. b/79497378
- Czyszczenie blokad uśpienia powiązanych z urządzeniami
Worker
zostało przeniesione do wątku w tle. - Implementacja
AlarmManager
jest teraz prawidłowo czyszczona po zakończeniu wszystkich oczekujących zadań. - Naprawiono zapytania SQL czyszczenia, które wpływały na regiony inne niż angielski. B/80065360
- Dodano obsługę komponentów
float
w plikuData
. b/79443878 Data.Builder.putAll()
zwraca teraz wystąpienieBuilder
. b/79699162- Więcej plików javadoc i poprawek w dokumentacji. b/79691663
Zmiany interfejsu API
- Elementy typu
Worker
mogą zareagować na zatrzymanie.Worker.isStopped()
może posłużyć do sprawdzenia, czyWorker
został zatrzymany.Worker.onStopped()
może służyć do wykonywania prostych operacji czyszczenia. - Interfejs API
Worker.getTags()
zwraca wartośćSet
tagów powiązanych z tabeląWorker
. - Dodano przeciążenia (
javax.time.Duration
) dla interfejsów API, które wymagają kombinacji czasu trwania iTimeUnit
. Chroni Cię@RequiresApi(26)
. WorkManager
rozszerzenia zostały przeniesione z pakietuandroidx.work.ktx
do pakietuandroidx.work
. Stare rozszerzenia są wycofane i zostaną usunięte w przyszłej wersji.- Interfejs
Configuration.withExecutor()
został wycofany. Użyj w zamian zasadyConfiguration.setExecutor()
.
Wersja 1.0.0-alpha01
8 maja 2018 r.
WorkManager upraszcza planowanie i wykonywanie
gwarantowana praca w tle z uwzględnieniem ograniczeń. Ta początkowa wersja to 1.0.0-alpha01
.