WorkManager
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
23 kwietnia 2025 r. | 2.10.1 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od WorkManager, musisz dodać do projektu repozytorium Google Maven:
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
dependencies { def work_version = "2.10.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" }
dependencies { val work_version = "2.10.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Informacje o korzystaniu z rozszerzeń Kotlina znajdziesz w dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.10
Wersja 2.10.1
23 kwietnia 2025 r.
Element androidx.work:work-*:2.10.1
został zwolniony. Wersja 2.10.1 zawiera te komity.
Poprawki błędów
- Zmniejsz prawdopodobieństwo wystąpienia błędu
TooManyRequestsException
podczas rejestracjiWorkManager
wNetworkCallback
używanym do śledzenia ograniczeń. ((b/231499040)[https://issuetracker.google.com/231499040], b309d5).
Wersja 2.10.0
30 października 2024 r.
Element androidx.work:work-*:2.10.0
został zwolniony. Wersja 2.10.0 zawiera te komity.
Znaczące zmiany od wersji 2.9.1
- Dodano tagi śledzenia do zadań z
WorkManager
, dzięki czemu polecenie „adb shell dumpsys jobscheduler” jest dużo łatwiejsze do zrozumienia, ponieważ zawiera nazwę wykonywanego zadania. Dodano też sekcje śledzenia wokół kluczowych obszarówWorkManager
. - Dodano element sterujący
Configuration.workerCoroutineContext
do kontrolowania modułu rozsyłającego, w którym wykonywane jest działanieCoroutineWorker
. - Deweloperzy mogą określić
NetworkRequest
jako ograniczenie dla pracownika za pomocą metodyConstraints.setRequiredNetworkRequest
. Dzięki temu możesz dokładniej określić, w której sieci ma działać ta instancja robocza. WorkManager
Wersja 2.10.0 jest teraz skompilowana z pakietem SDK 35 i zawiera różne zmiany zapewniające zgodność z tym pakietem.
Wersja 2.10.0-rc01
24 października 2024 r.
Element androidx.work:work-*:2.10.0-rc01
został zwolniony. Wersja 2.10.0-rc01 zawiera te komity.
Wersja 2.10.0-beta01
2 października 2024 r.
Element androidx.work:work-*:2.10.0-beta01
został zwolniony. Wersja 2.10.0-beta01 zawiera te komity.
Wersja 2.10.0-alpha04
18 września 2024 r.
Element androidx.work:work-*:2.10.0-alpha04
został zwolniony. Wersja 2.10.0-alpha04 zawiera te komity.
Zmiany w interfejsie API
- Dodaj powód zatrzymania
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
, gdy instancja robocza na pierwszym planie zostanie zatrzymana z powodu limitu czasu wykonania na podstawie typu usługi na pierwszym planie. (Ibd0af)
Wersja 2.10.0-alpha03
4 września 2024 r.
Element androidx.work:work-*:2.10.0-alpha03
został zwolniony. Wersja 2.10.0-alpha03 zawiera te komity.
Nowe funkcje
- Dodano tagi śledzenia do zadań z
WorkManager
, dzięki czemu polecenie „adb shell dumpsys jobscheduler” jest dużo łatwiejsze do zrozumienia, ponieważ zawiera nazwę wykonywanego zadania. Dodano też sekcje śledzenia wokół kluczowych obszarówWorkManager
.
Zmiany w interfejsie API
- WorkManager 2.10.0 jest teraz kompilowany z pakietem SDK 35.
- Napraw problem z usługami na pierwszym planie typu „short service” i „data sync”, które powodują przekroczenie limitu czasu i wywołują ANR, gdy
WorkManager
nie wywołujestopSelf()
. Ta poprawka dotyczy tylko urządzeń z interfejsem API 34 i 35, na których wprowadzono typy usług działających na pierwszym planie. (ca06b2, b/364508145) - Nowe interfejsy API
WorkerParameters
, które umożliwiają przełączanie procesu zdalnego, do któregoWorker
się łączy podczas korzystania zWorkerFactory
. (Ibdc8a, Ie8a90, I7373f)
Poprawki błędów
- Rozwiązanie problemu z awarią spowodowaną przez
WorkManager
próbę ponownego uruchomienia długotrwałego zadania (czyli zadania na pierwszym planie), gdy typ zadania na pierwszym planie miał uprawnienia wymagane przez Androida 14, które zostały cofnięte. (b/333957914) - Usunięto ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji przy użyciu AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
Wersja 2.10.0-alpha02
17 kwietnia 2024 r.
Element androidx.work:work-*:2.10.0-alpha02
został zwolniony. Wersja 2.10.0-alpha02 zawiera te komity.
Zmiany w interfejsie API
- Dodaliśmy możliwość emitowania zakresów śladu za pomocą konfigurowalnego elementu
@RestrictTo
Tracer
w komponencieWorkManager
. (I17d7f, b/260214125) - Dodano element sterujący
Configuration.workerCoroutineContext
do kontrolowania modułu rozsyłającego, w którym wykonywane jest działanieCoroutineWorker
. Pomaga to całkowicie uniknąć użyciaDispatchers.Default
w elementachWorkManager
. (Icd1b7) - Dodaj niestandardowe moduły obsługi wyjątków dla Workers (Ib1b74, b/261190695)
- Funkcje
OneTimeWorkRequest.Builder
iPeriodicWorkRequest.Builder
można teraz tworzyć za pomocą argumentuKClass
zamiastClass
:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6) - Klasa
WorkManager
została przeniesiona do Kotlina. Teraz metody zwracająceLiveData
,ListenableFuture
lubFlow
zawierają prawidłowe informacje o możliwości występowania wartości null. Może to wymagać wprowadzenia zmian w kodzie źródłowym klienta, jeśli założenia dotyczące możliwości występowania wartości null w tym kodzie były nieprawidłowe. (If6757)
Wersja 2.10.0-alpha01
24 stycznia 2024 r.
Element androidx.work:work-*:2.10.0-alpha01
został zwolniony. Wersja 2.10.0-alpha01 zawiera te commity.
Nowe funkcje
- Deweloperzy mogą określić
NetworkRequest
jako ograniczenie dla pracownika za pomocą metodyConstraints.setRequiredNetworkRequest
. Dzięki temu możesz dokładniej określić, w której sieci ma działać ta instancja robocza.
Zmiany w interfejsie API
- Dodanie możliwości określenia
NetworkRequest
jako ograniczenia. (Id98a1, b/280634452)
Wersja 2.9
Wersja 2.9.1
7 sierpnia 2024 r.
Element androidx.work:work-*:2.9.1
został zwolniony. Wersja 2.9.1 zawiera te komity.
Poprawki błędów
- Rozwiązanie problemu awarii spowodowanej przez
WorkManager
próbę ponownego uruchomienia długotrwałego wątku (czyli wątku na pierwszym planie), gdy typ pracy na pierwszym planie miał wymagania wstępne Androida 14, które zostały cofnięte. (b/333957914)
Wersja 2.9.0
29 listopada 2023 r.
Element androidx.work:work-*:2.9.0
został zwolniony. Wersja 2.9.0 zawiera te commity.
Ważne zmiany od wersji 2.8.0
- Dostrzegalność za pomocą
Flow
. ZamiastLiveData
postępy pracownika można teraz obserwować za pomocą metodWorkManager.getWorkInfosFlow
i podobnych metod. - Teraz
WorkManager
zawiera wskazówkę, dlaczego usługa worker została wcześniej zatrzymana. Możesz go użyć, aby zapytać o dane dotyczące pracownika za pomocą metodygetStopReason()
lubWorkInfo
za pomocą metodygetStopReason()
. - Dokładne planowanie pracy pracowników okresowych za pomocą
setNextScheduleTimeOverride
. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który można wykorzystać do implementacji zaawansowanych funkcji, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie prób ponownego wykonania czy uruchamianie zadania dotyczącego kanału z wiadomościami przed każdym porannym wstaniem użytkownika bez przesunięcia. Aby uniknąć anulowania obecnie działającego zadania podczas planowania kolejnego, należy używać funkcjiExistingPeriodicWorkPolicy.UPDATE
. - Testowanie WorkManagera z wykorzystaniem wątków dopasowanych do wersji produkcyjnej.
ExecutorsMode.PRESERVE_EXECUTORS
można używać w funkcjiinitializeTestWorkManager
, aby zachować wykonawców ustawionych w funkcjiConfiguration
i używać rzeczywistego wątku głównego. - Interfejsy coroutines API, takie jak
CoroutineWorker
, zostały przeniesione z dodatkowego artefaktu work-runtime-ktx do głównego artefaktu work-runtime. work-runtime-ktx jest teraz pusty.
Zmiany w interfejsie API
- Do grupy
WorkInfo
został dodany użytkownikstopReason
. Dostęp do funkcjistopReason
jest możliwy po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReason
, ponieważ po zatrzymaniu wątku sama aplikacja może zostać bardzo szybko zamknięta. (I21386) - Umożliw ustawienie parametru
Clock
w konfiguracji i używanie go do określania kolejności wykonywania testów Worker. (Ic586e) - Do metody
getStopReason()
dodano metodęListenableWorker
, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49) - Konstruktor klasy
WorkInfo
jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) - Plik
work-runtime-ktx
jest teraz pusty, a plikCoroutineWorker
i inne narzędzia do Kotlina są teraz dostępne w głównym artefakcie pracy w czasie wykonywania. (I71a9a) - Dodano metodę
setNextScheduleTimeOverride
, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da). - Dodano
getNextScheduleTimeMillis
, aby uzyskać informacje o planowanym czasie działania, doWorkInfo
. (I797e4) - Informacje o początkowym opóźnieniu i częstotliwości są dodawane do
WorkInfo
. (I52f2f) - Dodano metodę observe workers via Flows via methods
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Do konstruktorów i właściwości
Constraints
dodano brakujące adnotacje@RequiresApi(...)
. Zostały one dopasowane do odpowiednich adnotacji w metodachConstraints.Builder
, które istniały już w wcześniejszych wersjachWorkManager
. (I6d7d2) WorkManager
ma teraz osobny limit dla pracowników zajmujących się uri treści, aby zapewnić im gwarantowane sloty wJobScheduler
i zapobiec braku aktualizacji treści w przypadku dużego obciążenia. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Do
WorkInfo
dodano ograniczenia. (I162c0)
Wersja 2.9.0-rc01
18 października 2023 r.
Element androidx.work:work-*:2.9.0-rc01
został zwolniony. Wersja 2.9.0-rc01 zawiera te zatwierdzenia.
- Brak zmian od ostatniej wersji beta
Wersja 2.9.0-beta01
6 września 2023 r.
Element androidx.work:work-*:2.9.0-beta01
został zwolniony. Wersja 2.9.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Dodano stałe dla przyczyn zatrzymania zwracanych przez
WorkInfo.stopReason
iListenableWorker.stopReason
(I0cc00).
Wersja 2.9.0-alpha02
26 lipca 2023 r.
Element androidx.work:work-*:2.9.0-alpha02
został zwolniony. Wersja 2.9.0-alpha02 zawiera te commity.
Nowe funkcje
- Teraz
WorkManager
zawiera wskazówkę, dlaczego usługa worker została wcześniej zatrzymana. Możesz go użyć, aby zapytać o dane dotyczące pracownika za pomocą metodygetStopReason()
lubWorkInfo
za pomocą metodygetStopReason()
.
Zmiany w interfejsie API
- Do grupy
WorkInfo
został dodany użytkownikstopReason
. Udostępnia ona danestopReason
po uruchomieniu instancji roboczej. Może to być przydatne w raportowaniustopReason
, ponieważ po zatrzymaniu zadania podrzędnego sama aplikacja może zostać bardzo szybko zamknięta. (I21386) - Zezwalanie na ustawianie zegara za pomocą konfiguracji i używanie go do określania kolejności wykonywania testów Worker. (Ic586e)
- Do metody
getStopReason()
dodano metodęListenableWorker
, która wskazuje, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano
WorkManagerTestInitHelper#closeWorkDatabase()
, aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49)
Poprawki błędów
- Dodano możliwość pominięcia
overrideNextScheduleTime
za pomocąTestDriver
oraz rozwiązano problemy z testowalnością. (Ic2905)
Wersja 2.9.0-alpha01
7 czerwca 2023 r.
Element androidx.work:work-*:2.9.0-alpha01
został zwolniony. Wersja 2.9.0-alpha01 zawiera te commity.
Nowe funkcje
- Dostrzegalność za pomocą
Flow
. ZamiastLiveData
postępy pracownika można teraz obserwować za pomocą metodWorkManager.getWorkInfosFlow
i podobnych metod. - Dokładne planowanie pracy pracowników okresowych za pomocą
setNextScheduleTimeOverride
. Umożliwia to dynamiczne obliczanie kolejnego harmonogramu pracy okresowej, który można wykorzystać do implementacji zaawansowanych funkcji, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie prób ponownego wykonania czy uruchamianie zadania dotyczącego kanału z wiadomościami przed każdym porannym wstaniem użytkownika bez przesunięcia. Aby uniknąć anulowania obecnie działającego zadania podczas planowania następnego, należy używać funkcjiExistingPeriodicWorkPolicy.UPDATE
. WorkManager
testuje wątki z wykorzystaniem produkcji.ExecutorsMode.PRESERVE_EXECUTORS
można użyć, aby zachować wykonawców ustawionych wConfiguration
i używać rzeczywistego wątku głównego.- Interfejsy API dotyczące coroutines, takie jak
CoroutineWorker
, zostały przeniesione z dodatkowego artefaktuwork-runtime-ktx
do głównego artefaktuwork-runtime
.work-runtime-ktx
jest teraz pusty.
Zmiany w interfejsie API
- Konstruktor
WorkInfo
jest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) work-runtime-ktx
jest teraz pusty, aCoroutineWorker
i inne narzędzia do obsługi Kotlina są teraz dostępne w głównym plikuwork-runtime
. (I71a9a)- Dodano metodę
setNextScheduleTimeOverride
, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da). - Nazwa
getEarliestRunTimeMillis
została zmieniona nagetNextScheduleTimeMillis
. (I2bd7a) - Informacje o następnym zaplanowanym czasie uruchomienia są dodawane do
WorkInfo
. (I797e4) - Informacje o początkowym opóźnieniu i częstotliwości są dodawane do
WorkInfo
. (I52f2f) - Dodano metodę observe workers via Flows via methods
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Do konstruktorów i właściwości Constraints dodano brakujące adnotacje
@RequiresApi(...)
. Zostały one dopasowane do odpowiednich adnotacji w metodachConstraints.Builder
, które istniały już w wcześniejszych wersjachWorkManager
. (I6d7d2) WorkManager
ma teraz osobny limit dla pracowników zajmujących się uri treści, aby zapewnić im gwarantowane sloty wJobScheduler
i zapobiec braku aktualizacji treści w przypadku dużego obciążenia. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit
. (Ic128f)- Do
WorkInfo
dodano ograniczenia. (I162c0)
Wersja 2.8
Wersja 2.8.1
22 marca 2023 r.
Element androidx.work:work-*:2.8.1
został zwolniony. Wersja 2.8.1 zawiera te commity.
Poprawki błędów
- Naprawiono błąd w
RescheduleReceiver
, który powodował, że ANR nie obsługiwał prawidłowo 2 jednoczesnych transmisji. (b/236906724)
Wersja 2.8.0
8 lutego 2023 r.
Element androidx.work:work-*:2.8.0
został zwolniony. Wersja 2.8.0 zawiera te commity.
Ważne zmiany od wersji 2.7.0
Nowe funkcje
- Dodano możliwość aktualizowania
WorkRequests
w nieinwazyjny sposób, zachowując pierwotny czas kolejkowania, łańcuchowanie itp. Więcej informacji znajdziesz w szczegółowym poście na blogu na temat tej funkcji oraz w dokumentacji Javadoc dlaWorkManager.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany w interfejsie API
- Dodano
WorkManager.updateWork
, aby zaktualizować pracę, zachowując jej pierwotny czas kolejkowania i łańcuchowanie.(I9a248, b/219446409) - Dodano użytkownika
ExistingPeriodicWorkPolicy.UPDATE
Te zasady umożliwiają aktualizację okresowego dzieła pod kątem nazwy. Jest ona podobna do obecnej funkcjiREPLACE
, ale mniej inwazyjna: nie anuluje zadania, jeśli jest ono obecnie wykonywane, i zachowuje czas kolejkowania – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu kolejkowania, a nie czasu aktualizacji. NazwaREPLACE
została wycofana, aby zmniejszyć ryzyko pomylenia jej z nazwamiREPLACE
iUPDATE
, które są bardzo podobne. Jeśli nadal chcesz zachować poprzednią semantykęREPLACE
, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE
, który jest identyczny z elementemREPLACE
. (I985ed, b/219446409) - Dodano możliwość przechwytywania wyjątków harmonogramu, podając
Consumer<Throwable>
za pomocą metody setSchedulingExceptionHandler. - Dodano możliwość przekazania wartości
Consumer<Throwable>
za pomocą metody setInitializationExceptionHandler, aby określić, czy podczas inicjowania WorkManagera wystąpiły problemy. - Pomoce w wersji inline dla funkcji
OneTimeWorkRequest
iPeriodicWorkRequest
zostały przeniesione z funkcjiandroidx.work:work-runtime-ktx
do funkcjiandroidx.work:work-runtime
(I0010f, b/209145335). - Dodano pomocnicze metody
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
, aby umożliwić bezpośrednie tworzenie obiektówWorkQuery
. (b/199919736) (If48f2, b/199919736) - Dodano
getForegroundInfo
doWorker
. (Ic1ead) RxWorker
zarówno w przypadku RxJava 2, jak i RxJava 3 ma teraz metodęsetForeground
zwracającąCompletable
, którą można użyć zamiast metodysetForegroundInfoAsync
zwracającejListenableFuture
.RxWorker
zarówno w przypadku RxJava 2, jak i RxJava 3 ma metodęgetForegroundInfo
zwracającąSingle
, którą można użyć zamiast metodygetForegroundInfoAsync
zwracającejListenableFuture
. (b/203851459)- Ograniczenia można teraz tworzyć bezpośrednio zamiast używać funkcji
Constraints.Builder
, co jest wygodne dla użytkowników Kotlina. (Idc390, b/137568653) - Dodano możliwość sprawdzenia, czy
WorkManager
została zainicjalizowana. Dodaliśmy też nowy interfejs APIgetConfiguration()
dla programistów bibliotek, aby mogli uzyskać konfigurację, z którą zainicjowano interfejs APIWorkManager
. (I6eff3, b/212300336)
Poprawki błędów
- Rozwiązaliśmy problem z łatwym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie podprocesów w przypadku obciążenia. (I9686b, b/248111307)
- Dodaliśmy uprawnienie
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONS
w pakiecie SDK 33 lub nowszym. (Ie542e, b/238790278) - Rozpowszechnianie anulowań w
CoroutineScope
wListenableFuture
przy użyciususpendCancellableCoroutine
.
Wersja 2.8.0-rc01
7 grudnia 2022 r.
Element androidx.work:work-*:2.8.0-rc01
został zwolniony. Wersja 2.8.0-rc01 zawiera te commity.
Nowe funkcje
- Brak nowych funkcji w tej wersji. Jest to głównie aktualizacja wersji
Wersja 2.8.0-beta02
9 listopada 2022 r.
Element androidx.work:work-*:2.8.0-beta02
został zwolniony. Wersja 2.8.0-beta02 zawiera te commity.
Poprawki błędów
- Naprawiono metodę
equals
w funkcjiWorkInfo
, która wcześniej nie uwzględniała informacji o nowej generacji. (4977 cm³)
Wersja 2.8.0-beta01
5 października 2022 r.
Element androidx.work:work-*:2.8.0-beta01
został zwolniony. Wersja 2.8.0-beta01 zawiera te commity.
Poprawki błędów
- Rozwiązaliśmy problem z łatwym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie podprocesów w przypadku obciążenia. (I9686b, b/248111307)
Wersja 2.8.0-alpha04
7 września 2022 roku
Element androidx.work:work-*:2.8.0-alpha04
został zwolniony. Wersja 2.8.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodano kolumny
WorkerInfo.getGeneration()
iWorkerParameters.getGeneration()
, które zwracają generację pracownika. Pracownik ma wiele generacji, jeśli został zaktualizowany za pomocą funkcjiWorkManager.updateWork
lubWorkManager.enqueueUniquePeriodicWork
za pomocą funkcjiExistingPeriodicWorkPolicy.UPDATE
. Pamiętaj, że jeśli instancja robocza jest obecnie uruchomiona, ta metoda może zwrócić nowszą generację niż ta, która jest obecnie uruchomiona, jeśli podczas wykonywania instancji roboczej nastąpiła aktualizacja. (I665c5, b/219446409) (I128a9, b/219446409) - Dodano
InitializationExceptionHandler
, czyli sterownik wyjątków, który pozwala określić, czy podczas inicjowaniaWorkManager
wystąpiły problemy. (I061de)
Wersja 2.8.0-alpha03
10 sierpnia 2022 r.
Element androidx.work:work-*:2.8.0-alpha03
został zwolniony. Wersja 2.8.0-alpha03 zawiera te commity.
Nowe funkcje
- Dodano możliwość aktualizowania
WorkRequests
w nieinwazyjny sposób, zachowując pierwotny czas kolejkowania, łańcuchowanie itp. Więcej informacji znajdziesz w artykułachWorkManager.updateWork
iExistingPeriodicWorkPolicy.UPDATE
.
Zmiany w interfejsie API
- Dodano
WorkManager.updateWork
, aby zaktualizować pracę, zachowując jej pierwotny czas kolejkowania i łańcuchowanie.(I9a248, b/219446409) - Dodano użytkownika
ExistingPeriodicWorkPolicy.UPDATE
Te zasady umożliwiają aktualizację okresowej pracy za pomocą nazwy. Jest ona podobna do obecnej funkcjiREPLACE
, ale mniej inwazyjna: nie anuluje zadania, jeśli jest ono obecnie wykonywane, i zachowuje czas kolejkowania – początkowe opóźnienie i okres są obliczane na podstawie pierwotnego czasu kolejkowania, a nie czasu aktualizacji. UsługaREPLACE
została wycofana, aby zmniejszyć ryzyko pomylenia usługiREPLACE
z usługąUPDATE
, które mają bardzo podobne nazwy. Jeśli nadal chcesz zachować poprzednią semantykęREPLACE
, możesz użyć nowo dodanego elementuCANCEL_AND_REENQUEUE
, który jest identyczny z elementemREPLACE
. (I985ed, b/219446409) - Dodaj możliwość przechwytywania wyjątków dotyczących harmonogramu przez zdefiniowanie
SchedulingExceptionHandler
. (I033eb) - Pomoce w wersji inline dla funkcji
OneTimeWorkRequest
iPeriodicWorkRequest
zostały przeniesione z funkcjiandroidx.work:work-runtime-ktx
do funkcjiandroidx.work:work-runtime
(I0010f, b/209145335).
Poprawki błędów
- Dodano
@RequiresPermission
do interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w pakiecie SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
Wersja 2.8.0-alpha02
6 kwietnia 2022 roku
Element androidx.work:work-*:2.8.0-alpha02
został zwolniony. Wersja 2.8.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Ograniczenia można teraz tworzyć bezpośrednio zamiast za pomocą klasy Builder, co jest wygodne dla użytkowników Kotlina. (Idc390, b/137568653)
- Dodano możliwość sprawdzenia, czy
WorkManager
została zainicjalizowana. Dodaliśmy też nowy interfejs APIgetConfiguration()
dla programistów bibliotek, aby mogli uzyskać konfigurację, z którą zainicjowano interfejs APIWorkManager
. (I6eff3, b/212300336)
Wersja 2.8.0-alpha01
12 stycznia 2022 r.
Element androidx.work:work-*:2.8.0-alpha01
został zwolniony. Wersja 2.8.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Dodano pomocnicze metody
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
, które umożliwiają bezpośrednie tworzenie zapytania WorkQuery. (If48f2, b/199919736) - Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937).
- Dodano
getForegroundInfo
doWorker
. (Ic1ead) - Dodano pomocnicze metody
WorkQuery.fromIds
do tworzenia zapytań roboczych bezpośrednio z identyfikatorów. (Ie5bdf, b/199919736) - Metoda RxWorker ma teraz funkcję
setForeground
, która zwraca wartośćCompletable
. Można jej używać zamiast funkcjisetForegroundInfoAsync
, która zwraca wartośćListenableFuture
. (I85156) - W RxWorker dla RxJava 2 jest teraz metoda
getForegroundInfo
z wartością zwracanąSingle
, którą można użyć zamiast metodygetForegroundInfoAsync
z wartością zwracanąListenableFuture
. (I21c91, b/203851459) - W wersji RxWorker dla RxJava 3 dodano metodę
getForegroundInfo
, która zwraca wartośćSingle
. Można jej używać zamiast metodygetForegroundInfoAsync
, która zwraca wartośćListenableFuture
. (I1ca8a) - Metoda RxWorker ma teraz funkcję
setForeground
, która zwraca wartośćCompletable
. Można jej używać zamiast funkcjisetForegroundInfoAsync
, która zwraca wartośćListenableFuture
. (I992a3, b/203851459)
Poprawki błędów
- Rozpowszechnianie anulowań w
CoroutineScope
wListenableFuture
przy użyciususpendCancellableCoroutine
. (I77e63)
Wersja 2.7
Wersja 2.7.1
17 listopada 2021 r.
Element androidx.work:work-*:2.7.1
został zwolniony. Wersja 2.7.1 zawiera te commity.
Poprawki błędów
- Anulowania w
CoroutineScope
są propagowane doListenableFuture
, gdy używaszsuspendCancellableCoroutine
. (I77e63) - Wyjątek jest zgłaszany natychmiast, gdy opóźnione żądania pracy są oznaczone jako przyspieszone. bef1762
Wersja 2.7.0
13 października 2021 r.
Element androidx.work:work-*:2.7.0
został zwolniony. Wersja 2.7.0 zawiera te commity.
Ważne zmiany od wersji 2.6.0
WorkManager wprowadza nowy interfejs API
WorkRequest.Builder.setExpedited(...)
, który ułatwia stosowanie ograniczeń usługi na pierwszym planie w Androidzie 12.Gdy używasz
setExpedited(...)
, WorkManager deleguje zadania przyspieszone w JobSchedulerze od Androida 12, zapewniając jednocześnie zgodność wsteczną w poprzednich wersjach Androida przez delegowanie do usługi na pierwszym planie.
Wersja 2.7.0-rc01
29 września 2021 r.
Element androidx.work:work-*:2.7.0-rc01
został zwolniony. Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest identyczna z androidx.work:work-*:2.7.0-beta01
.
Wersja 2.7.0-beta01
1 września 2021 roku
Element androidx.work:work-*:2.7.0-beta01
został zwolniony. Wersja 2.7.0-beta01 zawiera te commity.
Nowe funkcje
- Zmniejsz współzawodnictwo SQLite w wielu procesach podczas inicjowania WorkManagera.
Zmiany w interfejsie API
- Usuń interfejsy API
@ExperimentalExpeditedWork
, ponieważ interfejsy API platformy na Androida 12 (S) są stabilne. (aosp/1792806)
Poprawki błędów
- Udostępnij lepszy komunikat o błędzie dla pracowników przyspieszonych, którzy nie implementują
getForegroundInfoAsync()
. (aosp/1809376)
Wersja 2.7.0-alpha05
21 lipca 2021 r.
Element androidx.work:work-*:2.7.0-alpha05
został zwolniony. Wersja 2.7.0-alpha05 zawiera te commity.
Ta wersja zawiera też poprawki błędów z wersji WorkManagera 2.6.0-beta02
.
Wersja 2.7.0-alpha04
2 czerwca 2021 r.
Element androidx.work:work-*:2.7.0-alpha04
został zwolniony.
Ta wersja zawiera też zmiany z wersji 2.6.0-beta01.
Zmiany w interfejsie API
- Właściwość
ListenableWorker.setForegroundAsync()
nie jest już wycofana. - W miarę możliwości zalecamy korzystanie z interfejsu
WorkRequest.Builder.setExpedited(...)
API. Aby lepiej obsługiwać sytuacje, w których aplikacja nie jest objęta ograniczeniami usługi na pierwszym planie, deweloperzy mogą korzystać z interfejsu APIListenableWorker.setForegroundAsync()
. - Jeśli wywołanie
ListenableWorker.setForegroundAsync()
nastąpi, gdy aplikacja podlega ograniczeniom usługi na pierwszym planie, zostanie rzucony wyjątek ForegroundServiceStartNotAllowedException.
Poprawki błędów
- Gdy przyspieszone zadania zostaną ponownie zaplanowane, nie będą już przyspieszone. Stają się one zwykłymi zadaniami.
Wersja 2.7.0-alpha03
21 kwietnia 2021 r.
Element androidx.work:work-*:2.7.0-alpha03
został zwolniony. Wersja 2.7.0-alpha03 zawiera te commity.
Nowe funkcje
Z WorkManagera
2.6.0-alpha02
: dodaje obsługę pracowników, którzy mogą działać w dowolnym procesie. (Iaf200)Zmiany w WorkManagerze
2.6.0-alpha02
: dodanoRemoteCoroutineWorker
, czyli implementacjęRemoteListenableWorker
, która może się łączyć z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- W WorkManagerze
2.6.0-alpha02
:dodaliśmy obsługę ograniczenia sieciTEMPORARILY_UNMETERED
. (I08d5e) - Z WorkManagera
2.6.0-alpha02
: obsługa instancji roboczych w wielu procesach dlasetProgressAsync()
. (Ib6d08) - W WorkManager
2.6.0-alpha02
:ustawWorkManagerInitializer
jako publiczne, aby inneandroidx.startup.Initializer
mogły ich używać jako zależności. (I5ab11)
Wersja 2.7.0-alpha02
10 marca 2021 r.
Element androidx.work:work-*:2.7.0-alpha02
został zwolniony. Wersja 2.7.0-alpha02 zawiera te commity.
Poprawki błędów
- Ujawnienie zmienności
PendingIntent
, aby naprawić błąd powodujący awarię podczas kierowania na Androida 12. (b/180884673)
Wersja 2.7.0-alpha01
18 lutego 2021 r.
Element androidx.work:work-*:2.7.0-alpha01
został zwolniony. Wersja 2.7.0-alpha01 zawiera te commity.
Nowe funkcje
WorkManager wprowadza nowy interfejs API
WorkRequest.Builder.setExpedited(...)
, który uwzględnia ograniczenia usług na pierwszym planie w Androidzie 12.Aplikacje nie mogą już uruchamiać usługi na pierwszym planie, gdy działają w tle. Aby lepiej obsługiwać długotrwałe zadania, które były wcześniej powiązane z cyklem życia usługi na pierwszym planie, aplikacje mogą oznaczać
WorkRequest
jako przyspieszone.Ten interfejs API zastępuje interfejsy API
setForegroundAsync(...)
/setForeground(...)
, które zostały wycofane.Gdy używasz
setExpedited(...)
, WorkManager deleguje zadania przyspieszone doJobScheduler
, począwszy od Androida 12, zapewniając jednocześnie zgodność wsteczną w poprzednich wersjach Androida przez delegowanie do usług na pierwszym planie.
Zmiany w interfejsie API
- Dodano obsługę przyspieszonych
WorkRequest
.
Wersja 2.6.0
Wersja 2.6.0
1 września 2021 roku
Element androidx.work:work-*:2.6.0
został zwolniony. Wersja 2.6.0 zawiera te commity.
Ważne zmiany od wersji 2.5.0
WorkManager używa teraz funkcji
androidx.startup
do inicjowania WorkManagera. Jeśli do inicjowania WorkManagera w przeszłości używanotools:node="remove"
ContentProvider
, wykonaj te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />
Dodano obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200)
Dodano klasę
RemoteCoroutineWorker
, która jest implementacją klasy RemoteListenableWorker i może się łączyć z procesem zdalnym. (I30578)
Wersja 2.6.0-rc01
4 sierpnia 2021 r.
Element androidx.work:work-*:2.6.0-rc01
został zwolniony. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest identyczna z androidx.work:work-*:2.6.0-beta02
.
Wersja 2.6.0-beta02
21 lipca 2021 r.
Element androidx.work:work-*:2.6.0-beta02
został zwolniony. Wersja 2.6.0-beta02 zawiera te commity.
Poprawki błędów
RemoteWorkManager
jest teraz prawidłowo odłączany odRemoteWorkManagerService
, co pozwalaRemoteWorkManagerService
na prawidłowe oczyszczanie. aosp/1730694RemoteListenableWorker
jest teraz prawidłowo odłączany odRemoteWorkerService
, co pozwalaRemoteWorkerService
prawidłowo oczyszczać. aosp/1743817ForceStopRunnable
działa teraz tylko w ramach głównego procesu aplikacji. Jest to optymalizacja, która zapobiega 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.
Element androidx.work:work-*:2.6.0-beta01
został zwolniony. Wersja 2.6.0-beta01 zawiera te commity.
Ta wersja zawiera drobne ulepszenia dokumentacji. Ta wersja jest w dużej mierze identyczna z 2.6.0-alpha02.
Wersja 2.6.0-alpha02
21 kwietnia 2021 r.
Element androidx.work:work-*:2.6.0-alpha02
został zwolniony. Wersja 2.6.0-alpha02 zawiera te commity.
Nowe funkcje
Dodaje obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200)
Dodano
RemoteCoroutineWorker
, czyli implementacjęRemoteListenableWorker
, która może się łączyć z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- Dodaliśmy obsługę ograniczenia sieci
TEMPORARILY_UNMETERED
. (I08d5e) - Obsługa instancji roboczych w wielu procesach w przypadku
setProgressAsync()
. (Ib6d08) - Udostępnij
WorkManagerInitializer
, aby inneandroidx.startup.Initializer
mogły z nich korzystać jako zależności. (I5ab11)
Wersja 2.6.0-alpha01
24 marca 2021 r.
Element androidx.work:work-*:2.6.0-alpha01
został zwolniony. Wersja 2.6.0-alpha01 zawiera te commity.
Nowe funkcje
WorkManager
używa terazandroidx.startup
do inicjowania WorkManager. Wcześniej robiła to funkcjaandroidx.work.impl.WorkManagerInitializer
. (aosp/1608813)Jeśli w przeszłości do inicjowania cyklu życia procesu używany był element
tools:node="remove"
, a obecnie używasz elementuContentProvider
, wykonaj te czynności.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(lub)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Zmiany w interfejsie API
- Dodaj interfejs API
Result.getOutputData()
, który zwracaoutputData
obiektu ListenableWorker. (Ie51e3)
Poprawki błędów
- Dodaj obejście błędu OEM, który powoduje wyjątek
SecurityException
podczas korzystania z interfejsów APIAlarmManager
. (aosp/1587518)
Wersja 2.5.0
Wersja 2.5.0
27 stycznia 2021 r.
Element androidx.work:work-*:2.5.0
został zwolniony. Wersja 2.5.0 zawiera te zatwierdzenia.
Najważniejsze zmiany od wersji 2.4.0
- Nowy artefakt
:work:work-multiprocess
dla aplikacji, które korzystają z wielu procesów. Dzięki temu zwiększysz wydajność, ponieważ zaplanowanie zadania będzie odbywać się w ramach jednego procesu.- Aby użyć
work-multiprocess
, zdefiniuj zależność od:implementation "androidx.work:work-multiprocess:2.5.0"
- Wyznacz proces główny za pomocą metody Configuration.Builder.setDefaultProcessName(String).
- Korzystając z
work-multiprocess
, możesz też używać Menedżera pracy zdalnej do zarządzaniaWorkRequest
. RemoteWorkManager zawsze dociera do wyznaczonego procesu. Planista w procesie działa też w ramach wyznaczonego procesu.
- Aby użyć
- Czasami
ActivityManager
nie może utworzyć instancjiJobService
, aby rozpocząć zadanie. Spowoduje to, że zadanie zostanie po cichu usunięte z powodu błędu platformy.WorkManager
zapewnia teraz, że podczas inicjowaniaApplication
za pomocą zadań uzgadniających są tworzone zadania zapasowe dla każdegoWorkRequest
. Dzięki temu znacznie poprawia się niezawodność wykonywania zadań. (b/172475041, aosp/1489577) WorkManager
ogranicza wzrost bazy danych, skracając czas buforowania, w którymWorkRequest
są śledzone po zakończeniuWorkRequest
. Czas trwania wynosił7
dni. Został on skrócony do1
dni plus czas określony w parametrze keepResultsForAtLeast. (aosp/1419708)- Aby ułatwić testowanie, w bibliotece
TestListenableWorkerBuilder
dodano obsługę klasy kwalifikowanej, która rozszerza klasęListenableWorker
. (aosp/1443299, b/169787349) - Inspektor WorkManager jest teraz dostępny w Android Studio Arctic Fox.
Wersja 2.5.0-rc01
13 stycznia 2021 r.
Element androidx.work:work-*:2.5.0-rc01
został zwolniony. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy błąd polegający na tym, że po zaktualizowaniu elementów za pomocą interfejsu API opartego na interfejsie
WorkQuery
nieprawidłowa była wartość atrybutugetWorkInfosLiveData
. (aosp/1540566, b/173769028) - Naprawiono błąd, który w niektórych rzadkich przypadkach powodował, że transakcje bazy danych nie były oznaczane jako udane. Może to powodować problemy na niektórych urządzeniach Motorola. (aosp/1535368, b/175944460)
- Naprawiono błąd polegający na ignorowaniu
NoSuchElementException
podczas próby odłączenia od martwego procesu. (aosp/1530589) - Ulepsz
ConstraintTrackingWorker
, aby zatrzymywaćListenableWorker
tylko wtedy, gdy nie został jeszcze zatrzymany. (aosp/1496844, b/172946965) - Zaktualizuj biblioteki androidx.work, aby były przeznaczone dla Java 8 (Ibd2f2).
Wersja 2.5.0-beta02
2 grudnia 2020 r.
Element androidx.work:work-*:2.5.0-beta02
został zwolniony. Wersja 2.5.0-beta02 zawiera te commity.
Poprawki błędów
- Naprawiono błąd w
androidx.work:work-multiprocess
, w którym WorkManager przypadkowo blokował wątek wywołania podczas próby powiązania z wyznaczonym procesem. (aosp/1475538) - Naprawiliśmy błąd polegający na tym, że
PeriodicWorkRequest
nie były prawidłowo uzgadniane. (b/172475041, aosp/1489577) - Dodano obejście błędu platformy podczas zatrzymywania usługi na pierwszym planie podczas korzystania z interfejsów API
setForeground*
. (b/170924044, aosp/1489901)
Wersja 2.5.0-beta01
28 października 2020 r.
Element androidx.work:work-*:2.5.0-beta01
został zwolniony. Wersja 2.5.0-beta01 zawiera te commity.
Nowe funkcje
WorkManager
automatycznie ogranicza liczbęWorkRequest
, które mogą być pobierane przez algorytm szeregowania w ramach procesu. Prośby są nadal wykonywane w kolejności FIFO. (aosp/1455228)WorkManager
próbuje przywrócić dane, gdy baza danych aplikacji jest w złym stanie. (aosp/1463103)
Poprawki błędów
- Gdy
ListenableWorker
zostaną przerwane, natychmiast oznacz je jakoENQUEUED
, aby można je było ponownie zaplanować. (aosp/1455618, b/170273988)
Wersja 2.5.0-alpha03
14 października 2020 r.
Element androidx.work:work-*:2.5.0-alpha03
został zwolniony. Wersja 2.5.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- W przypadku typów
TestListenableWorkerBuilder
iTestWorkerBuilder
nie używaj typów nieprzetworzonych. (I883ad, b/169787349)
Poprawki błędów
- Aby określić nazwę domyślnego procesu aplikacji, użyj polecenia
ApplicationInfo
. (b/168716641, aosp/1429950) - Popraw reguły widoczności w przypadku
RemoteWorkManager
iRemoteWorkContinuation
. Te interfejsy API nie są już oznaczone jako@Restricted
. (aosp/1432091) - Napraw reguły Proguarda dotyczące
:work:work-multiprocess
. (aosp/1432091) - Poprawa cyklu życia powiadomień w przypadku długotrwałych procesów związanych z usługą na pierwszym planie. (b/168502234, aosp/1431331)
Wersja 2.5.0-alpha02
16 września 2020 roku
Element androidx.work:work-*:2.5.0-alpha02
został zwolniony. Wersja 2.5.0-alpha02 zawiera te commity.
Nowe funkcje
- Dodaj interfejs API do WorkQuery, aby móc używać zapytań
id
do zapytańWorkInfo
. (aosp/1412372, b/157335295) - WorkManager lepiej obsługuje aplikacje, które korzystają z wielu procesów, dzięki nowemu artefaktowi (
androidx.work:work-multiprocess:*
). Ten nowy artefakt pomaga rozwiązać kilka problemów, z którymi borykają się duże aplikacje, w tym:- WorkManager musi być zwykle inicjowany w ramach każdego procesu aplikacji. To nie jest dobre, ponieważ zwiększa to współzawodnictwo SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, które można wykorzystać do określenia głównego procesu aplikacji za pomocą funkcji
Configuration#setDefaultProcessName(processName)
.processName
to pełna nazwa procesu, która wygląda jakpackageName:processName
(np.com.example:remote
). - Zestaw nowych interfejsów API:
RemoteWorkManager
iRemoteWorkContinuation
doenqueue
,cancel
iquery
. Te interfejsy API nie obejmują wariantówLiveData
, aby uniknąć kolizji SQLite w wielu procesach. Wszystkie wywołania funkcjienqueue
,cancel
iquery
są przekierowywane do procesu aplikacjiprimary
za pomocą AIDL i zwracają płynnąListenableFuture
. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- WorkManager musi być zwykle inicjowany w ramach każdego procesu aplikacji. To nie jest dobre, ponieważ zwiększa to współzawodnictwo SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, które można wykorzystać do określenia głównego procesu aplikacji za pomocą funkcji
Zmiany w interfejsie API
- WorkManager usuwa teraz ukończone
WorkRequest
, które nie mają niepełnych zależności, bardziej agresywnie. Czas trwania bufora zmienił się z7
dni na1
dzień. (aosp/1419708)
Poprawki błędów
- WorkManager automatycznie uzgadnia zadania, dzięki czemu zadania
WorkRequest
iJobScheduler
są zsynchronizowane po zainicjowaniu zadaniaWorkManager
. (aosp/1412794, b/166292069)
Wersja 2.5.0-alpha01
19 sierpnia 2020 r.
Element androidx.work:work-*:2.5.0-alpha01
został zwolniony. Wersja 2.5.0-alpha01 zawiera te commity.
Nowe funkcje
- zmiany wewnętrznych interfejsów API, które pozwolą nam w przyszłości udostępniać lepsze narzędzia do obsługi
WorkManager
; Bądź na bieżąco z dodatkowymi informacjami.
Poprawki błędów
- Obsługa
SecurityException
podczas śledzenia stanu sieci na niektórych urządzeniach. (aosp/1396969)
Darowizna zewnętrzna
- Poprawiono dokumentację
ArrayCreatingInputMerger
(Zac Sweers, github/43).
Wersja 2.4.0
Wersja 2.4.0
22 lipca 2020 r.
Element androidx.work:work-*:2.4.0
został zwolniony. Wersja 2.4.0 zawiera te zatwierdzenia.
Najważniejsze zmiany od wersji 2.3.0
- Planista
WorkManager
jest teraz bardziej wydajny. Wcześniej w ramach tej opcjiScheduler
brano pod uwagę tylko wykonywanie pracy, która nie została opóźniona i dla której spełniono ograniczenia. Obecnie planista w trakcie przetwarzania śledziWorkRequest
, które mogą zostać wykonane w przyszłości, w tym żądania pracy okresowej. FunkcjaScheduler
w trakcie przetwarzania nie uwzględnia też limitów harmonogramowania (ale nadal jest ograniczona do rozmiaruExecutor
używanego przez WorkManager). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej poleceń WorkRequest, gdy jest na pierwszym planie. Aby zarządzać wykonywaniem opóźnionych zadań na pierwszym planie,WorkManager
wprowadza też nową konfigurowalną opcjęRunnableScheduler
. (aosp/1185778) - WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - Dodaliśmy możliwość wysyłania zapytań o
WorkInfo
za pomocąWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania dotycząceWorkInfo
z użyciem kombinacji kilku atrybutów. Więcej informacji znajdziesz w artykułachWorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
iWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230, b/143847546) Dodaj możliwość żądania informacji diagnostycznych z
WorkManager
za pomocą:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Zawiera on wiele przydatnych informacji, w tym:
- WorkRequests, które zostały ukończone w ciągu ostatnich 24 godzin.
- WorkRequests, które są obecnie uruchamiane.
- Zaplanowane zadania. (aosp/1235501)
Dodaj
ExistingWorkPolicy.APPEND_OR_REPLACE
, który jest podobny doAPPEND
, ale zastępuje łańcuch, który anulował lub nie spełnił wymagań wstępnych. (b/134613984, aosp/1199640)Dodano możliwość dodawania niestandardowego
RunnableScheduler
do śledzenia poleceń pracy, które należy wykonać w przyszłości. Jest on używany przez Schedulera w ramach procesu. (aosp/1203944)Dodanie obsługi dynamicznego dodawania fabryk do delegowania, gdy używasz
DelegatingWorkerFactory
. (b/156289105, aosp/1309745)Dopasuj śledzenie ograniczeń
BATTERY_NOT_LOW
do platformy. (aosp/1312583)Do określania nazwy procesu harmonogram w ramach procesu korzysta teraz z lepszych interfejsów API. Jest to przydatne, aby lepiej obsługiwać aplikacje korzystające z wielu procesów. (aosp/1324732)
Nowe reguły Lint, które nakładają:
- Korzystanie z właściwych
foregroundServiceType
podczas korzystania z interfejsów APIsetForegroundAsync()
. (b/147873061, aosp/1215915) - Określanie identyfikatorów JobScheduler, których WorkManager powinien używać podczas bezpośredniego korzystania z interfejsów JobService. aosp/1223567
- Dodano nową regułę lint, która zapewnia, że implementacje
ListenableWorker
są terazpublic
, gdy używasz domyślnejWorkerFactory
. (aosp/1291262)
- Korzystanie z właściwych
Wywołania do
setForegroundAsync()
, które nie zostaną zakończone przed zakończeniemListenableWorker
, będą teraz sygnalizowane za pomocąIllegalStateException
w zwróconymListenableFuture
. (aosp/1262743)Rozwiązanie problemu polegającego na tym, że
ForegroundService
nie jest zatrzymywany po przerwaniu działaniaWorker
na pierwszym planie. (b/155579898, aosp/1302153)Naprawiono błąd, który powodował, że
WorkManager
próbował wykonać wiele instancjiWorker
powiązanych z usługą na pierwszym planie (b/156310133, aosp/1309853).
Wersja 2.4.0-rc01
24 czerwca 2020 r.
Element androidx.work:work-*:2.4.0-rc01
został zwolniony. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Do określania nazwy procesu harmonogram w ramach procesu korzysta teraz z lepszych interfejsów API. Jest to przydatne, aby lepiej obsługiwać aplikacje korzystające z wielu procesów. (aosp/1324732)
Wersja 2.4.0-beta01
20 maja 2020 r.
androidx.work:work-gcm:2.4.0-beta01
, androidx.work:work-runtime:2.4.0-beta01
, androidx.work:work-runtime-ktx:2.4.0-beta01
, androidx.work:work-rxjava2:2.4.0-beta01
i androidx.work:work-testing:2.4.0-beta01
są zwolnione. Wersja 2.4.0-beta01 zawiera te commity.
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że
ForegroundService
nie jest zatrzymywany po przerwaniu działaniaWorker
na pierwszym planie. (b/155579898, aosp/1302153) - Naprawiono błąd, który powodował, że
WorkManager
próbował wykonać wiele instancjiWorker
powiązanych z usługą na pierwszym planie (b/156310133, aosp/1309853). - Dodanie obsługi dynamicznego dodawania fabryk do delegowania, gdy używasz
DelegatingWorkerFactory
. (b/156289105, aosp/1309745) - Dopasuj śledzenie ograniczeń
BATTERY_NOT_LOW
do platformy. (aosp/1312583)
Wersja 2.4.0-alpha03
29 kwietnia 2020 r.
Element androidx.work:work-*:2.4.0-alpha03
został zwolniony. Wersja 2.4.0-alpha03 zawiera te commity.
Nowe funkcje
- WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - Dodano nową regułę lint, która zapewnia, że implementacje
ListenableWorker
są terazpublic
, gdy używasz domyślnejWorkerFactory
. (aosp/1291262)
Zmiany w interfejsie API
- Wywołanie funkcji
setProgressAsync()
po zakończeniu wykonywania funkcjiListenableWorker
spowoduje teraz przekazanie sygnałuException
za pomocą funkcjiListenableFuture
. (aosp/1285494) - Element
WorkQuery.Builder
jest teraz oznaczony jakofinal
. (aosp/1275037) WorkQuery.Builder
metody fabrycznewithStates
,withTags
iwithUniqueWorkNames
zostały odpowiednio przemianowane nafromStates
,fromTags
ifromUniqueWorkNames
. (aosp/1280287)
Poprawki błędów
- Podczas śledzenia stanu sieci urządzenia ignoruj wartości
SecurityException
. (b/153246136, aosp/1280813)
Wersja 2.4.0-alpha02
1 kwietnia 2020 r.
Element androidx.work:work-*:2.4.0-alpha02
został zwolniony. Wersja 2.4.0-alpha02 zawiera te komity.
Nowe funkcje
- Dodano nową regułę Lint, która ostrzega, gdy
WorkRequest
wymaga zarównoConstraints.setRequiresCharging(...)
, jak iConstraints.setRequiresDeviceIdle(...)
. Niektóre urządzenia nigdy nie są ładowane i nie są nieaktywne w tym samym czasie. W związku z tym takie żądania będą się wykonywać rzadziej niż oczekiwano. (aosp/1253840)
Zmiany w interfejsie API
Dodaliśmy możliwość wysyłania zapytań o
WorkInfo
za pomocąWorkQuery
. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania dotycząceWorkInfo
z użyciem kombinacji kilku atrybutów. Więcej informacji znajdziesz w artykułachWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
iWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)Wywołania do
setForegroundAsync()
, które nie zostaną zakończone przed zakończeniemListenableWorker
, będą teraz sygnalizowane za pomocąIllegalStateException
w zwróconymListenableFuture
. (aosp/1262743)
Poprawki błędów
- Naprawiono regułę lint, która sprawdza nieprawidłowe długości interwałów dla
PeriodicWorkRequest
. (aosp/1254846, b/152606442)
Wersja 2.4.0-alpha01
4 marca 2020 r.
Element androidx.work:work-*:2.4.0-alpha01
został zwolniony. Wersja 2.4.0-alpha01 zawiera te commity.
Nowe funkcje
Planista
WorkManager
jest teraz bardziej wydajny. Wcześniej harmonogram w trakcie wykonywania brał pod uwagę tylko wykonywanie zadań, które nie były opóźnione i których ograniczenia zostały spełnione. Obecnie harmonogram sterujący w trakcie przetwarzania śledziWorkRequest
, które mogą zostać wykonane w przyszłości, w tymPeriodicWorkRequest
. Scheduler w ramach procesu nie przestrzega limitów harmonogramowania (ale nadal jest ograniczony do rozmiaruExecutor
używanego przez WorkManager). Oznacza to, że aplikacja może teraz wykonywać znacznie więcejWorkRequest
, gdy działa na pierwszym planie. (aosp/1185778)Dodano możliwość żądania informacji diagnostycznych z WorkManagera za pomocą
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
. Zawiera on wiele przydatnych informacji, w tym:- WorkRequests, które zostały ukończone w ciągu ostatnich 24 godzin.
- WorkRequests, które są obecnie uruchamiane.
- Zaplanowane zadania. (aosp/1235501)
Nowe reguły Lint, które nakładają:
- Korzystanie z właściwych
foregroundServiceType
podczas korzystania z interfejsów APIsetForegroundAsync()
. (b/147873061, aosp/1215915) - Określanie identyfikatorów
JobScheduler
, którychWorkManager
powinien używać podczas bezpośredniego korzystania z interfejsów APIJobService
. (aosp/1223567)
- Korzystanie z właściwych
Zmiany w interfejsie API
Dodaj
ExistingWorkPolicy.APPEND_OR_REPLACE
, która jest podobna doAPPEND
, ale zastępuje łańcuch, który anulował lub nie spełnił wymagań wstępnych. (b/134613984, aosp/1199640)Umożliw dodanie niestandardowego
RunnableScheduler
do śledzeniaWorkRequest
, które muszą zostać wykonane w przyszłości. Jest on używany przez Schedulera w ramach procesu. (aosp/1203944)
Poprawki błędów
- Funkcja
setProgress()
w funkcjiRxWorker
została wycofana, ponieważ wcześniej zwracała wartośćSingle<Void>
, która jest nieprawidłowym typem. Dodaliśmy nowy interfejs APIsetCompletableProgress()
, który zamiastCompletable
zwracaCompletable
. Dodaliśmy też nowe reguły Lint, które ułatwiają migrację na nowe interfejsy API. (b/150080946, aosp/1242665)
Wersja 2.3.4
Wersja 2.3.4
18 marca 2020 r.
Element androidx.work:work-*:2.3.4
został zwolniony. Wersja 2.3.4 zawiera te commity.
Poprawki błędów
- Usunęliśmy błąd, który powodował uruchamianie wielu instancji długo działających
Worker
po przekroczeniu 10-minutowego okna wykonywania. (aosp/1247484, b/150553353) - Rozwiązanie problemu z lintem WorkManagera
IssueRegistry
. Dziękujemy @ZacSweers z Slacka za Twój wkład. (aosp/1217923)
Wersja 2.3.3
Wersja 2.3.3
4 marca 2020 r.
Element androidx.work:work-*:2.3.3
został zwolniony. Wersja 2.3.3 zawiera te commity.
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że jeśli
Worker
zostało przerwane, nie było ono ponownie planowane. (b/150325687, aosp/1246571)
Wersja 2.3.2
Wersja 2.3.2
19 lutego 2020 r.
androidx.work:work-*:2.3.2
zostały wydane. Wersja 2.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązano problem, który w rzadkich przypadkach powodował, że WorkManager przekraczał limit 100 zadań w JobSchedulerze. (aosp/1226859, b/149092520)
- Poprawka dotycząca warunków wyścigu w ConstraintControllers. (aosp/1220100)
- Ulepszony cykl zarządzania usługami na pierwszym planie w przypadku długotrwałych procesów. (aosp/1226295)
- Ulepszono zarządzanie anulowaniem powiadomień w przypadku długotrwałych zadań wykonywanych przez pracowników. (aosp/1228346)
Wersja 2.3.1
Wersja 2.3.1
5 lutego 2020 r.
Element androidx.work:work-*:2.3.1
został zwolniony. Wersja 2.3.1 zawiera te zatwierdzenia:
Poprawki błędów
- Lepsze zarządzanie cyklem życia
Notification
w przypadku długotrwałych procesówWorker
, które działają, gdy aktywny jest procesService
na pierwszym planie. (aosp/1218539, b/147249312) WorkManager
zależy teraz od stabilnej wersjiandroidx.sqlite:sqlite-framework:2.1.0
. (aosp/1217729)- Dodano reguły lint, aby zapewnić, że
foregroundServiceType
jest określony wAndroidManifest.xml
, gdy używaszforegroundServiceType
wForegroundInfo
. (aosp/1214207, b/147873061)
Wersja 2.3.0
Wersja 2.3.0
22 stycznia 2020 r.
androidx.work:work-*:2.3.0
jest publikowany bez zmian od 2.3.0-rc01
. Wersja 2.3.0 zawiera te zatwierdzenia:
Ważne zmiany od wersji 2.2.0
- Obsługa długich lub ważnych zadań za pomocą
ListenableWorker#setForegroundAsync()
. - Obsługa postępu instancji roboczej za pomocą
ListenableWorker#setProgressAsync()
. - WorkManager zawiera teraz dodatkowe reguły lint jako część biblioteki, co pomaga w wczesnej identyfikacji błędów.
Wersja 2.3.0-rc01
8 stycznia 2020 r.
Element androidx.work:work-*:2.3.0-rc01
został zwolniony. Wersja 2.3.0-rc01 zawiera te zatwierdzenia:
Ta wersja jest identyczna z 2.3.0-beta02
.
Poprawki błędów
- Element
work-testing
definiuje teraz zależnośćapi
od elementuwork-runtime-ktx
. (aosp/1194410)
Wersja 2.3.0-beta02
18 grudnia 2019 r.
Element androidx.work:work-*:2.3.0-beta02
został zwolniony. Wersja 2.3.0-beta02 zawiera te zatwierdzenia:
Nowe funkcje
- Dodaliśmy lepszy komunikat o błędzie w przypadku nieodwracalnych wyjątków SQLite. (aosp/1185777)
- Dodano regułę lint, która zapewnia, że dostawca treści
androidx.work.impl.WorkManagerInitializer
zostanie usunięty zAndroidManifest.xml
podczas inicjalizacji na żądanie. (aosp/1167007) - Dodano ostrzeżenie o błędach, gdy
enqueue()
jest używane zamiastPeriodicWorkRequest
zamiastenqueueUniquePeriodicWork()
. (aosp/1166032)
Zmiany w interfejsie API
- Funkcja
ForegroundInfo
wymaga teraz określenianotificationId
, która ma być używana podczas korzystania z funkcjiListenableWorker.setForegroundAsync()
. To jest zmiana powodująca niezgodność. Dzięki temu możesz równolegle uruchamiać wiele długotrwałych procesów.Worker
WorkManager
lepiej zarządza też czasem życia podanychNotification
. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Poprawki błędów
- Naprawiliśmy błąd w implementacji AlarmManager, który powodował, że alarmy nie były prawidłowo usuwane. (aosp/1156444)
- Rozwiązaliśmy błąd polegający na tym, że pusta lista
WorkRequest
powodowała tworzenie nieprawidłowego ciąguWorkContinuation
. (b/142835274, aosp/1157051)
Zmiany w zależnościach
- WorkManager używa teraz Room 2.2.2.
Wersja 2.3.0-beta01
20 listopada 2019 r.
Element androidx.work:work-*:2.3.0-beta01
został zwolniony. Wersja 2.3.0-beta01 zawiera te commity:
Nowe funkcje
- Dodano nową regułę lint, która zapobiega błędom programisty spowodowanym nieprawidłową implementacją
androidx.work.Configuration.Provider
podczas inicjalizacji na żądanie. aosp/1164559
Wersja 2.3.0-alpha03
23 października 2019 r.
Element androidx.work:work-*:2.3.0-alpha03
został zwolniony. Wersja 2.3.0-alpha03 zawiera te commity
Nowe funkcje
- Dodano interfejs API
WorkManager.createCancelPendingIntent()
, który ułatwia anulowanieWorkRequest
bez konieczności rejestrowania kolejnego komponentu wAndroidManifest.xml
. Ten interfejs API ułatwia anulowanieWorkRequest
z poziomuNotification
. Spodziewamy się, że będzie to połączone z nowymi interfejsami API na pierwszym planie w wersji 2.3.0. - WorkManager zależy teraz od wersji
androidx.room:*:2.2.0
stabilnej.
Zmiany w interfejsie API
- Zmieniliśmy nazwę interfejsu
ForegroundInfo.getNotificationType()
naForegroundInfo.getForegroundServiceType()
, aby zachować spójność z interfejsami API platformy. (b/142729893, aosp/1143316)
Poprawki błędów
- Naprawiono błąd spowodowany niepotrzebnym wywołaniem funkcji
setTransactionSuccessful()
poza transakcją. Dzieje się tak w przypadku rzadkich migracji. (b/142580433, aosp/1141737)
Wersja 2.3.0-alpha02
9 października 2019 r.
Element androidx.work:work-*:2.3.0-alpha02
został zwolniony. Wersja 2.3.0-alpha02 zawiera te commity
Nowe funkcje
- WorkManager obsługuje teraz długotrwałe lub ważne zadania, które powinny być utrzymywane przez system operacyjny. Więcej informacji znajdziesz w artykule
ListenableWorker#setForegroundAsync()
(lubCoroutineWorker#setForeground()
w przypadku języka Kotlin). (aosp/1133636)
Zmiany w interfejsie API
- Interfejs API
containsKey
w wersjiData
został przemianowany nahasKeyWithValueOfType
. Zmieniono też nazwę odpowiedniej metody rozszerzenia w bibliotecektx
. (b/141916545)
Poprawki błędów
- WorkManager przydziela pracę w sposób sprawiedliwy, gdy liczba
WorkRequest
oczekujących w kole zadań zbliża się do limitów harmonogramowania. (aosp/1105766) - WorkManager wywołuje
ListenableWorker#onStopped()
tylko wtedy, gdy zadanie nie zostało jeszcze ukończone. (b/140055777) - WorkManager usuwa teraz informacje o postępach, gdy zadanie zostanie przerwane lub osiągnie stan końcowy. (aosp/1114572)
Data
ma teraz znacznie bardziej przydatną reprezentacjętoString()
. (b/140945323)Data
ma teraz lepszą metodęequals()
. Obsługuje też typydeepEquals
iArray
. (b/140922528)- WorkManager przechowuje teraz swoją wewnętrzną bazę danych i pliki z ustawieniami w katalogu bez kopii zapasowej. (b/114808216)
Wersja 2.3.0-alpha01
22 sierpnia 2019 r.
Element androidx.work:work-*:2.3.September 5, 20190-alpha01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
ListenableWorker
mogą teraz ustawiać postęp za pomocą interfejsu APIsetProgressAsync()
. Dodano też odpowiadający interfejs APIsuspend
w interfejsiesetProgress
w przeglądarceCoroutineWorker
i interfejs APIsetProgress
w przeglądarceRxWorker
, który zwraca wartośćSingle<Void>
. Dzięki tym nowym interfejsom API pracownicy mogą przekazywać informacje o postępach za pomocą interfejsuWorkInfo
, który ma odpowiedni interfejs APIgetProgress
. (b/79481554)Data
ma interfejs APIcontainsKey()
, który można wykorzystać do sprawdzenia, czy dane wejściowe doWorker
mają klucze o oczekiwanym typie. (b/117136838)- Obiekt
Data
można teraz serializować za pomocą funkcjiData.toByteArray()
iData.fromByteArray()
. Pamiętaj, że w przypadkuData
nie ma gwarancji wersji, dlatego nie należy trwało przechowywać tego tokena ani używać go do komunikacji między aplikacjami. Można ich używać tylko w różnych procesach tej samej aplikacji. - Dodano możliwość określania
InputMergerFactory
za pomocąConfiguration.setInputMergerFactory
. (b/133273159)
Zmiany w interfejsie API
- WorkManager zwróci wystąpienie
IllegalStateException
, jeśliWorkerFactory
zwróci wystąpienieListenableWorker
, które zostało wcześniej wywołane. (b/139554406) - Aktualizacje dokumentacji dotyczące anulowania
ListenableFuture
i wywołania zwrotnegoonStopped()
wListenableWorker
. (b/138413671)
Poprawki błędów
- Scheduler w trakcie przetwarzania ignoruje teraz
WorkRequest
z ograniczeniemidle
. Te prośby są teraz odbierane przezJobScheduler
tylko wtedy, gdy urządzenie jest rzeczywiścieidle
. (aosp/1089779) TestScheduler
używa teraz prawidłowo określonego interfejsuExecutor
dla wewnętrznego wykonawcy zadań w testach. (aosp/1090749)
Wersja 2.2.0
Wersja 2.2.0
15 sierpnia 2019 r.
Element androidx.work:work-*:2.2.0
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Ta wersja jest identyczna z androidx.work:work-*:2.2.0-rc01
.
Ważne zmiany w wersji 2.2.0 w porównaniu z 2.1.0
androidx.work:work-gcm:2.2.0
to nowy element Maven, który obsługuje używanie GCMNetworkManager jako harmonogramisty, gdy Usługi Google Play są dostępne na poziomie interfejsu API ≤ 22. Jest to opcjonalna zależność, która pomaga zapewnić bardziej niezawodne i wydajne przetwarzanie w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Play są niedostępne, WorkManager na starszych urządzeniach będzie nadal używać interfejsu AlarmManager.
Wersja 2.2.0-rc01
30 lipca 2019 r.
Element androidx.work:work-*:2.2.0-rc01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiono błąd w implementacji AlarmManagera, który powodował przedwczesne wyłączenie usługi i w rzadkich przypadkach błąd
RejectedExecutionException
. (aosp/1092374) (b/138238197). - Dodaliśmy obejście problemu
NullPointerException
podczas korzystania z interfejsów APIJobScheduler
na niektórych urządzeniach. (aosp/1091020) (b/138364061), (b/138441699)
Wersja 2.2.0-beta02
19 lipca 2019 r.
Element androidx.work:work-*:2.2.0-beta02
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność od jacoco, która została wprowadzona w
2.2.0-beta01
.
Wersja 2.2.0-beta01
17 lipca 2019 r.
Element androidx.work:work-*:2.2.0-beta01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
androidx.work:work-gcm:2.2.0-beta01
to nowy element Maven, który obsługuje używanie GCMNetworkManager jako harmonogramisty, gdy Usługi Google Play są dostępne na poziomie interfejsu API ≤ 22. Jest to opcjonalna zależność, która pomaga zapewnić bardziej niezawodne i wydajne przetwarzanie w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Play są niedostępne, WorkManager na starszych urządzeniach będzie nadal używać interfejsu AlarmManager.
Poprawki błędów
- Naprawiono błąd
IllegalArgumentException
podczas śledzenia stanu sieci na tabletach Nvidia Shield K1. (aosp/1010188)
Wersja 2.1.0
Wersja 2.1.0
11 lipca 2019 r.
Element androidx.work:work-*:2.1.0
został zwolniony. Ta wersja jest identyczna z androidx.work:work-*:2.1.0-rc01
.
Ważne zmiany od wersji 2.0.1
work-runtime-ktx
wymaga teraz Javy 8. Jeśli napotkasz jakieś problemy, dobuild.gradle
możesz dodać te informacje:kotlinOptions { jvmTarget = "1.8" }
- Dodano inicjowanie WorkManagera na żądanie, które tworzy WorkManagera tylko wtedy, gdy jest używany. b/127497100 Aby skonfigurować projekt na potrzeby inicjalizacji na żądanie:
- Wyłącz automatyczny inicjalizator.
- Zaimplementuj
Configuration.Provider
w obiekcie niestandardowymApplication
. - Zmień wszystkie odwołania do
WorkManager.getInstance()
naWorkManager.getInstance(Context)
. W ramach tej zmiany wycofujemyWorkManager.getInstance()
. Zawsze bezpieczniej jest wywołać nową funkcjęWorkManager.getInstance(Context)
, nawet jeśli nie wykonujesz inicjalizacji na żądanie.
PeriodicWorkRequest
obsługują teraz początkowe opóźnienia. Aby ustawić początkowe opóźnienie, możesz użyć metodysetInitialDelay
w funkcjiPeriodicWorkRequest.Builder
. b/111404867- Dodano możliwość delegowania uprawnień do co najmniej 1 zarejestrowanego
WorkerFactory
za pomocąDelegatingWorkerFactory
. b/131435993 - Dodano możliwość dostosowywania
Executor
używanego przez WorkManager do wszystkich swoich wewnętrznych działań księgowych za pomocąConfiguration.Builder.setTaskExecutor
. - Dodano możliwość tworzenia testów jednostkowych klas
Worker
iListenableWorker
za pomocą artefaktuwork-testing
z elementamiTestWorkerBuilder
iTestListenableWorkerBuilder
.- Pamiętaj, że
work-testing
pobiera teraz Kotlin jako zależność i domyślnie zawiera kilka rozszerzeń Kotlin.
- Pamiętaj, że
- Dodano liczbę prób uruchomienia do
WorkInfo
. b/127290461 - Typy
Data
mogą teraz przechowywać i pobierać bajty oraz tablice bajtów. Nie zmienia to maksymalnego rozmiaru obiektówData
. - WorkManager zależy teraz od
Room 2.1.0
, co powinno rozwiązać niektóre problemy z bazą danych.
Wersja 2.1.0-rc01
27 czerwca 2019 r.
Element androidx.work:work-*:2.1.0-rc01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiliśmy błąd, który powodował awarię aplikacji podczas wykonywania zadań z użyciem parametru
JobScheduler
, gdy w tym samym czasie trwało tworzenie kopii zapasowej b/135858602.
Wersja 2.1.0-beta02
20 czerwca 2019 r.
Element androidx.work:work-*:2.1.0-beta02
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
TestListenableWorkerBuilder
używa teraz prawidłowej wartościWorkerFactory
podczas tworzenia instancjiListenableWorker
. b/135275844- Naprawiono błąd, który powodował przesunięcia okien wykonania
WorkRequest
z powodu zakończenia działania procesu. b/135272196
Wersja 2.1.0-beta01
13 czerwca 2019 r.
Element androidx.work:work-*:2.1.0-beta01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- WorkManager zależy teraz od
Room 2.1.0
, co powinno rozwiązać niektóre problemy z bazą danych. - Usunięto niektóre operacje wejścia/wyjścia na dysku podczas uruchamiania w wątku głównym.
- Rozwiązano potencjalny impas w śledzeniu ograniczeń. b/134361006
- Anulowanie nieprawidłowych zadań przypisanych do WorkManagera. b/134058261
- Dodano kilka wywołań interfejsów JobScheduler API w celu ochrony przed nieprawidłowym działaniem urządzeń.
Wersja 2.1.0-alpha03
5 czerwca 2019 r.
Element androidx.work:*:2.1.0-alpha03
został zwolniony.
Poprawki błędów
- Ulepszona dokumentacja
PeriodicWorkRequest
. WorkManagerTestInitHelper
używa teraz odpowiedniego wykonawcy w tle do testów.- Rozwiązania problemów z SQLite podczas obsługi dużych transakcji na niektórych urządzeniach. (b/130182503)
- Zależności WorkManagera są teraz bardziej szczegółowe. (b/133169148).
- obejście błędów związanych z implementacją
JobScheduler
w przypadku OEM-ów podczas planowania zadań za pomocą WorkManagera. - Ulepszenia w harmonogramie opartym na interfejsie AlarmManager dotyczące czasu działania usług, które wcześniej powodowały rzadkie awarie. (b/133313734)
Wersja 2.1.0-alpha02
16 maja 2019 r.
Opublikowano WorkManager 2.1.0-alpha02. Ta wersja zawiera kilka nowych interfejsów API.
Zmiany w interfejsie API
PeriodicWorkRequest
obsługują teraz początkowe opóźnienia. Aby ustawić początkowe opóźnienie, możesz użyć metodysetInitialDelay
w funkcjiPeriodicWorkRequest.Builder
. b/111404867Dodano możliwość delegowania uprawnień do co najmniej 1 zarejestrowanego
WorkerFactory
za pomocąDelegatingWorkerFactory
. b/131435993Dodano możliwość dostosowywania
Executor
używanego przez WorkManager do wszystkich swoich wewnętrznych działań księgowych za pomocąConfiguration.Builder.setTaskExecutor
.Ulepszona dokumentacja dotycząca funkcji
WorkRequest.keepResultsForAtLeast
(b/130638001), inicjalizacji na żądanie i funkcjiPeriodicWorkRequest.Builder
(b/131711394).
Wersja 2.1.0-alpha01
24 kwietnia 2019 r.
Opublikowano WorkManager 2.1.0-alpha01. Ta wersja zawiera kilka nowych interfejsów API. Pamiętaj, że od tej wersji wprowadzimy nowe funkcje, które nie będą dostępne w wersji 1.x. Zalecamy przejście na wersję 2.x.
Zmiany w interfejsie API
- Dodano inicjowanie WorkManagera na żądanie, które tworzy WorkManagera tylko wtedy, gdy jest używany. b/127497100 Aby skonfigurować projekt na potrzeby inicjalizacji na żądanie:
- Wyłącz automatyczny inicjalizator.
- Zaimplementuj
Configuration.Provider
w obiekcie niestandardowymApplication
. - Zmień wszystkie odwołania do
WorkManager.getInstance()
naWorkManager.getInstance(Context)
. W ramach tej zmiany wycofujemyWorkManager.getInstance()
. Zawsze bezpieczniej jest wywołać nową funkcjęWorkManager.getInstance(Context)
, nawet jeśli nie wykonujesz inicjalizacji na żądanie.
- Dodano możliwość tworzenia testów jednostkowych klas
Worker
iListenableWorker
za pomocą artefaktuwork-testing
z elementamiTestWorkerBuilder
iTestListenableWorkerBuilder
.- Pamiętaj, że
work-testing
pobiera teraz Kotlin jako zależność, ale domyślnie zawiera też kilka rozszerzeń Kotlin.
- Pamiętaj, że
- Dodano liczbę prób uruchomienia do
WorkInfo
. b/127290461 - Typy
Data
mogą teraz przechowywać i pobierać bajty oraz tablice bajtów. Nie zmienia to maksymalnego rozmiaru obiektówData
. - Wycofano:
CoroutineWorker.coroutineContext
. To pole zostało błędnie zapisane jakoCoroutineDispatcher
. Nie powinno być już potrzebne, ponieważ w ciele funkcji zawieszającej możesz samodzielnie przejść do żądanego coroutineContext. RxWorker.createWork()
iRxWorker.getBackgroundScheduler()
są teraz oznaczone zwracanymi typami@NonNull
.
Wersja 2.0.1
Wersja 2.0.1
9 kwietnia 2019 r.
Opublikowano WorkManager 2.0.1. Ta wersja jest identyczna z 2.0.1-rc01.
Wersja 2.0.1-rc01
3 kwietnia 2019 r.
Opublikowano WorkManager 2.0.1-rc01. Ta wersja zawiera poprawki błędów. W przypadku użytkowników starszej wersji 1.x niektóre z tych zmian są również dostępne w wersji 1.0.1-rc01.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo z WorkManagerem. b/122553577
- Naprawiono błąd awaryjny w przypadku rzadkich sytuacji, gdy ograniczenia nie były usuwane w interfejsach API z użyciem JobScheduler. b/129226383
- Naprawiono błąd
StackOverflowError
dotyczący długich łańcuchów zadań. b/129091233 - Zaktualizowano dokumentację dotyczącą
PeriodicWorkRequest
, aby wskazać, że czas elastyczny nie jest obsługiwany w interfejsie API 23. - Naprawiono niedziałające linki w dokumentacji Kotlina.
Wersja 2.0.0
Wersja 2.0.0
20 marca 2019 r.
Opublikowano WorkManager 2.0.0. Ta wersja jest identyczna z 2.0.0-rc01 i jest stabilną wersją AndroidX 1.0.0 z zależnościami AndroidX. Zalecamy kierowanie na tę wersję zamiast na starsze wersje 1.x. Wszystkie aktywne prace rozwojowe będą dotyczyć wersji 2.x, a wersja 1.x przez ograniczony czas będzie otrzymywać tylko poprawki krytycznych błędów.
Wersja 2.0.0-rc01
7 marca 2019 r.
Opublikowano WorkManager 2.0.0-rc01. Ta wersja jest identyczna z 1.0.0, ale zawiera zależności AndroidX. Gdy wersja 2.0.0 stanie się stabilna, uwzględnij ją, a starsze wersje 1.x będą otrzymywać tylko niektóre poprawki krytycznych błędów. Wszystkie aktywne prace programistyczne będą dotyczyć wersji 2.x.
Zależności sprzed AndroidX
Dokumenty referencyjne: Java
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" }
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
Wersja 1.0.1
Wersja 1.0.1
9 kwietnia 2019 r.
Opublikowaliśmy WorkManager 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, ponieważ w przyszłości będzie bardzo niewiele aktualizacji gałęzi 1.x. Nowe interfejsy API nie będą też dostępne w bibliotece 1.x.
Wersja 1.0.1-rc01
2 kwietnia 2019 r.
Opublikowano WorkManager 1.0.1-rc01. Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo z WorkManagerem. b/122553577
- Naprawiono błąd awaryjny w przypadku rzadkich sytuacji, gdy ograniczenia nie były usuwane w interfejsach API z użyciem JobScheduler. b/129226383
- Naprawiono błąd
StackOverflowError
dotyczący długich łańcuchów zadań. b/129091233
Wersja 1.0.0
Wersja 1.0.0
5 marca 2019 r.
Jest to stabilna wersja WorkManager 1.0.0. Ta wersja WorkManager jest identyczna z 1.0.0-rc02.
Wersja 1.0.0-rc02
21 lutego 2019 r.
To druga wersja kandydata do publikacji stabilnej wersji 1.0.0 WorkManagera. Ta wersja zawiera 2 poprawki błędów.
Poprawki błędów
Worker
s są teraz prawidłowo zaplanowane po awarii aplikacji. b/124546316Worker
s, które rzucają niezaznaczoneException
, są teraz prawidłowo oznaczone jakoFAILED
i nie powodują już awarii procesu aplikacji.
Wersja 1.0.0-rc01
14 lutego 2019 r.
Jest to wersja kandydująca do publikacji stabilnej wersji 1.0.0 WorkManagera. Ta wersja zawiera 1 poprawkę błędu.
Poprawki błędów
- Implementacja oparta na AlarmManager poprawnie uwzględnia okna
flex
w przypadku PeriodicWorkRequests. b/124274584
Wersja 1.0.0-beta05
6 lutego 2019 r.
Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Rozwiązano problem, który występował, gdy w interfejsie API 23 używano funkcji
JobScheduler.getPendingJob(...)
. b/123893059 - Usunięto błąd
NullPointerException
na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/123835104
Wersja 1.0.0-beta04
4 lutego 2019 r.
Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Ulepszono harmonogramowanie okresowych zadań dla implementacji opartej na AlarmManager.
- Rozwiązaliśmy problem polegający na tym, że WorkManager nieprawidłowo śledził ograniczenia podczas korzystania z implementacji opartej na AlarmManager. b/123379508
- Rozwiązano problem polegający na tym, że przy użyciu implementacji opartej na AlarmManagerze nie powiodło się ponowne uruchomienie pracy po zabiciu procesu przez WorkManagera. b/123329850
- Rozwiązaliśmy problem, który powodował wyciek Wakelocków przez WorkManagera podczas korzystania z implementacji opartej na AlarmManagerze.
Wersja 1.0.0-beta03
25 stycznia 2019 r.
Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Wprowadziliśmy regresję
1.0.0-beta02
, która w niektórych sytuacjach powodowała nieprawidłowe wykonywanie pracy. b/123211993 - Rozwiązanie problemu polegającego na tym, że zadanie nie respektowało prawidłowo czasu odroczenia. b/122881597
- Naprawiono błąd
ConcurrentModificationException
na urządzeniach z Androidem w wersji 5.1 (interfejs API 20) lub starszej. Jest to kontynuacja poprawki z1.0.0-beta02
. b/121345393 - Dodaliśmy
exported=false
do niektórych komponentów w pliku manifestu, które nie miały tej adnotacji. - Dodanie do dokumentacji na poziomie pakietu informacji o tym, jak WorkManager współdziała z systemem operacyjnym.
Wersja 1.0.0-beta02
15 stycznia 2019 r.
Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Rozwiązano problem, w którym zadania okresowe mogły być wykonywane więcej niż raz w interwale na urządzeniach z Androidem 6.0 (poziom interfejsu API 23).b/121998363
- Naprawiono błąd
ConcurrentModificationException
na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/121345393 - Rozwiązano problem z błędnym wykonywaniem pracy, gdy nie są spełnione ograniczenia na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym. b/122578012
- Zoptymalizowano obsługę ukończenia pracy, aby była szybsza w niektórych przypadkach szczególnych.b/122358129
- Dodano zmianę, która rozwiązuje potencjalne problemy z konkurencją między wieloma instancjami
LiveData
używanymi przez WorkManager. - Zamiast
1.1.1-rc01
używamy teraz zależnościRoom
1.1.1
, ponieważ obie wersje są identyczne. b/122578011
Wersja 1.0.0-beta01
19 grudnia 2018 r.
Ta wersja nie zawiera żadnych zmian interfejsu API. W przyszłości interfejs API WorkManager powinien pozostać stabilny do czasu wydania kolejnej wersji, chyba że wystąpi jakiś krytyczny problem. Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Wcześniej anulowane zadania podrzędne do zakończonego zadania nadrzędnego nie będą już wykonywane. b/120811767
- prawidłowo zainicjowane klasy rejestrowania (głównie w ramach testów);
Wersja 1.0.0-alpha13
12 grudnia 2018 r.
Ta wersja zawiera niewielką zmianę interfejsu API, która będzie przydatna dla niektórych użytkowników Kotlina.
Zmiany w interfejsie API
- Klasa
androidx.work.Result
została przeniesiona i jest teraz klasą wewnętrzną klasyListenableWorker
. Zapobiega to konfliktom refaktoryzacji z klasąResult
najwyższego poziomu w Kotlinie. To jest zmiana API, która powoduje przerwanie działania. b/120564418
Zmiany w interfejsie API, które powodują przerwanie zgodności
- Klasa
androidx.work.Result
została przeniesiona i jest teraz klasą wewnętrzną klasyListenableWorker
.
Wersja 1.0.0-alpha12
5 grudnia 2018 r.
Ta wersja zawiera zmiany w interfejsie API, które mogą powodować niezgodność. Zapoznaj się z sekcją Zmiany w interfejsie API, które powodują niezgodność. Ta wersja prawdopodobnie zostanie wydana jako pierwsza wersja beta. alpha12
zawiera też obszerne aktualizacje dokumentacji.
Zmiany w interfejsie API
- Nowy artefakt
work-rxjava2
wprowadzaRxWorker
. To jestListenableWorker
, który oczekujeSingle<Payload>
. - Obsługa Firebase JobDispatcher została usunięta z powodu zbliżającego się wycofania tej funkcji. Oznacza to, że artefakt
work-firebase
nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywy. - Scalono
Payload
zResult
.Result
to teraz „klasa zamknięta” z 3 konkretnymi implementacjami, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(lubResult.failure(Data)
) iResult.retry()
. TwojeListenableFuture
to terazResult
zamiastPayload
.Worker
nie mają metod getter i setter dla danych wyjściowychData
. To jest zmiana powodująca niezgodność. - Dodano
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
iConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
oraz ich warianty, aby lepiej obsługiwać URI treści z długim czasem aktywacji. b/119919774 - Dodano wariant
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. Ta metoda wymaga interfejsu API 26. - Dodano metody rozszerzeń Kotlina
Operation.await()
iListenableFuture.await()
. - Nazwa
Operation.getException()
została zmieniona naOperation.getThrowable()
. To jest zmiana powodująca niezgodność. - Klasa
ContentUriTriggers
i metody, które się do niej odwołują, nie są już dostępne publicznie. To jest zmiana powodująca niezgodność. - Aby uprościć interfejs API, usunięto pozostałe metody varargs w metodach
WorkManager
,WorkContinuation
iOneTimeWorkRequest
. Aby rozwiązać problemy ze składaniem, możesz owinąć istniejące argumenty zmienne za pomocą funkcjiArrays.asList(...)
. Nadal uwzględniamy wersje każdej metody z jednym argumentem. To jest zmiana powodująca niezgodność. - Usunięto warianty
WorkContinuation.combine(OneTimeWorkRequest, *)
. Prezentowany interfejs API był trudny do zrozumienia. Istniejące metodycombine
są bardziej zrozumiałe. To jest zmiana powodująca niezgodność.
Poprawki błędów
- Implementacje sprzed Marshmallow są teraz bardziej niezawodne w przywracaniu procesu po awarii już wykonywanego zadania.
LiveData
obserwowany za pomocąobserveForever
jest śledzony za pomocą WorkManager. Jest to wersja wsteczna poprawki biblioteki Room. b/74477406- Funkcja
Data.Builder.build()
wyrzuca teraz wyjątek, jeśli serializowany obiekt przekracza maksymalny rozmiar. Wcześniej zdarzało się to tylko w wątku w tle, gdzie nie można było tego odpowiednio obsłużyć. - Dalsze rozróżnianie zadań zatrzymanych i anulowanych;
getWorkInfoById()
zwracaWorkInfo
zCANCELLED
State
podczasListenableWorker.onStopped()
. - Traktuj
null
Result
jako błędy wListenableWorker
. b/120362353 - Przypuszczalna poprawka dla Shield Tablets z interfejsem API 24, która czasami powodowała błąd
IllegalArgumentException
. b/119484416
Zmiany w interfejsie API, które powodują przerwanie zgodności
- Obsługa interfejsu Firebase JobDispatcher została usunięta z powodu zbliżającego się wycofania. Oznacza to, że artefakt
work-firebase
nie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywy. - Scalono
Payload
zResult
.Result
to teraz „klasa zamknięta” z 3 konkretnymi implementacjami, które możesz uzyskać za pomocąResult.success()
(lubResult.success(Data)
),Result.failure()
(lubResult.failure(Data)
) iResult.retry()
. TwojeListenableFuture
to terazResult
zamiastPayload
.Worker
nie mają metod getter i setter dla danych wyjściowychData
. - Dodano metody rozszerzeń Kotlina
Operation.await()
iListenableFuture.await()
. - Nazwa
Operation.getException()
została zmieniona naOperation.getThrowable()
. - Klasa
ContentUriTriggers
i metody, które się do niej odwołują, nie są już dostępne publicznie. - Aby uprościć interfejs API, usunięto pozostałe metody varargs w metodach
WorkManager
,WorkContinuation
iOneTimeWorkRequest
. Aby rozwiązać problemy ze składaniem, możesz owinąć istniejące argumenty zmienne za pomocą funkcjiArrays.asList(...)
. Nadal uwzględniamy wersje każdej metody z jednym argumentem. - Usunięto warianty
WorkContinuation.combine(OneTimeWorkRequest, *)
. Prezentowany interfejs API był trudny do zrozumienia. Istniejące metodycombine
są bardziej zrozumiałe.
Wersja 1.0.0-alpha11
8 listopada 2018 r.
Ta wersja zawiera wiele zmian, które staną się stabilnym interfejsem API w wersji beta
.
W tej wersji wprowadzono zmiany w interfejsie API, które powodują niezgodność. Zapoznaj się z sekcją Zmiany w interfejsie API powodujące niezgodność.
Zmiany w interfejsie API
work-runtime-ktx
wprowadza nową funkcjęCoroutineWorker
.- Nazwa
WorkStatus
została zmieniona naWorkInfo
. Wszystkie odpowiadające im warianty metodygetStatus
zostały przemianowane na odpowiadające im wariantygetWorkInfo
. To jest zmiana powodująca niezgodność. ListenableWorker.onStopped()
no longer accepts ma argument typu logicznego, który wskazuje, czyWorkRequest
zostało anulowane. UsługaWorkManager
nie rozróżnia już tych dwóch typów. To jest zmiana powodująca niezgodność.- Pakiet
androidx.work.test
został przemianowany na pakietandroidx.work.testing
. To jest zmiana powodująca niezgodność. - Metody ustawiające w interfejsie
Constraints
nie są już częścią publicznego interfejsu API. To jest zmiana powodująca niezgodność. - tablice
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwracane wcześniej. Teraz te metody zwracają kolekcje. To jest zmiana powodująca niezgodność. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. To jest zmiana powodująca niezgodność. - Konstruktor
WorkStatus
nie jest już częścią publicznego interfejsu API. To jest zmiana powodująca niezgodność. - Jednostki organizacyjne
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały odpowiednio przemianowane naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. To jest zmiana powodująca niezgodność. - Dodano wiele adnotacji
@NonNull
do publicznego interfejsu API, aby poprawić jego ergonomię. - Dodaj interfejs API
WorkManager.enqueueUniqueWork()
, aby kolejkować unikalneOneTimeWorkRequest
bez konieczności tworzeniaWorkContinuation
. - Wszystkie warianty metod
enqueue
icancel
w przypadku typuWorkManager
zwracają teraz nowy typOperation
. To jest zmiana powodująca niezgodność. - Wszystkie warianty funkcji
enqueue
nie obsługują już argumentów zmiennych w przypadku funkcjiWorkRequest
. To jest zmiana powodująca niezgodność. Zamiast tego użyj kolekcji. Możesz użyćArrays.asList()
, aby zmodyfikować istniejący kod. Zrobiliśmy to, aby zmniejszyć liczbę interfejsów API i metod. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje błądIllegalStateException
. To jest zmiana powodująca niezgodność.
Poprawki błędów
- Elementy
WorkRequest.Builder
w artefakciework-runtime-ktx
korzystają teraz z elementówListenableWorker
. Poprawki b/117666259 - Upewnij się, że następny czas uruchomienia reguły
PeriodicWork
jest w przyszłości. Poprawki b/118204399 - Usuń potencjalne operacje wejścia/wyjścia na dysk podczas uruchamiania aplikacji za pomocą WorkManagera. Poprawki b/117796731
- Napraw błędny stan wyścigu w pliku
WorkConstraintsTracker
. Rozwiązano problem android-workmanager/issues/56
Zmiany w interfejsie API, które powodują przerwanie zgodności
- Nazwa
WorkStatus
została zmieniona naWorkInfo
. Wszystkie odpowiadające im warianty metodygetStatus
zostały przemianowane na odpowiadające im wariantygetWorkInfo
. ListenableWorker.onStopped()
no longer accepts ma argument typu logicznego, który wskazuje, czyWorkRequest
zostało anulowane. UsługaWorkManager
nie rozróżnia już tych dwóch typów.- Pakiet
androidx.work.test
został przemianowany na pakietandroidx.work.testing
. - Metody ustawiające w interfejsie
Constraints
nie są już częścią publicznego interfejsu API. - tablice
WorkerParameters.getTriggeredContentUris()
iWorkerParameters.getTriggeredContentAuthorities()
zwracane wcześniej. Teraz te metody zwracają kolekcje. - Nazwa
ListenableWorker.onStartWork()
została zmieniona naListenableWorker.startWork()
. - Konstruktor
WorkStatus
nie jest już częścią publicznego interfejsu API. - Jednostki organizacyjne
Configuration.getMaxJobSchedulerID()
iConfiguration.getMinJobSchedulerID()
zostały odpowiednio przemianowane naConfiguration.getMinJobSchedulerId()
iConfiguration.getMaxJobSchedulerId()
. - Wszystkie warianty metod
enqueue
icancel
w funkcjiWorkManager
zwracają teraz nowy typOperation
. - Wszystkie warianty funkcji
enqueue
nie obsługują już argumentów zmiennych w przypadku funkcjiWorkRequest
. - Próba
initialize
WorkManager
więcej niż raz na proces spowoduje błądIllegalStateException
.
Wersja 1.0.0-alpha10
11 października 2018 r.
Ta wersja obsługuje pracę asynchroniczną kontrolowaną przez dewelopera. W tej wersji wprowadzono zmiany w interfejsie API, które powodują niezgodność. Zapoznaj się z sekcją Zmiany w interfejsie API powodujące niezgodność.
Oczekujemy, że WorkManager wkracza w ostatnie fazy okresu alfa. Spodziewamy się, że interfejs API będzie stabilny w wersji beta, więc poświęć chwilę na przesłanie opinii w naszym narzędziu do śledzenia problemów.
Zmiany w interfejsie API
- Usunięto wszystkie wcześniejsze metody i klasy
deprecated
, w tym domyślny konstruktorWorker
. Ta zmiana w interfejsie API powoduje przerwanie działania. - Zmieniliśmy nazwę klasy
NonBlockingWorker
naListenableWorker
. Jest ona teraz widoczna i gotowa do użycia.ListenableWorker
zapewnia dostęp do jednej abstrakcyjnej metodyListenableFuture<Payload> onStartWork()
, która jest wywoływana w wątku głównym. Rozpoczynanie i przetwarzanie pracy w tle zależy od Ciebie. Po zakończeniu należy odpowiednio zaktualizowaćListenableFuture
. Referencyjne implementacjeListenableFuture
są dostępne w pakiecieFutures
w gałęzialpha02
(patrz sekcjaWorkManager
).Worker
rozszerza klasęListenableWorker
i nadal działa tak samo, z abstrakcyjną metodąResult doWork()
.- Zmieniono kolejność niektórych metod i użytkowników z grupy
Worker
na grupęListenableWorker
. - Wkrótce udostępnimy implementacje referencyjne
ListenableWorker
, które korzystają z korobocznych funkcji w Kotlinie (po wydaniu stabilnych wersji) i z RxJava2.
- Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały scalone w abstrakcyjną klasę o nazwieWorkerFactory
. Dzięki temu domyślne działanie oparte na odbiciu jest wywoływane jako ostateczne rozwiązanie w przypadku wszystkich instancjiWorkerFactory
utworzonych przez użytkownika. To jest zmiana powodująca niezgodność. - Usunięto metody
WorkManager.synchronous()
iWorkContinuation.synchronous()
oraz wszystkie powiązane z nimi metody. Dodano typ zwracanyListenableFuture<Void>
dla wielu metod w interfejsie API. Ta zmiana w interfejsie API powoduje przerwanie działania.- Teraz możesz synchronicznie pobierać i obserwować dane za pomocą funkcji
ListenableFuture
. Na przykład funkcjaWorkManager.enqueue()
zwracała wcześniejvoid
, a teraz zwracaListenableFuture<Void>
. Po zakończeniu operacji możesz wywołać funkcjęListenableFuture.addListener(Runnable, Executor)
lubListenableFuture.get()
, aby uruchomić kod. - Pamiętaj, że te
ListenableFuture
nie informują, czy operacja zakończyła się sukcesem, czy niepowodzeniem, tylko że została zakończona. Aby uzyskać te informacje, nadal musisz połączyć metody WorkManagera. - Ignorujemy wywołania
cancel()
dotyczące tych obiektów, ponieważ są one mylące i trudne do zrozumienia (czy anulujesz operację, czy wywołanie pracy?). To jest zgodne z umowąFuture
. - Aby zachować zgodność z synchronicznymi metodami
getStatus*
, udostępniliśmy wariantyListenableFuture
i zmieniliśmy nazwy istniejących metod, które zwracałyLiveData
, tak aby zawierały w swojej nazwie „LiveData” (np.getStatusesByIdLiveData(UUID)
). To zmiana interfejsu API, która powoduje przerwanie działania.
- Teraz możesz synchronicznie pobierać i obserwować dane za pomocą funkcji
Poprawki błędów
- Rozwiązaliśmy znany problem z wersji alpha09 dotyczący duplikatów plików
androidx-annotations.pro
. Możesz usunąć obejście z poprzednich informacji o wersji, usuwającexclude 'META-INF/proguard/androidx-annotations.pro'
z pliku gradle. - Dodano konfiguracje Proguard, aby zachować nową instrukcję konstruktora
Worker
. b/116296569 - Naprawiono potencjalny błąd
NullPointerException
w warunku wyścigu, w którym praca zostałaREPLACE
. b/116253486 i b/116677275 - Funkcja
WorkContinuation.combine()
akceptuje teraz co najmniej 1WorkContinuation
zamiast 2 lub więcej. b/117266752
Zmiany w interfejsie API, które powodują przerwanie zgodności
- Usunięto wszystkie wcześniejsze metody i klasy
deprecated
, w tym domyślny konstruktorWorker
. - Interfejs
WorkerFactory
i konkretna implementacjaDefaultWorkerFactory
zostały scalone w abstrakcyjną klasę o nazwieWorkerFactory
. - Usunięto
WorkManager.synchronous()
iWorkContinuation.synchronous()
. - Metody
WorkManager.getStatus*()
zwracają terazListenableFuture
.WorkManager.getStatus*LiveData()
zwrotówLiveData
.
Wersja 1.0.0-alpha09
19 września 2018 r.
Znany problem
Jeśli napotkasz ten problem: „Znaleziono więcej niż 1 plik z ścieżką niezależną od systemu operacyjnego 'META-INF/proguard/androidx-annotations.pro'”, dodaj do pliku gradle następujący kod jako tymczasowe rozwiązanie, dopóki nie naprawimy problemu w wersji alpha10:
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Poprawki błędów
- Dodano kolejną poprawkę, która była potrzebna do rozwiązania problemu „100 zadań”. b/115560696
- Dodaliśmy kilka poprawek błędów ograniczeń klucza obcego spowodowanych warunkami wyścigu. b/114705286
- Przekazane połączenia
ConstraintTrackingWorker.onStopped(boolean)
do podstawowegoWorker
. b/114125093 - Wymuś prawidłowe minimalne opóźnienie w przypadku Firebase JobDispatcher. b/113304626
- Ulepszone wątkowanie zapewnia wewnętrzne gwarancje biblioteki.
- Poprawiono potencjalny problem z usuwaniem duplikatów
LiveData
wewnętrznie.
Zmiany w interfejsie API
- Teraz możesz tworzyć własne instancje
Worker
w czasie wykonywania, podając wartośćWorkerFactory
jako częśćWorkManager.Configuration
. Fabryka awaryjnego tworzenia obiektów toDefaultWorkerFactory
, która odpowiada działaniu poprzednich wersji WorkManagera.- Domyślne konstruktory
Worker
iNonBlockingWorker
są teraz oznaczone jako wycofane. Użyj nowego konstruktora (Worker(Context, WorkerParameters)
) i wywołaj metodęsuper(Context, WorkerParameters)
. W przyszłych wersjach WorkManager konstruktor domyślny zostanie usunięty.
- Domyślne konstruktory
- Wewnętrznie zaczęliśmy używać nowego artefaktu
ListenableFuture
(bez zależności od Guavy). W kolejnych wersjach wprowadzimy do interfejsu API interfejs ListenableFuture. Ta zmiana umożliwi odsłonięcieNonBlockingWorker
. - Dodano możliwość uruchamiania pracy z limitem czasu w
TestDriver
za pomocą funkcjiTestDriver.setInitialDelayMet(UUID)
iTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Zmiany powodujące niezgodność
- Domyślne konstruktory
Worker
iNonBlockingWorker
są przestarzałe. Jak najszybciej przejdź na nowego konstruktora. W przyszłych wersjach konstruktor domyślny zostanie usunięty.
Wersja 1.0.0-alpha08
27 sierpnia 2018 r.
Poprawki błędów
- wyraźnie oznaczyć komponenty WorkManager jako nieobsługujące bezpośredniego uruchamiania, aby nie uruchamiały się podczas bezpośredniego uruchamiania; W przyszłości udostępnimy wersję WorkManagera, która obsługuje bezpośrednie uruchamianie. b/112665532
- Rozwiązaliśmy problem, który powodował, że nie wykonywano powtórzonych zadań. b/112604021
- Rozwiązanie problemu polegającego na tym, że zadania okresowe nie były wykonywane wielokrotnie (związany z powyższym problemem). b/112859683
- Zasady wycofywania stosowane, gdy proces aplikacji jest już uruchomiony.
- Poprawiono komunikaty o wyjątkach w
Data
, aby wskazywały one, że limit to 10 KB. - Zmniejszono maksymalną wartość
Configuration.setMaxSchedulerLimit(int)
do 50, aby uwzględnić pewien czas oczekiwania na zakończenie przetwarzaniaJobScheduler
. b/112817355
Wersja 1.0.0-alpha07
16 sierpnia 2018 r.
Poprawki błędów
- Naprawiono potencjalne zapytanie SQL z ujemnymi limitami, które mogło zwracać nieograniczoną liczbę wyników.
- Zadania, które zostały zakończone, teraz prawidłowo anulują wszystkie oczekujące kopie tego zadania w innych harmonogramach. Spowoduje to przekroczenie limitu
JobScheduler
zadań. b/111569265 - Naprawiono błąd
ConcurrentModificationException
w plikuConstraintTracker
. b/112272753 - Zmieniono adnotacje typu zwracanego w funkcjach
Data.getBooleanArray(String)
iData.getIntArray(String)
na@Nullable
zamiast@NonNull
. b/112275229
Zmiany w interfejsie API
Worker
obejmuje teraz nowe zajęcia,NonBlockingWorker
. Nie ma to wpływu na bieżące korzystanie z usługi. W przyszłościNonBlockingWorker
stanie się w pełni obsługiwanym elementem w przypadku niestandardowych rozwiązań dotyczących wątków.- Zmieniono adnotacje typu zwracanego w funkcjach
Data.getBooleanArray(String)
iData.getIntArray(String)
na@Nullable
zamiast@NonNull
. b/112275229 - Rozszerzenia Kotlina: wycofane
Map.toWorkData()
i dodano interfejsworkDataOf(vararg Pair<String, Any?>)
najwyższego poziomu, aby zachować spójność z dotychczasowymi interfejsami API.
Wersja 1.0.0-alpha06
1 sierpnia 2018 r.
Poprawki błędów
- Zapobieganie blokowaniu bazy danych podczas planowania pracy. b/111801342
- Naprawiono błąd, który powodował, że
PeriodicWork
nie działał zgodnie z harmonogramem w trybie Doze. b/111469837 - Naprawiono warunek wyścigu podczas śledzenia ograniczeń, który powodował awarię
WorkManager
. googlecodelabs/android-workmanager/issues/56 - Utwórz unikalne
WorkRequest
, gdy używaszWorkRequest.Builder#build()
. b/111408337 - Włącz korzystanie z funkcji
RescheduleReceiver
tylko wtedy, gdy sąWorkRequest
, które jej potrzebują. b/111765853
Wersja 1.0.0-alpha05
24 lipca 2018 r.
Zmiany w interfejsie API
- Urządzenie
WorkManager.getInstance()
jest teraz oznaczone jako@NonNull
zamiast@Nullable
. Jeśli jednak w przypadku inicjalizacji ręcznej singleton nie zostanie prawidłowo zainicjowany, metoda zwróci błądIllegalStateException
. Jest to zmiana interfejsu API, która może spowodować przerwanie działania aplikacji. - Dodaliśmy nowy interfejs API
Configuration.Builder.setMinimumLoggingLevel(int)
, który umożliwia kontrolowanie szczegółowości WorkManagera. Domyślnie WorkManager rejestrujeLog.INFO
i nowsze. - Zmieniono sygnaturę parametru
Data.getString()
, aby nie przyjmował już wartości domyślnej (jest on domyślnie ustawiony nanull
). Jest to zmiana interfejsu API, która powoduje przerwanie działania. - Oznaczyliśmy niektóre metody potrzebne tylko do użytku wewnętrznego jako
@hide
. Obejmuje to konstruktorConstraints
,Data.toByteArray()
iData.fromByteArray(byte[])
. Ta zmiana w interfejsie API powoduje przerwanie działania.
Poprawki błędów
- WorkManager nie wykonuje już zadań w znanych przypadkach automatycznego tworzenia kopii zapasowych. Może to spowodować awarię. b/110564377
- Rozwiązaliśmy problem z podwójnym planowaniem
PeriodicWorkRequest
podczas używaniaJobScheduler
. b/110798652 - Rozwiązaliśmy problem polegający na tym, że
PeriodicWorkRequest
nie działały prawidłowo po przejściu urządzenia w tryb uśpienia. b/111469837 - Rozwiązaliśmy problem z opóźnieniami początkowymi podczas używania Firebase JobDispatcher. b/111141023
- Naprawiono niektóre potencjalne problemy z warunkami wyścigu i czasami.
- Prawidłowo zwolniono
BroadcastReceiver
, które nie były już potrzebne. - Zoptymalizowano wydajność przy ponownym planowaniu, gdy aplikacje są uruchamiane ponownie po wymuszeniu ich zamknięcia.
- Funkcja
TestScheduler.setAllConstraintsMet(UUID)
może być wywoływana przed lub po umieszczeniu danego elementuWorkRequest
w kolejce. b/111238024
Zmiany powodujące niezgodność
- Urządzenie
WorkManager.getInstance()
jest teraz oznaczone jako@NonNull
zamiast@Nullable
. - Zmieniono sygnaturę funkcji
Data.getString()
, aby nie przyjmowała już wartości domyślnej (jest to domyślnienull
). - Oznaczyliśmy niektóre metody potrzebne tylko do użytku wewnętrznego jako
@hide
. Obejmuje to konstruktorConstraints
,Data.toByteArray()
iData.fromByteArray(byte[])
.
Wersja 1.0.0-alpha04
26 czerwca 2018 r.
Poprawki błędów
- W przypadku korzystania z implementacji opartej na
AlarmManager
PeriodicWorkRequest
są teraz poprawnie przeplanowywane. - Rozwiązano potencjalny problem z ANR podczas ponownego planowania wszystkich instancji roboczych po wymuszonym zatrzymaniu lub ponownym uruchomieniu. b/110507716
- Dodano adnotacje dotyczące możliwości zwracania wartości null do różnych interfejsów WorkManager. b/110344065
- Logowanie niewykrytych wyjątków, które występują podczas wykonywania zadania. b/109900862
- Umożliwiono destruktywne migracje bazy danych na wypadek, gdybyś zdecydował(-a) się cofnąć do starszej wersji WorkManagera. b/74633270
- Rozwiązaliśmy problem z błędem migracji, który występował podczas tworzenia zduplikowanych tagów domyślnych. Jest to bardzo rzadki problem, który występuje tylko wtedy, gdy użyjesz tego samego formatu tagu domyślnego.
Wersja 1.0.0-alpha03
19 czerwca 2018 r.
Poprawki błędów
Usunięto warunek wyścigu w implementacji opartej na
AlarmManager
(b/80346526).Rozwiązaliśmy problem z duplikatami zadań podczas używania funkcji
JobScheduler
po ponownym uruchomieniu urządzenia.Zadania z wyzwalaczami identyfikatora URI treści są teraz zachowywane po ponownym uruchomieniu. b/80234744
Aktualizacje dokumentacji. b/109827628, b/109758949, b/80230748
Naprawiliśmy awarię podczas ponownego umieszczania w kolejce
WorkRequest
. b/109572353.Rozwiązano problem z ostrzeżeniami kompilatora Kotlina podczas używania zależności
work-runtime-ktx
.WorkManager używa teraz wersji
Room
1.1.1-rc1
.
Zmiany w interfejsie API
- Dodano
getStatusesSync()
, czyli wersję synchronicznąWorkContinuation.getStatuses()
. Worker
może rozróżnić anulowanie przez użytkownika i tymczasowe zatrzymanie na żądanie systemu operacyjnego.Worker.isStopped()
zwracatrue
, jeśli został przesłany dowolny rodzaj zapytania o zatrzymanie.Worker.isCancelled()
zwracatrue
, gdy zadanie zostało wyraźnie anulowane. b/79632247- Dodano obsługę metody JobParameters#getNetwork() w wersji interfejsu API 28. Jest ona dostępna za pomocą
Worker.getNetwork()
. - Dodano
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
, aby można było określić maksymalną liczbę zadań, które mogą być wysyłane doJobScheduler
lubAlarmManager
. Dzięki temuWorkManager
nie zajmie wszystkich dostępnychJobScheduler
miejsc. - Dodano
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, który pomaga zdefiniować zakres identyfikatorów zadańJobScheduler
, które mogą być bezpiecznie używane przezWorkManager
. b/79996760 Worker.getRunAttemptCount()
zwraca bieżącą liczbę uruchomień danego elementuWorker
. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
umożliwia umieszczanie w kolejce unikalnychPeriodicWorkRequest
. b/79600647WorkManager.cancelAllWork()
anuluje wszystkieWorker
. Biblioteki zależne odWorkManager
mogą sprawdzać, kiedy ta metoda została wywołana po raz ostatni, używającWorkManager.getLastCancelAllTimeMillis()
do dodatkowego czyszczenia stanu wewnętrznego.- Dodano
WorkManager.pruneWork()
, aby usuwać ukończone zadania z wewnętrznej bazy danych. b/79950952, b/109710758
Zmiany w zachowaniu
- Dodano domyślny tag dla wszystkich elementów
WorkRequest
, który jest pełną nazwą klasy dla elementuWorker
. Umożliwia to usuwanieWorkRequest
beztag
lub gdyid
jest niedostępny. b/109572351
Zmiany powodujące niezgodność
- Nazwa
Worker.WorkerResult
została zmieniona naWorker.Result
. Worker.onStopped
ma teraz dodatkowy parametrisCancelled
, który jest ustawiony natrue
, gdyWorker
został wyraźnie anulowany.
Wersja 1.0.0-alpha02
24 maja 2018 r.
Poprawki błędów
- Naprawiono błąd
NullPointerException
w witrynieState.isFinished()
. b/79550068 - Rozwiązaliśmy problem, który powodował przeplanowanie
Worker
naApplication.onCreate()
. b/79660657 - Rozwiązaliśmy problem, który umożliwiał zaplanowanie większej ilości pracy niż dozwolone przez system operacyjny. b/79497378
- Przeniesienie czyszczenia blokad uśpienia powiązanych z
Worker
na wątek w tle. - Wdrożenie
AlarmManager
teraz prawidłowo usuwa dane, gdy wszystkie oczekujące zadania zostaną ukończone. - Naprawiono zapytania SQL do czyszczenia, które wpływały na wersje językowe inne niż angielska. b/80065360
- Dodaliśmy obsługę właściwości
float
w składnikuData
. b/79443878 - Funkcja
Data.Builder.putAll()
zwraca teraz wystąpienie elementuBuilder
. b/79699162 - Więcej informacji w dokumentacji i poprawki. b/79691663
Zmiany w interfejsie API
Worker
s może zareagować na zatrzymanie. Za pomocą funkcjiWorker.isStopped()
możesz sprawdzić, czy aplikacjaWorker
została zatrzymana.Worker.onStopped()
można używać do wykonywania prostych operacji czyszczenia.- Interfejs API
Worker.getTags()
zwracaSet
tagów powiązanych zWorker
. - Dodano przeciążenia
javax.time.Duration
dla interfejsów API, które przyjmują kombinację czasu trwania iTimeUnit
. Jest on chroniony przez@RequiresApi(26)
. - Rozszerzenia
WorkManager
zostały przeniesione z pakietuandroidx.work.ktx
do pakietuandroidx.work
. Stare rozszerzenia zostały wycofane i w przyszłej wersji zostaną usunięte. - Środowisko wykonawcze
Configuration.withExecutor()
zostało wycofane. Zamiast tego użyjConfiguration.setExecutor()
.
Wersja 1.0.0-alpha01
8 maja 2018 r.
WorkManager upraszcza planowanie i wykonywanie gwarantowanego działania w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01
.