WorkManager
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 23 września 2026 r. | 2.12.0 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od WorkManagera, musisz dodać do projektu repozytorium Maven Google:
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Dynamiczny
dependencies { def work_version = "2.12.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.12.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz w dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.12
Wersja 2.12.0
23 września 2026 r.
Publikacja androidx.work:work-*:2.12.0 Wersja 2.12.0 zawiera te zmiany.
Ważne zmiany od wersji 2.11.0:
minSdkzostał zaktualizowany z interfejsu API 23 do interfejsu API 24- Nowy artefakt
androidx.work:work-analyticsdodaje eksperymentalne interfejsy Work Metrics API do sprawdzania historii wykonywania zadań.WorkMetricsInfoRepositoryrejestrujeWorkMetricsInfona podstawie sygnatur czasowych zdarzeń związanych z pracą, czasu trwania pracy, łącznego skumulowanego czasu działania i podziału prób uruchomienia. Wskaźniki można odczytywać za pomocą konfigurowalnych zapytań lub obserwować jakoFlowwykonanej pracy. Te interfejsy API wymagają włączenia@ExperimentalWorkMetricsApi. - Nowe eksperymentalne interfejsy API detektorów zdarzeń umożliwiają bezpośrednie obserwowanie wykonywania i planowania
WorkManager.Configuration.Builderakceptuje teraz detektor zdarzeń wykonywania zadań (rozpoczęcie, zakończenie, zatrzymanie i nieobsłużone wyjątki) oraz detektor zdarzeń planowania (dodawanie do kolejki, odblokowywanie, aktualizowanie, anulowanie i nieudane wymagania wstępne). Są to elementy składowe, na których opiera sięwork-analytics.
Wersja 2.12.0-rc01
12 sierpnia 2026 r.
Publikacja androidx.work:work-*:2.12.0-rc01 Wersja 2.12.0-rc01 zawiera te zmiany.
Poprawki błędów
- Poprawiono błąd pisowni w
WorkConstraintsDaoTestnazwie klasy i pliku. (I0868d) - Ograniczono rywalizację o blokadę w
PackageManagerServicepodczas uruchamianiaWorkManagerprzez wysyłanie zapytań o domyślne stany włączenia manifestu komponentu i ich buforowanie wPackageManagerHelper. (Id84ba, b/528755807) - Rozwiązaliśmy problem, który powodował, że wywołanie funkcji
WorkManager.updateWorkpodczas aktywnego działania procesu roboczego powodowało natychmiastowe przejście do generacji po aktualizacji w przypadku wywołań zwrotnych zdarzeń cyklu życia wykonania i śledzenia telemetrii. (Ie80e8, b/511074795)
Wersja 2.12.0-beta01
29 lipca 2026 r.
Publikacja androidx.work:work-*:2.12.0-beta01 Wersja 2.12.0-beta01 zawiera te zmiany.
Poprawki błędów
- Naprawiono wyciek pamięci podczas przechwytywania wyjątków wykonawcy (I3404e, b/532588487)
- Ulepszone propagowanie anulowania w przypadku
RemoteListenableWorker, dzięki czemu zatrzymania zainicjowane przez system prawidłowo anulują zdalne współprogramy i ponownie planują pracę, a samoczynnie anulujący się pracownicy zdalni prawidłowo oznaczają pracę jako NIEUDANĄ. Uwaga: to działanie jest obecnie ograniczone przez flagę library-group restrictedConfiguration.isRemoteCancellationPropagationFixEnabled(domyślnie false), aby umożliwić eksperymentalną weryfikację i zapewnić stabilność wskaźników niezawodności przed trwałym usunięciem flagi. (I387f3, b/420724435)
Wersja 2.12.0-alpha01
15 lipca 2026 r.
Publikacja androidx.work:work-*:2.12.0-alpha01 Wersja 2.12.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano interfejs API
WorkMetricsQuerydo filtrowania informacji o danych (I132b4, b/522338412) - Zaimplementuj funkcje
workerDurationMillisitotalRuntimeMilliswWorkMetricsInfo, aby śledzić czas wykonania przez pracownika i łączny skumulowany czas działania. (I57f65, b/507212208) - Dodaliśmy konstruktory
retentionDuration(Duration, API 26+) iretentionTime/retentionTimeUnit(API 23+) doWorkMetricsInfoRepository, aby umożliwić usuwanie starych danych, domyślnie po 7 dniach. (Ifdf2e, b/522338412) - Dodaj interfejs API przepływu dla ukończonych
WorkMetricsInfo(I11ec2, b/507212999) - Dodano brakującą eksperymentalną adnotację do klas
work-analytics(I1a055, b/528112001) androidx.benchmarkma terazminSdkna poziomie 24. (Ic2a85)- Wdróż
stopReasonCounts,explicitRetryCountirunAttemptCountwWorkMetricsInfo. (I95498, b/507212225) - Wdróż interfejsy
WorkMetricsInfoAPI i schemat bazy danych, aby śledzić historię wykonywania zadań, w tym znaczniki czasu dodania do kolejki, odblokowania, pierwszego uruchomienia i zakończenia. (I163e9, b/479123623, b/507212482) - Dodano eksperymentalny interfejs API, który umożliwia wyłączenie oportunistycznego planowania w procesie (I1062d, b/513299442)
- Dodano eksperymentalny interfejs API do nasłuchiwania zdarzeń planowania
WorkManager(I14487, b/448485695) - Dodaj nazwę klasy pracownika do
WorkInfo(I57da1, b/448485695) - Dodano bardziej szczegółową adnotację do eksperymentalnego interfejsu API detektora zdarzeń (Icaa8e, b/448485695)
- Dodanie nowego interfejsu API, który umożliwia pobieranie tablic ciągów znaków z wartością null z instancji klasy
Data(I78bc3, b/383071402) - Utwórz artefakt
work-analytics(Idc7c2, b/465357612) - Dodano eksperymentalny interfejs API, który umożliwia ustawienie odbiornika zdarzeń wykonania procesu roboczego (I06b38, b/448485695).
Poprawki błędów
- Używaj
Dispatchers.Defaultzamiast niestandardowej puli wątków w przypadku domyślnej konfiguracji WM (Ic2c42, b/506239869) - Ulepszanie i dodawanie testów do zarządzania nieuczciwymi wykonawcami (I500f3, b/506239869)
- Naprawiono
ConcurrentModificationExceptionw wypisywaniu detektora wykonaniaWorkManager's. (I4cc18, b/506239869) - Naprawiliśmy awarie procesu w
WorkManagerpodczas rejestrowania wywołań zwrotnych ograniczeń sieciowych z powodu braku uprawnieńACCESS_NETWORK_STATE. (I7045a, b/446013734) - Poprawianie szczegółowości logów, gdy włączone są logi DEBUG (Id9e5f, b/491209738)
- Naprawiono błąd polegający na tym, że ponowione zadania nie były planowane w systemie operacyjnym (I452fc, b/504085166, b/517339607).
- Naprawiono link do dokumentu referencyjnego
Configuration.Provider(Ieedb7, b/340913210) - Zmieniliśmy działanie wywołań zwrotnych zdarzeń, aby nie blokowały operacji (I27cd8, b/448485695).
WorkManagerteraz ponawia inicjowanie na ogólnymSQLiteException. (I98436, b/485368721)- Rozwiązaliśmy problem, który powodował, że deweloperzy mogli otrzymywać nieistniejący kod przyczyny zatrzymania 0, mapując go na
WorkInfo.STOP_REASON_UNKNOWN. (I0b175, b/479314734) - Rozwiązaliśmy dodatkowe problemy z nieudanymi wywołaniami sieciowymi w tle, nawet jeśli spełnione są ograniczenia sieciowe (Ic7f73, b/445324855).
- Obsłuż wyjątek zabezpieczeń w
NetworkStateTracker. (I4b7ca, b/480123154) - Zapewnienie, że haki wykonawcze otrzymują dokładny zrzut
WorkInfo(I25ebb, b/448485695) - Rozwiązaliśmy problem, który powodował, że żądania sieciowe w tle mogły kończyć się niepowodzeniem na urządzeniach z Androidem 15. (I60f24, I8a0a2, b/452081708) (I5abb7, b/465016918)
- Rozwiązaliśmy problem, który powodował, że okresowe
WorkRequest, które kończyły się niepowodzeniem z powodu nieobsłużonego wyjątku, nie były ponownie planowane. (Ia6b92, b/443879071)
Wersja 2.11
Wersja 2.11.2
25 marca 2026 r.
Publikacja androidx.work:work-*:2.11.2 Wersja 2.11.2 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie dodatkowych problemów z nieudanymi połączeniami sieciowymi w tle, nawet jeśli spełnione są ograniczenia sieciowe (Ic7f73, b/445324855)
- Obsługa wyjątku związanego z bezpieczeństwem w
NetworkStateTracker. (I4b7ca, b/480123154) - Rozwiązaliśmy problem, który powodował, że okresowe
WorkRequest, które kończyły się niepowodzeniem z powodu nieobsłużonego wyjątku, nie były ponownie planowane. (Ia6b92, b/443879071)
Wersja 2.11.1
28 stycznia 2026 r.
Publikacja androidx.work:work-*:2.11.1 Wersja 2.11.1 zawiera te zmiany.
Poprawki błędów
- Naprawiono ograniczenie stanu sieci, które było przekazywane, gdy połączenie było blokowane na Androidzie 15 i nowszych. (I5abb7, b/465016918)
- Śledzenie ograniczeń sieci stacjonarnej nie uwzględnia stanu zablokowania w przypadku wartości początkowej. (I8a0a2, b/452081708)
- Rozwiązaliśmy problem z przekazywaniem ograniczeń żądania sieciowego, gdy łączność jest zablokowana na urządzeniach z Androidem 15 lub nowszym. (I60f24, b/452081708)
Wersja 2.11.0
22 października 2025 r.
Publikacja androidx.work:work-*:2.11.0 Wersja 2.11.0 zawiera te zmiany.
Ważne zmiany od wersji 2.10.0:
minSdkzostał zaktualizowany z interfejsu API 21 do interfejsu API 23.- Do narzędzia do tworzenia konfiguracji
WorkManagerdodano interfejs APIsetRemoteSessionTimeoutMillis, który umożliwia skonfigurowanie czasu, przez jaki sesjaRemoteWorkManagerjest aktywna od ostatniego użycia.
Wersja 2.11.0-rc01
8 października 2025 r.
Publikacja androidx.work:work-*:2.11.0-rc01 Wersja 2.11.0-rc01 zawiera te zmiany.
Wersja 2.11.0-beta01
24 września 2025 r.
Publikacja androidx.work:work-*:2.11.0-beta01 Wersja 2.11.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj
stopRunningWorkWithReasondoWorkManagerTestDriver. (Ie53b2, b/439955564)
Poprawki błędów
- Rozwiązanie problemu z zatrzymywaniem usług działających na pierwszym planie, gdy są oczekujące polecenia (Iae822, b/432069314)
- Naprawiono problem z niepowodzeniem odłączania usługi zdalnej przez zdalny proces roboczy korutyny (I842f2, b/247113322).
Wersja 2.11.0-alpha01
27 sierpnia 2025 roku
Publikacja androidx.work:work-*:2.11.0-alpha01 Wersja 2.11.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Minimalna wersja pakietu SDK została zaktualizowana z API 21 do API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
- Do narzędzia do tworzenia konfiguracji WorkManager dodano interfejs API
setRemoteSessionTimeoutMillis, który umożliwia skonfigurowanie czasu, przez jaki sesja RemoteWorkManager jest aktywna od ostatniego użycia. (Ib23c8) - Dodaj eksperymentalny interfejs API w
WorkRequest.Builder, aby zastosować wycofywanie, gdy system przerwie działanie. (Ie2dc7, b/335513480) - Dodano testowy interfejs API, aby przekazywać do
TestListenableWorkerBuilderinną klasę roboczą niż ta, która jest tworzona w celu obsługi niestandardowych implementacjiWorkerFactory(If6bff, b/389154854).
Poprawki błędów
- Buforowanie możliwości sieci w
SharedNetworkCallback, aby zapobiec niepotrzebnym komunikatom IPC (Ie4027, b/427115602) - Rozwiązanie problemu z oceną ograniczeń sieciowych, w którym elementy robocze po pierwszym nie uzyskiwały bieżących możliwości sieci i zamiast tego po przekroczeniu limitu czasu osiągały wartość
ConstraintsNotMet(Ib6a66, b/427115602)
Wersja 2.10
Wersja 2.10.5
24 września 2025 r.
Publikacja androidx.work:work-*:2.10.5 Wersja 2.10.5 zawiera te zmiany.
Poprawki błędów
- Naprawiono zatrzymywanie usług działających na pierwszym planie, gdy są oczekujące polecenia (Iae822, b/432069314)
Wersja 2.10.4
10 września 2025 r.
Publikacja androidx.work:work-*:2.10.4 Wersja 2.10.4 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie problemu z nieudanym odłączaniem usługi zdalnej przez
RemoteCoroutineWorker(I842f2, b/247113322)
Wersja 2.10.3
30 lipca 2025 r.
Publikacja androidx.work:work-*:2.10.3 Wersja 2.10.3 zawiera te zmiany.
Poprawki błędów
- Rozwiązano problem, w którym pracownicy o identycznych ograniczeniach sieciowych jak poprzedni pracownik zgłaszali, że ich ograniczenia nie są spełnione. (b/427115602).
Wersja 2.10.2
18 czerwca 2025 r.
Publikacja androidx.work:work-*:2.10.2 Wersja 2.10.2 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z utrwalaniem instancji roboczych z żądaniami sieciowymi i domyślnymi funkcjami, który powodował ponowne dodawanie usuniętych funkcji, co sprawiało, że instancje robocze z ograniczeniami sieciowymi działały nieprawidłowo. (b/409716532)
- Naprawiono błąd, który powodował, że instancje robocze z ograniczeniami sieciowymi nie wykonywały zadań od razu, ponieważ ograniczenia nie były spełnione, mimo że sieć i możliwości były dostępne. (b/423403088)
Wersja 2.10.1
23 kwietnia 2025 r.
Publikacja androidx.work:work-*:2.10.1 Wersja 2.10.1 zawiera te zmiany.
Poprawki błędów
- Zmniejsz prawdopodobieństwo wyrzucenia
TooManyRequestsExceptionz rejestracjiWorkManagerwNetworkCallbackużywanym do śledzenia ograniczeń. (b/231499040, b309d5).
Wersja 2.10.0
30 października 2024 r.
Publikacja androidx.work:work-*:2.10.0 Wersja 2.10.0 zawiera te zmiany.
Istotne zmiany od wersji 2.9.1
- Dodano tagi śledzenia do zadań z
WorkManager, co znacznie ułatwia zrozumienie polecenia „adb shell dumpsys jobscheduler”, ponieważ będzie ono zawierać nazwę wykonywanego procesu roboczego. Ślady są też dodawane wokół kluczowych obszarówWorkManager. - Do elementu sterującego dyspozytorem dodano
Configuration.workerCoroutineContext, w którym wykonywane jestCoroutineWorker. - Programiści mogą określić
NetworkRequestjako ograniczenie dla pracownika za pomocą metodyConstraints.setRequiredNetworkRequest. Umożliwia to bardziej szczegółową kontrolę nad tym, w której sieci ma działać instancja robocza. WorkManagerWersja 2.10.0 jest teraz kompilowana z pakietem SDK 35 i zawiera różne zmiany zapewniające zgodność z tym pakietem.
Wersja 2.10.0-rc01
24 października 2024 r.
Publikacja androidx.work:work-*:2.10.0-rc01 Wersja 2.10.0-rc01 zawiera te zmiany.
Wersja 2.10.0-beta01
2 października 2024 r.
Publikacja androidx.work:work-*:2.10.0-beta01 Wersja 2.10.0-beta01 zawiera te zmiany.
Wersja 2.10.0-alpha04
18 września 2024 r.
Publikacja androidx.work:work-*:2.10.0-alpha04 Wersja 2.10.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj powód zatrzymania
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT, gdy proces roboczy na pierwszym planie zostanie zatrzymany z powodu przekroczenia limitu czasu wykonania na podstawie typu usługi na pierwszym planie. (Ibd0af)
Wersja 2.10.0-alpha03
4 września 2024 r.
Publikacja androidx.work:work-*:2.10.0-alpha03 Wersja 2.10.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Dodano tagi śledzenia do zadań z
WorkManager, co znacznie ułatwia zrozumienie polecenia „adb shell dumpsys jobscheduler”, ponieważ będzie ono zawierać nazwę wykonywanego procesu roboczego. Ślady są też dodawane wokół kluczowych obszarówWorkManager.
Zmiany w interfejsie API
- Biblioteka WorkManager w wersji 2.10.0 jest teraz kompilowana z pakietem SDK 35.
- Naprawiono problem z przekroczeniem limitu czasu przez usługi działające na pierwszym planie typu „short service” i „data sync”, co powodowało błąd ANR, gdy
WorkManagernie wywoływałstopSelf(). Ta poprawka dotyczy tylko urządzeń z interfejsem API w wersji 34 i 35, w których wprowadzono typy usług działających na pierwszym planie. (ca06b2, b/364508145) - Nowe interfejsy API
WorkerParameters, które umożliwiają przełączanie procesu zdalnego, z którymWorkerjest powiązany podczas korzystania zWorkerFactory. (Ibdc8a, Ie8a90, I7373f)
Poprawki błędów
- Naprawiliśmy awarię spowodowaną przez
WorkManager, która występowała podczas próby ponownego uruchomienia długotrwałego procesu (np. procesu na pierwszym planie), gdy typ procesu na pierwszym planie miał wymagane w Androidzie 14 uprawnienia, które zostały cofnięte. (b/333957914) - Usunęliśmy ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszą (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszej (np. D8 w wersji 8.1). Klientom, którzy nie korzystają z wtyczki Androida do obsługi Gradle, zalecamy przejście na D8 w wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
Wersja 2.10.0-alpha02
17 kwietnia 2024 r.
Publikacja androidx.work:work-*:2.10.0-alpha02 Wersja 2.10.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy możliwość emitowania zakresów śledzenia za pomocą konfigurowalnego
@RestrictToTracerwWorkManager. (I17d7f, b/260214125) - Do elementu sterującego dyspozytora dodano
Configuration.workerCoroutineContext, w którym wykonywane jest działanieCoroutineWorker. Pomaga to całkowicie uniknąć używaniaDispatchers.DefaultwWorkManager. (Icd1b7) - Dodawanie niestandardowych modułów obsługi wyjątków w przypadku instancji roboczych (Ib1b74, b/261190695)
OneTimeWorkRequest.BuilderiPeriodicWorkRequest.Buildermożna teraz tworzyć za pomocąKClasszamiastClass:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6)- Klasa
WorkManagerzostała przeniesiona do języka Kotlin. Metody zwracające teraz wartościLiveData,ListenableFuturelubFlowpodają prawidłowe informacje o dopuszczalności wartości null. Może to wymagać zmian w kodzie źródłowym klientów, jeśli założenia dotyczące dopuszczalności wartości null w tym kodzie były nieprawidłowe. (If6757)
Wersja 2.10.0-alpha01
24 stycznia 2024 r.
Publikacja androidx.work:work-*:2.10.0-alpha01 Wersja 2.10.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Programiści mogą określić
NetworkRequestjako ograniczenie dla pracownika za pomocą metodyConstraints.setRequiredNetworkRequest. Umożliwia to bardziej szczegółową kontrolę nad tym, w której sieci ma działać instancja robocza.
Zmiany w interfejsie API
- Dodanie możliwości określenia
NetworkRequestjako ograniczenia. (Id98a1, b/280634452)
Wersja 2.9
Wersja 2.9.1
7 sierpnia 2024 r.
Publikacja androidx.work:work-*:2.9.1 Wersja 2.9.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono awarię spowodowaną przez
WorkManager, która próbowała ponownie uruchomić długotrwałe zadanie (np. zadanie na pierwszym planie), gdy typ zadania na pierwszym planie miał wymagane uprawnienia Androida 14, które zostały cofnięte. (b/333957914)
Wersja 2.9.0
29 listopada 2023 r.
Publikacja androidx.work:work-*:2.9.0 Wersja 2.9.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.8.0
- Dostrzegalność za pomocą
Flow. ZamiastLiveDatapostępy pracownika można teraz obserwować w przepływie za pomocąWorkManager.getWorkInfosFlowi podobnych metod. - Teraz
WorkManagerpodaje wskazówkę, dlaczego pracownik został wcześniej zatrzymany. Można go wysłać z samego procesu roboczego za pomocą metodygetStopReason()lub zWorkInfoza pomocągetStopReason(). - Precyzyjne planowanie okresowych węzłów roboczych za pomocą
setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie następnego okresowego harmonogramu pracy, który można wykorzystać do wdrożenia funkcji zaawansowanych, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie ponawiania lub uruchamianie procesu roboczego z wiadomościami przed przebudzeniem użytkownika każdego ranka bez dryfowania.ExistingPeriodicWorkPolicy.UPDATEnależy używać w połączeniu z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu roboczego podczas planowania następnego. - Testowanie biblioteki WorkManager z wątkami pasującymi do środowiska produkcyjnego.
ExecutorsMode.PRESERVE_EXECUTORSmożna używać winitializeTestWorkManager, aby zachować wykonawców ustawionych wConfigurationi używać rzeczywistego głównego wątku. - Interfejsy API współprogramów, takie jak
CoroutineWorker, zostały przeniesione z dodatkowego artefaktu work-runtime-ktx do głównego artefaktu work-runtime. Artefakt work-runtime-ktx jest teraz pusty.
Zmiany w interfejsie API
- Dziecko (
stopReason) zostało dodane do domuWorkInfo. UdostępniastopReasonpo uruchomieniu procesu. Może to być przydatne w raportowaniustopReasonw użyteczny sposób, ponieważ po zatrzymaniu procesu roboczego aplikacja może zostać bardzo szybko zamknięta. (I21386) - Zezwalaj na ustawianie wartości
Clockza pomocą konfiguracji i używanie jej do określania kolejności wykonywania testów Worker. (Ic586e) - Do klasy
ListenableWorkerdodano metodęgetStopReason(), która podaje wskazówkę, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano
WorkManagerTestInitHelper#closeWorkDatabase(), aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49) - Konstruktor
WorkInfojest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) work-runtime-ktxjest teraz pusta, aCoroutineWorkeri inne narzędzia specyficzne dla języka Kotlin są teraz dostępne w głównym artefakcie środowiska wykonawczego. (I71a9a)- Dodano metodę
setNextScheduleTimeOverride, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da). - Dodano
getNextScheduleTimeMillis, aby uzyskać informacje o zaplanowanym czasie działania, doWorkInfo. (I797e4) - Do elementu
WorkInfododawane są informacje o początkowym opóźnieniu i okresowości. (I52f2f) - Dodano metodę obserwowania pracowników za pomocą przepływów za pomocą metod
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - Dodano brakujące adnotacje
@RequiresApi(...)do konstruktorów i właściwościConstraints. Są one teraz zgodne z odpowiednimi adnotacjami w metodach ustawiających wConstraints.Builder, które istniały od wczesnych wersjiWorkManager. (I6d7d2) WorkManagerma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca wJobScheduleri zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)- Do
WorkInfododawane są ograniczenia. (I162c0)
Wersja 2.9.0-rc01
18 października 2023 r.
Publikacja androidx.work:work-*:2.9.0-rc01 Wersja 2.9.0-rc01 zawiera te zatwierdzenia.
- Brak zmian od ostatniej wersji beta
Wersja 2.9.0-beta01
6 września 2023 r.
Publikacja androidx.work:work-*:2.9.0-beta01 Wersja 2.9.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano stałe wartości dla przyczyn zatrzymania zwracanych przez funkcje
WorkInfo.stopReasoniListenableWorker.stopReason(I0cc00)
Wersja 2.9.0-alpha02
26 lipca 2023 r.
Publikacja androidx.work:work-*:2.9.0-alpha02 Wersja 2.9.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Teraz
WorkManagerpodaje wskazówkę, dlaczego pracownik został wcześniej zatrzymany. Można go wysłać z samego procesu roboczego za pomocą metodygetStopReason()lub zWorkInfoza pomocągetStopReason().
Zmiany w interfejsie API
- Użytkownik
stopReasonzostał dodany do grupyWorkInfo. UdostępniastopReasonpo uruchomieniu procesu. Może to być przydatne w raportowaniustopReasonw użyteczny sposób, ponieważ po zatrzymaniu procesu roboczego aplikacja może zostać bardzo szybko zamknięta. (I21386) - Zezwalaj na ustawianie zegara za pomocą konfiguracji i używaj go do określania kolejności wykonywania testów Worker. (Ic586e)
- Do klasy
ListenableWorkerdodano metodęgetStopReason(), która podaje wskazówkę, dlaczego instancja robocza została zatrzymana. (I07060) - Dodano
WorkManagerTestInitHelper#closeWorkDatabase(), aby uniknąć ostrzeżenia Closeguard o wycieku zasobów. (Ia8d49)
Poprawki błędów
- Dodaliśmy możliwość pomijania
overrideNextScheduleTimeza pomocąTestDriveri rozwiązaliśmy problemy z możliwością testowania. (Ic2905)
Wersja 2.9.0-alpha01
7 czerwca 2023 r.
Publikacja androidx.work:work-*:2.9.0-alpha01 Wersja 2.9.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Dostrzegalność za pomocą
Flow. ZamiastLiveDatapostępy pracownika można teraz obserwować w przepływie za pomocąWorkManager.getWorkInfosFlowi podobnych metod. - Precyzyjne planowanie okresowych węzłów roboczych za pomocą
setNextScheduleTimeOverride. Umożliwia to dynamiczne obliczanie następnego harmonogramu pracy okresowej, który można wykorzystać do wdrożenia funkcji zaawansowanych, takich jak adaptacyjne czasy odświeżania, niestandardowe zachowanie ponawiania lub uruchamianie procesu roboczego z wiadomościami przed przebudzeniem użytkownika każdego ranka bez odchyleń.ExistingPeriodicWorkPolicy.UPDATEnależy używać z tymi technikami, aby uniknąć anulowania aktualnie działającego procesu roboczego podczas planowania następnego. WorkManagertestowanie z użyciem wątków pasujących do produkcji.ExecutorsMode.PRESERVE_EXECUTORSmożna używać do zachowywania wykonawców ustawionych wConfigurationi do korzystania z rzeczywistego głównego wątku.- Interfejsy API współprogramów, takie jak
CoroutineWorker, zostały przeniesione z dodatkowego artefaktuwork-runtime-ktxdo głównego artefaktuwork-runtime.work-runtime-ktxjest teraz puste.
Zmiany w interfejsie API
- Konstruktor
WorkInfojest teraz publiczny, co może być przydatne podczas testowania. (Ia00b6, b/209145335) work-runtime-ktxjest teraz pusta, aCoroutineWorkeri inne narzędzia specyficzne dla języka Kotlin są teraz dostępne w głównym artefakciework-runtime. (I71a9a)- Dodano metodę
setNextScheduleTimeOverride, która umożliwia dokładne ustawianie okresowych harmonogramów pracy (I3b4da). - Zmieniono nazwę
getEarliestRunTimeMillisnagetNextScheduleTimeMillis. (I2bd7a) - Informacje o następnym zaplanowanym uruchomieniu zostaną dodane do
WorkInfo. (I797e4) - Do elementu
WorkInfododawane są informacje o początkowym opóźnieniu i okresowości. (I52f2f) - Dodano metodę obserwowania pracowników za pomocą przepływów za pomocą metod
getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlow,getWorkInfosFlow(If122a) - Dodano brakujące adnotacje
@RequiresApi(...)do konstruktorów i właściwości klasy Constraints. Są one teraz zgodne z odpowiednimi adnotacjami w metodach ustawiających wConstraints.Builder, które istniały od wczesnych wersjiWorkManager. (I6d7d2) WorkManagerma teraz osobny limit dla procesów roboczych URI treści, aby zapewnić im gwarantowane miejsca wJobScheduleri zapobiec pomijaniu aktualizacji treści przy dużym obciążeniu. Limit można skonfigurować za pomocąConfiguration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)- Do
WorkInfododano ograniczenia. (I162c0)
Wersja 2.8
Wersja 2.8.1
22 marca 2023 r.
Publikacja androidx.work:work-*:2.8.1 Wersja 2.8.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem ANR w
RescheduleReceiver, który wcześniej nie obsługiwał prawidłowo dwóch jednoczesnych transmisji. (b/236906724)
Wersja 2.8.0
8 lutego 2023 r.
Publikacja androidx.work:work-*:2.8.0 Wersja 2.8.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.7.0
Nowe funkcje
- Dodaliśmy możliwość aktualizowania
WorkRequestsw sposób nienaruszający pierwotnego czasu dodania do kolejki, łańcucha itp. Więcej informacji o tej funkcji znajdziesz w szczegółowym poście na blogu oraz w dokumentacji Javadoc dotyczącejWorkManager.updateWorkiExistingPeriodicWorkPolicy.UPDATE.
Zmiany w interfejsie API
- Dodano
WorkManager.updateWork, aby aktualizować zadania, zachowując ich pierwotny czas dodania do kolejki i łączenie w łańcuchy.(I9a248, b/219446409) - Dodano
ExistingPeriodicWorkPolicy.UPDATE. Ta zasada umożliwia aktualizowanie pracy okresowej według nazwy. Jest podobna do istniejącej funkcjiREPLACE, ale mniej inwazyjna: nie anuluje węzła roboczego, jeśli jest on aktualnie uruchomiony, i zachowuje czas umieszczenia w kolejce – opóźnienie początkowe i okres są obliczane na podstawie pierwotnego czasu umieszczenia w kolejce, a nie czasu aktualizacji.REPLACEzostało wycofane, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymi funkcjamiREPLACEiUPDATE. Jeśli nadal chcesz zachować poprzednią semantykę znakuREPLACE, możesz użyć nowo dodanego znakuCANCEL_AND_REENQUEUE, który jest identyczny ze znakiemREPLACE. (I985ed, b/219446409) - Dodano możliwość przechwytywania wyjątków harmonogramu za pomocą
Consumer<Throwable>(setSchedulingExceptionHandler). - Dodaliśmy możliwość przekazywania
Consumer<Throwable>za pomocą metody setInitializationExceptionHandler, aby określić, czy podczas próby zainicjowania biblioteki WorkManager wystąpiły problemy. - Pomoc w
OneTimeWorkRequestiPeriodicWorkRequestzostała przeniesiona zandroidx.work:work-runtime-ktxdoandroidx.work:work-runtime(I0010f, b/209145335) - Dodano metody pomocnicze
WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNames,WorkQuery.fromTags, aby bezpośrednio tworzyćWorkQuery. (b/199919736) (If48f2, b/199919736) - Dodano:
getForegroundInfodo listyWorker. (Ic1ead) RxWorkerzarówno w przypadku RxJava 2, jak i RxJava 3 ma terazsetForegroundzwracającyCompletable, którego można używać zamiastsetForegroundInfoAsynczwracającegoListenableFuture.RxWorkerzarówno w przypadku RxJava 2, jak i RxJava 3 zwracagetForegroundInfo, które zwracaSinglei może być używane zamiastgetForegroundInfoAsync, które zwracaListenableFuture. (b/203851459)- Ograniczenia można teraz tworzyć bezpośrednio, zamiast używać znaku
Constraints.Builder, co jest wygodne dla użytkowników języka Kotlin. (Idc390, b/137568653) - Dodaliśmy możliwość sprawdzenia, czy
WorkManagerzostała zainicjowana. Dodaliśmy też nowy interfejsgetConfiguration()API, który umożliwia deweloperom bibliotek uzyskanie konfiguracji, z jaką zainicjowano interfejsWorkManager. (I6eff3, b/212300336)
Poprawki błędów
- Rozwiązaliśmy problem z zachłannym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie procesów roboczych pod obciążeniem. (I9686b, b/248111307)
- Dodaliśmy
@RequiresPermissiondo interfejsów API, które wymagają przyznania uprawnieniaPOST_NOTIFICATIONSw przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278) - Przekazywanie anulowań z
CoroutineScopedoListenableFuturepodczas korzystania zsuspendCancellableCoroutine.
Wersja 2.8.0-rc01
7 grudnia 2022 r.
Publikacja androidx.work:work-*:2.8.0-rc01 Wersja 2.8.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- W tej wersji nie ma nowych funkcji. Jest to głównie zmiana wersji
Wersja 2.8.0-beta02
9 listopada 2022 r.
Publikacja androidx.work:work-*:2.8.0-beta02 Wersja 2.8.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiliśmy metodę
equalswWorkInfo, która wcześniej nie uwzględniała informacji o nowej generacji. (4977cc)
Wersja 2.8.0-beta01
5 października 2022 r.
Publikacja androidx.work:work-*:2.8.0-beta01 Wersja 2.8.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z zachłannym harmonogramem, który uniemożliwiał natychmiastowe uruchamianie procesów roboczych pod obciążeniem. (I9686b, b/248111307)
Wersja 2.8.0-alpha04
7 września 2022 roku
Publikacja androidx.work:work-*:2.8.0-alpha04 Wersja 2.8.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano funkcje
WorkerInfo.getGeneration()iWorkerParameters.getGeneration(), które zwracają wygenerowaną instancję roboczą. Pracownik ma wiele generacji, jeśli został zaktualizowany za pomocąWorkManager.updateWorklubWorkManager.enqueueUniquePeriodicWorkprzy użyciuExistingPeriodicWorkPolicy.UPDATE. Pamiętaj, że jeśli pracownik jest obecnie uruchomiony, ta metoda może zwrócić nowszą generację niż obecnie uruchomiony pracownik, jeśli podczas wykonywania pracownika nastąpiła aktualizacja. (I665c5, b/219446409) (I128a9, b/219446409) - Dodano
InitializationExceptionHandler, czyli procedurę obsługi wyjątków, która może służyć do określania, czy podczas inicjowaniaWorkManagerwystąpiły problemy. (I061de)
Wersja 2.8.0-alpha03
10 sierpnia 2022 r.
Publikacja androidx.work:work-*:2.8.0-alpha03 Wersja 2.8.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy możliwość aktualizacji
WorkRequestsw sposób nieinwazyjny, zachowując pierwotny czas dodania do kolejki, łańcuchowanie itp. Więcej informacji znajdziesz wWorkManager.updateWorkiExistingPeriodicWorkPolicy.UPDATE.
Zmiany w interfejsie API
WorkManager.updateWorkdodano, aby aktualizować zadania z zachowaniem pierwotnego czasu dodania do kolejki i łączenia w łańcuchy (I9a248, b/219446409).- Dodano
ExistingPeriodicWorkPolicy.UPDATE. Ta zasada umożliwia aktualizowanie okresowej pracy według nazwy. Jest podobna do istniejącej funkcjiREPLACE, ale mniej inwazyjna: nie anuluje węzła roboczego, jeśli jest on aktualnie uruchomiony, i zachowuje czas umieszczenia w kolejce – opóźnienie początkowe i okres są obliczane na podstawie pierwotnego czasu umieszczenia w kolejce, a nie czasu aktualizacji.REPLACEzostał wycofany, aby zmniejszyć zamieszanie między bardzo podobnie nazwanymiREPLACEiUPDATE. Jeśli nadal chcesz zachować poprzednią semantykę znakuREPLACE, możesz użyć nowo dodanego znakuCANCEL_AND_REENQUEUE, który jest identyczny ze znakiemREPLACE. (I985ed, b/219446409) - Dodaliśmy możliwość przechwytywania wyjątków od harmonogramu przez zdefiniowanie
SchedulingExceptionHandler. (I033eb) - Pomoc w
OneTimeWorkRequestiPeriodicWorkRequestzostała przeniesiona zandroidx.work:work-runtime-ktxdoandroidx.work:work-runtime(I0010f, b/209145335)
Poprawki błędów
- Dodaliśmy
@RequiresPermissiondo interfejsów API, które wymagają przyznania uprawnienia POST_NOTIFICATIONS w przypadku pakietu SDK w wersji 33 lub nowszej. (Ie542e, b/238790278)
Wersja 2.8.0-alpha02
6 kwietnia 2022 roku
Publikacja androidx.work:work-*:2.8.0-alpha02 Wersja 2.8.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Ograniczenia można teraz tworzyć bezpośrednio, zamiast używać klasy Builder, co jest wygodne dla użytkowników języka Kotlin. (Idc390, b/137568653)
- Dodaliśmy możliwość sprawdzenia, czy
WorkManagerzostała zainicjowana. Dodaliśmy też nowy interfejsgetConfiguration()API, który umożliwia deweloperom bibliotek uzyskanie konfiguracji, z jaką zainicjowano interfejsWorkManager. (I6eff3, b/212300336)
Wersja 2.8.0-alpha01
12 stycznia 2022 r.
Publikacja androidx.work:work-*:2.8.0-alpha01 Wersja 2.8.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano metody pomocnicze
WorkQuery.fromStates,WorkQuery.fromUniqueWorkNamesiWorkQuery.fromTags, aby umożliwić bezpośrednie tworzenie obiektu WorkQuery. (If48f2, b/199919736) - Dodaje eksperymentalne metody BuildCompat dla przyszłych pakietów SDK (Iafd82, b/207528937).
- Dodano
getForegroundInfodoWorker. (Ic1ead) - Dodano metody pomocnicze
WorkQuery.fromIdsdo tworzenia obiektu WorkQuery bezpośrednio na podstawie identyfikatorów. (Ie5bdf, b/199919736) - RxWorker ma teraz funkcję
setForegroundzwracającąCompletable, której można używać zamiast funkcjisetForegroundInfoAsynczwracającejListenableFuture. (I85156) - RxWorker dla RxJava 2 zwraca teraz
getForegroundInfoSingle, które można wykorzystać zamiastgetForegroundInfoAsynczwracającegoListenableFuture. (I21c91, b/203851459) - RxWorker dla RxJava 3 zwraca teraz
getForegroundInfoSingle, które można wykorzystać zamiastgetForegroundInfoAsynczwracającegoListenableFuture. (I1ca8a) - RxWorker ma teraz funkcję
setForegroundzwracającą wartośćCompletable, której można używać zamiast funkcjisetForegroundInfoAsynczwracającej wartośćListenableFuture. (I992a3, b/203851459)
Poprawki błędów
- Przekazywanie anulowań z
CoroutineScopedoListenableFuturepodczas korzystania zsuspendCancellableCoroutine. (I77e63)
Wersja 2.7
Wersja 2.7.1
17 listopada 2021 r.
Publikacja androidx.work:work-*:2.7.1 Wersja 2.7.1 zawiera te zatwierdzenia.
Poprawki błędów
- Anulowania w
CoroutineScopesą propagowane doListenableFuturepodczas korzystania zsuspendCancellableCoroutine. (I77e63) - Wyjątek jest zgłaszany natychmiast, gdy opóźnione żądania pracy są oznaczane jako przyspieszone. bef1762
Wersja 2.7.0
13 października 2021 r.
Publikacja androidx.work:work-*:2.7.0 Wersja 2.7.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.6.0
WorkManager wprowadza nowy interfejs
WorkRequest.Builder.setExpedited(...)API, który pomaga w przypadku ograniczeń usług działających na pierwszym planie w Androidzie 12.Gdy używasz
setExpedited(...), WorkManager deleguje zadania przyspieszone w JobSchedulerze od Androida 12, a w starszych wersjach Androida zapewnia zgodność wsteczną, delegując zadania do usługi na pierwszym planie.
Wersja 2.7.0-rc01
29 września 2021 r.
Publikacja androidx.work:work-*:2.7.0-rc01 Wersja 2.7.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest identyczna z wersją androidx.work:work-*:2.7.0-beta01.
Wersja 2.7.0-beta01
1 września 2021 roku
Publikacja androidx.work:work-*:2.7.0-beta01 Wersja 2.7.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Ograniczanie rywalizacji w SQLite w wielu procesach podczas inicjowania WorkManagera.
Zmiany w interfejsie API
- Usunięcie interfejsów API
@ExperimentalExpeditedWork, ponieważ bazowe interfejsy API platformy dla Androida 12 (S) są stabilne. (aosp/1792806)
Poprawki błędów
- Wyświetlanie lepszego komunikatu o błędzie w przypadku pracowników, którzy nie wdrożyli
getForegroundInfoAsync(). (aosp/1809376)
Wersja 2.7.0-alpha05
21 lipca 2021 r.
Publikacja androidx.work:work-*:2.7.0-alpha05 Wersja 2.7.0-alpha05 zawiera te zatwierdzenia.
Ta wersja zawiera też poprawki błędów z wersji WorkManagera2.6.0-beta02.
Wersja 2.7.0-alpha04
2 czerwca 2021 r.
Publikacja androidx.work:work-*:2.7.0-alpha04
Ta wersja zawiera też zmiany z wersji 2.6.0-beta01.
Zmiany w interfejsie API
ListenableWorker.setForegroundAsync()nie jest już wycofane.- W miarę możliwości zalecamy korzystanie z interfejsu
WorkRequest.Builder.setExpedited(...)API. Aby lepiej obsługiwać sytuacje, w których aplikacja nie podlega ograniczeniom dotyczącym usług działających na pierwszym planie, deweloperzy mogą używać interfejsuListenableWorker.setForegroundAsync()API. - Jeśli wywoływana jest funkcja
ListenableWorker.setForegroundAsync(), gdy aplikacja podlega ograniczeniom usługi na pierwszym planie, zgłasza ona wyjątek ForegroundServiceStartNotAllowedException.
Poprawki błędów
- Gdy zadania ekspresowe zostaną przeplanowane, nie będą już traktowane jako ekspresowe. Stają się one zwykłymi zadaniami.
Wersja 2.7.0-alpha03
21 kwietnia 2021 r.
Publikacja androidx.work:work-*:2.7.0-alpha03 Wersja 2.7.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
Z WorkManager
2.6.0-alpha02: dodaje obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200)W WorkManager
2.6.0-alpha02: dodanoRemoteCoroutineWorker, czyli implementacjęRemoteListenableWorker, która może łączyć się z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- W WorkManager
2.6.0-alpha02:dodaliśmy obsługę ograniczeniaTEMPORARILY_UNMETERED. (I08d5e) - Z WorkManager
2.6.0-alpha02:obsługa procesów roboczych w wielu procesach w przypadkusetProgressAsync(). (Ib6d08) - Z WorkManagera
2.6.0-alpha02:ustawWorkManagerInitializerjako publiczne, aby inneandroidx.startup.Initializermogły używać ich jako zależności. (I5ab11)
Wersja 2.7.0-alpha02
10 marca 2021 r.
Publikacja androidx.work:work-*:2.7.0-alpha02 Wersja 2.7.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Jawnie określ zmienność intencji
PendingIntent, aby rozwiązać problem z błędem podczas kierowania na Androida 12. (b/180884673)
Wersja 2.7.0-alpha01
18 lutego 2021 r.
Publikacja androidx.work:work-*:2.7.0-alpha01 Wersja 2.7.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
WorkManager wprowadza nowy interfejs API
WorkRequest.Builder.setExpedited(...), który uwzględnia ograniczenia dotyczące usług działających na pierwszym planie w Androidzie 12.Aplikacje nie mogą już uruchamiać usługi działającej na pierwszym planie, gdy działają w tle. Dlatego, aby lepiej obsługiwać długotrwałe zadania, które wcześniej były powiązane z cyklem życia usługi działającej na pierwszym planie, aplikacje mogą oznaczać
WorkRequestjako przyspieszone.Ten interfejs API zastępuje interfejsy
setForegroundAsync(...)/setForeground(...), które zostały wycofane.Gdy używasz
setExpedited(...), WorkManager deleguje zadania przyspieszone wJobSchedulerod Androida 12, zapewniając jednocześnie zgodność wsteczną w starszych wersjach Androida przez delegowanie do usług na pierwszym planie.
Zmiany w interfejsie API
- Dodaliśmy obsługę przyspieszonych
WorkRequest.
Wersja 2.6.0
Wersja 2.6.0
1 września 2021 roku
Publikacja androidx.work:work-*:2.6.0 Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.5.0
Biblioteka WorkManager używa teraz wartości
androidx.startupdo inicjowania biblioteki WorkManager. Jeśli w przeszłości do inicjowania biblioteki WorkManager 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ę procesów roboczych, które mogą działać w dowolnym procesie. (Iaf200)
Dodano
RemoteCoroutineWorker, czyli implementację klasy RemoteListenableWorker, którą można powiązać z procesem zdalnym. (I30578)
Wersja 2.6.0-rc01
4 sierpnia 2021 r.
Publikacja androidx.work:work-*:2.6.0-rc01 Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Ta wersja jest identyczna z wersją androidx.work:work-*:2.6.0-beta02.
Wersja 2.6.0-beta02
21 lipca 2021 r.
Publikacja androidx.work:work-*:2.6.0-beta02 Wersja 2.6.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
RemoteWorkManagerjest teraz prawidłowo odłączany odRemoteWorkManagerService, co umożliwia prawidłowe czyszczenieRemoteWorkManagerService. aosp/1730694RemoteListenableWorkerjest teraz prawidłowo odłączany odRemoteWorkerService, co umożliwia prawidłowe zwalnianie miejsca przezRemoteWorkerService. aosp/1743817ForceStopRunnabledziała teraz tylko w głównym procesie aplikacji. Jest to optymalizacja, która zapobiega konfliktom zasobów w przypadku aplikacji korzystających z wielu procesów. aosp/1749180, aosp/1761729
Wersja 2.6.0-beta01
2 czerwca 2021 r.
Publikacja androidx.work:work-*:2.6.0-beta01 Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Ta wersja zawiera drobne ulepszenia dokumentacji. Wersja ta jest w dużej mierze identyczna z wersją 2.6.0-alpha02.
Wersja 2.6.0-alpha02
21 kwietnia 2021 r.
Publikacja androidx.work:work-*:2.6.0-alpha02 Wersja 2.6.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
Dodaje obsługę instancji roboczych, które mogą działać w dowolnym procesie. (Iaf200)
Dodano
RemoteCoroutineWorker, czyli implementacjęRemoteListenableWorker, którą można powiązać z procesem zdalnym. (I30578)
Zmiany w interfejsie API
- Dodaliśmy obsługę ograniczenia sieci
TEMPORARILY_UNMETERED. (I08d5e) - Obsługa procesów roboczych w wielu procesach w przypadku
setProgressAsync(). (Ib6d08) - Ustaw
WorkManagerInitializerjako publiczny, aby inneandroidx.startup.Initializermogły używać go jako zależności. (I5ab11)
Wersja 2.6.0-alpha01
24 marca 2021 r.
Publikacja androidx.work:work-*:2.6.0-alpha01 Wersja 2.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
WorkManagerużywa terazandroidx.startupdo inicjowania biblioteki WorkManager. Wcześniej zajmował się tymandroidx.work.impl.WorkManagerInitializer. (aosp/1608813)Jeśli w przeszłości do inicjowania cyklu życia procesu używano
tools:node="remove"ContentProvider, musisz wykonać te czynności:<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(lub)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Zmiany w interfejsie API
- Dodaj interfejs API
Result.getOutputData(), który zwracaoutputDataelementu ListenableWorker. (Ie51e3)
Poprawki błędów
- Dodaliśmy obejście błędu OEM, który powoduje zgłaszanie wyjątku
SecurityExceptionpodczas korzystania z interfejsów APIAlarmManager. (aosp/1587518)
Wersja 2.5.0
Wersja 2.5.0
27 stycznia 2021 r.
Publikacja androidx.work:work-*:2.5.0 Wersja 2.5.0 zawiera te zatwierdzenia.
Najważniejsze zmiany od wersji 2.4.0
- Nowy artefakt
:work:work-multiprocessdla aplikacji, które korzystają z wielu procesów. Zwiększa to wydajność, ponieważ harmonogramy żądań pracy są ujednolicone w ramach jednego procesu.- Aby użyć
work-multiprocess, zdefiniuj zależność od:implementation "androidx.work:work-multiprocess:2.5.0" - Wyznacz główny proces za pomocą metody Configuration.Builder.setDefaultProcessName(String).
- Jeśli używasz
work-multiprocess, do zarządzaniaWorkRequestzalecamy używanie RemoteWorkManager. RemoteWorkManager zawsze kontaktuje się z wyznaczonym procesem. Planista w procesie również działa w wyznaczonym procesie.
- Aby użyć
- Czasami
ActivityManagernie może utworzyć instancjiJobService, aby rozpocząć zadanie. Powoduje to ciche odrzucenie bazowego zadania z powodu błędu platformy.WorkManagerzapewnia teraz, że podczas inicjowaniaApplicationprzez uzgadnianie zadań dla każdegoWorkRequestistnieją zadania pomocnicze. Znacznie zwiększa to niezawodność wykonywania zadań. (b/172475041, aosp/1489577) WorkManagerogranicza wzrost bazy danych, skracając czas buforowania, w którym śledzone sąWorkRequestpo zakończeniuWorkRequest. Wcześniej okres trwania wynosił7dni. Został on skrócony do1dnia + czasu trwania keepResultsForAtLeast. (aosp/1419708)TestListenableWorkerBuilderobsługuje teraz klasę reifikowaną rozszerzającąListenableWorker, co ułatwia testowanie. (aosp/1443299, b/169787349)- Inspektor WorkManagera jest teraz dostępny w Androidzie Studio Arctic Fox.
Wersja 2.5.0-rc01
13 stycznia 2021 r.
Publikacja androidx.work:work-*:2.5.0-rc01 Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy błąd, który powodował, że po zaktualizowaniu encji przy użyciu interfejsu API opartego na
WorkQuerynieprawidłowo unieważnianogetWorkInfosLiveData. (aosp/1540566, b/173769028) - Usunęliśmy błąd, który w rzadkich przypadkach powodował, że transakcje w bazie danych nie były oznaczane jako zakończone sukcesem. Powoduje to problemy na niektórych urządzeniach Motorola. (aosp/1535368, b/175944460)
- Naprawiono błąd polegający na ignorowaniu znaków
NoSuchElementExceptionpodczas próby odłączenia się od martwego procesu. (aosp/1530589) - Ulepsz
ConstraintTrackingWorker, aby zatrzymywać tylkoListenableWorker, które nie zostały jeszcze zatrzymane. (aosp/1496844, b/172946965) - Aktualizacja bibliotek androidx.work, aby były zgodne z Java 8 (Ibd2f2)
Wersja 2.5.0-beta02
2 grudnia 2020 r.
Publikacja androidx.work:work-*:2.5.0-beta02 Wersja 2.5.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd w
androidx.work:work-multiprocess, który powodował, że WorkManager nieumyślnie blokował wątek wywołujący podczas próby powiązania z wyznaczonym procesem. (aosp/1475538) - Naprawiliśmy błąd, który powodował, że
PeriodicWorkRequestnie były prawidłowo uzgadniane. (b/172475041, aosp/1489577) - Dodano obejście błędu platformy podczas zatrzymywania usługi działającej na pierwszym planie w przypadku korzystania z interfejsów API
setForeground*. (b/170924044, aosp/1489901)
Wersja 2.5.0-beta01
28 października 2020 r.
Publikacja androidx.work:work-*:2.5.0-beta01 Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
WorkManagerautomatycznie ogranicza liczbęWorkRequest, które mogą być pobierane przez harmonogram w procesie. Żądania są nadal wykonywane w kolejności FIFO. (aosp/1455228)WorkManagerpróbuje odzyskać dane, gdy magazyn danych aplikacji jest w złym stanie. (aosp/1463103)
Poprawki błędów
- Gdy
ListenableWorkerzostaną przerwane, natychmiast oznacz je jakoENQUEUED, aby można było je później przełożyć. (aosp/1455618, b/170273988)
Wersja 2.5.0-alpha03
14 października 2020 r.
Publikacja androidx.work:work-*:2.5.0-alpha03 Wersja 2.5.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
TestListenableWorkerBuilderiTestWorkerBuildernie używają typów surowych. (I883ad, b/169787349)
Poprawki błędów
- Użyj
ApplicationInfo, aby określić nazwę domyślnego procesu aplikacji. (b/168716641, aosp/1429950) - Popraw reguły widoczności dla
RemoteWorkManageriRemoteWorkContinuation. Te interfejsy API nie są już oznaczone jako@Restricted. (aosp/1432091) - Napraw reguły ProGuard dla elementu
:work:work-multiprocess. (aosp/1432091) - Ulepsz cykle życia powiadomień w przypadku długotrwałych zadań powiązanych z usługą działającą na pierwszym planie. (b/168502234, aosp/1431331)
Wersja 2.5.0-alpha02
16 września 2020 roku
Publikacja androidx.work:work-*:2.5.0-alpha02 Wersja 2.5.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj interfejs API do WorkQuery, aby móc używać
iddo wysyłania zapytań doWorkInfo. (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:- Bibliotekę WorkManager należy zwykle zainicjować w każdym procesie aplikacji. Nie jest to dobre rozwiązanie, ponieważ zwiększa konkurencję w SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, których można używać do wyznaczania głównego procesu aplikacji za pomocą
Configuration#setDefaultProcessName(processName).processNameto pełna i jednoznaczna nazwa procesu, która wygląda tak:packageName:processName(np.com.example:remote). - Nowy zestaw interfejsów API:
RemoteWorkManageriRemoteWorkContinuationdoenqueue,canceliqueryżądań pracy. Te interfejsy API nie obejmują wariantówLiveData, aby uniknąć konfliktów SQLite w wielu procesach. Wszystkie wywołaniaenqueue,canceliquerysą przekazywane do procesu aplikacjiprimaryza pomocą AIDL i zwracają płynnyListenableFuture. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- Bibliotekę WorkManager należy zwykle zainicjować w każdym procesie aplikacji. Nie jest to dobre rozwiązanie, ponieważ zwiększa konkurencję w SQLite, co z kolei powoduje inne problemy. WorkManager ma teraz nowe interfejsy API, których można używać do wyznaczania głównego procesu aplikacji za pomocą
Zmiany w interfejsie API
- WorkManager teraz bardziej agresywnie usuwa ukończone obiekty
WorkRequest, które nie mają niekompletnych zależności. Okres buforowy zmieniono z7dni na1dzień. (aosp/1419708)
Poprawki błędów
- Biblioteka WorkManager aktywnie uzgadnia teraz zadania, dzięki czemu zadania
WorkRequestiJobSchedulersą zsynchronizowane po zainicjowaniuWorkManager. (aosp/1412794, b/166292069)
Wersja 2.5.0-alpha01
19 sierpnia 2020 r.
Publikacja androidx.work:work-*:2.5.0-alpha01 Wersja 2.5.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Zmiany w wewnętrznych interfejsach API, które pozwolą nam w przyszłości udostępniać lepsze narzędzia z
WorkManager. Będziemy na bieżąco informować o dalszych zmianach.
Poprawki błędów
- Obsługa symbolu
SecurityExceptionpodczas śledzenia stanu sieci na niektórych urządzeniach. (aosp/1396969)
Wkład zewnętrzny
- Poprawienie dokumentacji
ArrayCreatingInputMergerprzez Zaca Sweersa (github/43).
Wersja 2.4.0
Wersja 2.4.0
22 lipca 2020 r.
Publikacja androidx.work:work-*:2.4.0 Wersja 2.4.0 zawiera te zatwierdzenia.
Najważniejsze zmiany od wersji 2.3.0
- Planista w trakcie przetwarzania
WorkManagerjest teraz bardziej wydajny. Wcześniej w trakcie przetwarzaniaScheduleruwzględniało tylko wykonywanie zadań, które nie były opóźnione i spełniały ograniczenia. Harmonogram w toku śledzi terazWorkRequest, które mogą zostać wykonane w przyszłości, w tym PeriodicWorkRequest. ProcesSchedulernie podlega też limitom planowania (ale nadal jest ograniczony rozmiaremExecutorużywanego przez WorkManagera). Oznacza to, że aplikacja może teraz wykonywać znacznie więcej obiektów WorkRequest, gdy jest na pierwszym planie. Aby zarządzać wykonywaniem opóźnionych zadań na pierwszym planie,WorkManagerwprowadza też nowy konfigurowalny elementRunnableScheduler. (aosp/1185778) - WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność:
implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904) - Dodaliśmy możliwość wysyłania zapytań o
WorkInfoza pomocąWorkQuery. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania oWorkInfona podstawie kombinacji kilku atrybutów. Więcej informacji znajdziesz na stronachWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)iWorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546) Dodaj możliwość przesyłania do
WorkManagerpróśb o informacje diagnostyczne za pomocą:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"Dostarcza to wielu przydatnych informacji, w tym:
- WorkRequesty, które zostały ukończone w ciągu ostatnich 24 godzin.
- Obecnie wykonywane obiekty WorkRequest.
- Zaplanowane prośby o wykonanie usługi. (aosp/1235501)
Dodaj
ExistingWorkPolicy.APPEND_OR_REPLACE, który jest podobny doAPPEND, ale zastępuje łańcuch, który został anulowany lub nie spełnia wymagań wstępnych. (b/134613984, aosp/1199640)Umożliwia dodanie niestandardowego
RunnableSchedulerdo śledzenia próśb o wykonanie, które mają zostać zrealizowane w przyszłości. Jest on używany przez harmonogram w procesie. (aosp/1203944)Dodaliśmy obsługę dynamicznego dodawania fabryk do delegowania podczas korzystania z
DelegatingWorkerFactory. (b/156289105, aosp/1309745)Dostosuj śledzenie ograniczeń
BATTERY_NOT_LOWdo platformy. (aosp/1312583)Harmonogram w procesie korzysta teraz z lepszych interfejsów API do określania nazwy procesu. Jest to przydatne w przypadku aplikacji, które korzystają z wielu procesów. (aosp/1324732)
Nowe reguły Lint, które wymuszają:
- Używanie odpowiedniego znaku
foregroundServiceTypepodczas korzystania z interfejsów APIsetForegroundAsync(). (b/147873061, aosp/1215915) - Określanie identyfikatorów JobScheduler, których WorkManager powinien używać podczas bezpośredniego korzystania z interfejsów API JobService. aosp/1223567
- Dodaliśmy nową regułę lint, która zapewnia, że implementacje
ListenableWorkersą terazpublic, gdy używana jest domyślna wartośćWorkerFactory. (aosp/1291262)
- Używanie odpowiedniego znaku
Wywołania
setForegroundAsync(), które nie zostaną ukończone przed ukończeniemListenableWorker, będą teraz sygnalizowane za pomocąIllegalStateExceptionw zwróconymListenableFuture. (aosp/1262743)Rozwiązanie problemu polegającego na tym, że po przerwaniu działania usługi na pierwszym planie
Workernie zatrzymuje się usługa na drugim planieForegroundService. (b/155579898, aosp/1302153)Naprawiono błąd, w którym
WorkManagerpróbuje wykonać wiele instancjiWorkerpowiązanych z usługą na pierwszym planie (b/156310133, aosp/1309853).
Wersja 2.4.0-rc01
24 czerwca 2020 r.
Publikacja androidx.work:work-*:2.4.0-rc01 Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Harmonogram w procesie korzysta teraz z lepszych interfejsów API do określania nazwy procesu. Jest to przydatne w przypadku aplikacji, które korzystają z wielu procesów. (aosp/1324732)
Wersja 2.4.0-beta01
20 maja 2020 r.
androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 i androidx.work:work-testing:2.4.0-beta01. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że po przerwaniu działania usługi na pierwszym planie
Workernie zatrzymuje się usługa na drugim planieForegroundService. (b/155579898, aosp/1302153) - Naprawiono błąd, w którym
WorkManagerpróbuje wykonać wiele instancjiWorkerpowiązanych z usługą działającą na pierwszym planie (b/156310133, aosp/1309853). - Dodaliśmy obsługę dynamicznego dodawania fabryk, do których można przekazywać zadania, podczas korzystania z
DelegatingWorkerFactory. (b/156289105, aosp/1309745) - Dostosuj śledzenie ograniczeń
BATTERY_NOT_LOWdo platformy. (aosp/1312583)
Wersja 2.4.0-alpha03
29 kwietnia 2020 r.
Publikacja androidx.work:work-*:2.4.0-alpha03 Wersja 2.4.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- WorkManager obsługuje teraz RxJava 3. Aby używać RxJava 3, musisz uwzględnić tę zależność:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904) - Dodaliśmy nową regułę lint, która zapewnia, że implementacje
ListenableWorkersą terazpublic, gdy używana jest domyślna wartośćWorkerFactory. (aosp/1291262)
Zmiany w interfejsie API
- Wywołanie
setProgressAsync()po zakończeniu działaniaListenableWorkerbędzie teraz sygnalizowaćExceptionza pomocąListenableFuture. (aosp/1285494) WorkQuery.Builderjest teraz oznaczony jakofinal. (aosp/1275037)- Metody fabryczne
WorkQuery.Builder,withStates,withTagsiwithUniqueWorkNameszostały zmienione nafromStates,fromTagsifromUniqueWorkNames. (aosp/1280287)
Poprawki błędów
- Ignoruj
SecurityExceptionpodczas śledzenia stanu sieci urządzenia. (b/153246136, aosp/1280813)
Wersja 2.4.0-alpha02
1 kwietnia 2020 r.
Publikacja androidx.work:work-*:2.4.0-alpha02 Wersja 2.4.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nową regułę Lint, która ostrzega, gdy
WorkRequestwymaga zarównoConstraints.setRequiresCharging(...), jak iConstraints.setRequiresDeviceIdle(...). Niektóre urządzenia nigdy nie są ładowane i jednocześnie nie są w stanie bezczynności. W związku z tym takie żądania będą uruchamiane rzadziej niż oczekiwano. (aosp/1253840)
Zmiany w interfejsie API
Dodaliśmy możliwość wysyłania zapytań o
WorkInfoza pomocąWorkQuery. Jest to przydatne, gdy deweloperzy chcą wysyłać zapytania oWorkInfona podstawie kombinacji kilku atrybutów. Więcej informacji znajdziesz na stronachWorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...)iWorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)Wywołania funkcji
setForegroundAsync(), które nie zostaną zakończone przed zakończeniem funkcjiListenableWorker, będą teraz sygnalizowane za pomocą parametruIllegalStateExceptionw zwróconym obiekcieListenableFuture. (aosp/1262743)
Poprawki błędów
- Naprawiono regułę lint, która sprawdza nieprawidłowe czasy trwania interwałów w przypadku
PeriodicWorkRequest. (aosp/1254846, b/152606442)
Wersja 2.4.0-alpha01
4 marca 2020 r.
Publikacja androidx.work:work-*:2.4.0-alpha01 Wersja 2.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Planista w trakcie przetwarzania
WorkManagerjest teraz bardziej wydajny. Wcześniej harmonogram w trakcie przetwarzania uwzględniał tylko wykonywanie zadań, które nie były opóźnione i spełniały ograniczenia. Harmonogram w trakcie przetwarzania śledzi terazWorkRequest, które mogą zostać wykonane w przyszłości, w tymPeriodicWorkRequest. Procesowy harmonogram nie uwzględnia też limitów planowania (ale nadal jest ograniczony rozmiaremExecutorużywanego przez WorkManagera). Oznacza to, że gdy aplikacja działa na pierwszym planie, może wykonywać znacznie więcejWorkRequest. (aosp/1185778)Dodano możliwość żądania informacji diagnostycznych z biblioteki WorkManager za pomocą
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". Dostarcza to wielu przydatnych informacji, w tym:- WorkRequesty, które zostały ukończone w ciągu ostatnich 24 godzin.
- Obecnie wykonywane obiekty WorkRequest.
- Zaplanowane prośby o wykonanie usługi. (aosp/1235501)
Nowe reguły Lint, które wymuszają:
- Używanie odpowiedniego znaku
foregroundServiceTypepodczas korzystania z interfejsów APIsetForegroundAsync(). (b/147873061, aosp/1215915) - Określanie
JobScheduleridentyfikatorów, którychWorkManagernależy używać podczas bezpośredniego korzystania z interfejsów APIJobService. (aosp/1223567)
- Używanie odpowiedniego znaku
Zmiany w interfejsie API
Dodaj parametr
ExistingWorkPolicy.APPEND_OR_REPLACE, który jest podobny do parametruAPPEND, ale zastępuje łańcuch, który anulował lub nie spełnił wymagań wstępnych. (b/134613984, aosp/1199640)Umożliwia dodanie niestandardowego
RunnableSchedulerdo śledzeniaWorkRequest, które mają zostać wykonane w przyszłości. Jest on używany przez harmonogram w procesie. (aosp/1203944)
Poprawki błędów
- Wycofano
setProgress()wRxWorker, ponieważ wcześniej zwracałoSingle<Void>, czyli typ niemożliwy. Dodaliśmy nowy interfejs APIsetCompletableProgress(), który zwracaCompletable, oraz nowe reguły Lint, które pomagają w migracji do nowych interfejsów API. (b/150080946, aosp/1242665)
Wersja 2.3.4
Wersja 2.3.4
18 marca 2020 r.
Publikacja androidx.work:work-*:2.3.4 Wersja 2.3.4 zawiera te zatwierdzenia.
Poprawki błędów
- Usunęliśmy błąd, który powodował uruchamianie wielu instancji długotrwałego działania
Workers po przekroczeniu 10-minutowego okna wykonywania. (aosp/1247484, b/150553353) - Poprawka dla narzędzia lint biblioteki WorkManager
IssueRegistry. Dziękujemy @ZacSweers z Slacka za ten wkład. (aosp/1217923)
Wersja 2.3.3
Wersja 2.3.3
4 marca 2020 r.
Publikacja androidx.work:work-*:2.3.3 Wersja 2.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że jeśli
Workerzostało przerwane, nie było prawidłowo ponownie planowane. (b/150325687, aosp/1246571)
Wersja 2.3.2
Wersja 2.3.2
19 lutego 2020 r.
androidx.work:work-*:2.3.2 są publikowane. Wersja 2.3.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązuje problem polegający na tym, że w rzadkich przypadkach WorkManager przekracza limit 100 zadań w JobSchedulerze. (aosp/1226859, b/149092520)
- Poprawka dotycząca sytuacji wyścigu w klasach ConstraintControllers. (aosp/1220100)
- Ulepszyliśmy zarządzanie cyklem życia usługi działającej na pierwszym planie w przypadku długotrwałych procesów roboczych. (aosp/1226295)
- Ulepszyliśmy zarządzanie anulowaniem powiadomień dotyczących długotrwałych zadań po anulowaniu zadania. (aosp/1228346)
Wersja 2.3.1
Wersja 2.3.1
5 lutego 2020 r.
Publikacja androidx.work:work-*:2.3.1 Wersja 2.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Lepsze zarządzanie cyklem życia
Notificationw przypadku długotrwałychWorker, które działają, gdy aktywny jestServicena pierwszym planie. (aosp/1218539, b/147249312) WorkManagerzależy teraz od stabilnej wersjiandroidx.sqlite:sqlite-framework:2.1.0. (aosp/1217729)- Dodano reguły lint, aby zapewnić, że w przypadku używania
foregroundServiceTypewForegroundInfowAndroidManifest.xmlokreślonoforegroundServiceType. (aosp/1214207, b/147873061)
Wersja 2.3.0
Wersja 2.3.0
22 stycznia 2020 r.
androidx.work:work-*:2.3.0 została opublikowana bez zmian od 2.3.0-rc01. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.2.0
- Obsługa długotrwałych lub ważnych zadań za pomocą
ListenableWorker#setForegroundAsync(). - Obsługa postępu instancji roboczej za pomocą
ListenableWorker#setProgressAsync(). - WorkManager zawiera teraz dodatkowe reguły lint jako część biblioteki, co pomaga w wykrywaniu błędów na wczesnym etapie.
Wersja 2.3.0-rc01
8 stycznia 2020 r.
Publikacja androidx.work:work-*:2.3.0-rc01 Wersja 2.3.0-rc01 zawiera te zmiany.
Ta wersja jest identyczna z wersją 2.3.0-beta02
Poprawki błędów
- Artefakt
work-testingdefiniuje teraz zależnośćapiodwork-runtime-ktx. (aosp/1194410)
Wersja 2.3.0-beta02
18 grudnia 2019 r.
Publikacja androidx.work:work-*:2.3.0-beta02 Wersja 2.3.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy lepszy komunikat o błędzie w przypadku nieodwracalnych wyjątków SQLite. (aosp/1185777)
- Dodano regułę lint, która zapewnia, że dostawca treści
androidx.work.impl.WorkManagerInitializerjest usuwany zAndroidManifest.xmlpodczas korzystania z inicjowania na żądanie. (aosp/1167007) - Dodano ostrzeżenie narzędzia lint, gdy w przypadku elementu
PeriodicWorkRequestużyto elementuenqueue()zamiastenqueueUniquePeriodicWork(). (aosp/1166032)
Zmiany w interfejsie API
ForegroundInfowymaga teraz podania atrybutunotificationId, który ma być używany podczas korzystania z atrybutuListenableWorker.setForegroundAsync(). Jest to zmiana powodująca niezgodność. Dzięki temu możesz uruchamiać równolegle wiele długotrwałychWorker.WorkManagerlepiej 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)
- Usunęliśmy błąd, który powodował, że pusta lista
WorkRequests prowadziła do utworzenia nieprawidłowego łańcuchaWorkContinuation. (b/142835274, aosp/1157051)
Zmiany zależności
- WorkManager korzysta teraz z biblioteki Room w wersji 2.2.2.
Wersja 2.3.0-beta01
20 listopada 2019 r.
Publikacja androidx.work:work-*:2.3.0-beta01 Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nową regułę lint, która zapobiega błędom programistów wynikającym z nieprawidłowej implementacji
androidx.work.Configuration.Providerpodczas korzystania z inicjowania na żądanie. aosp/1164559
Wersja 2.3.0-alpha03
23 października 2019 r.
Publikacja androidx.work:work-*:2.3.0-alpha03 Wersja 2.3.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Dodano interfejs
WorkManager.createCancelPendingIntent()API, który ułatwia anulowanieWorkRequestbez konieczności rejestrowania kolejnego komponentu wAndroidManifest.xml. Ten interfejs API szczególnie ułatwia anulowanieWorkRequestzNotification. Spodziewamy się, że w wersji 2.3.0 zostaną wprowadzone nowe interfejsy API na pierwszym planie. - Biblioteka WorkManager zależy teraz od wersji
androidx.room:*:2.2.0stable.
Zmiany w interfejsie API
- Zmieniliśmy nazwę interfejsu
ForegroundInfo.getNotificationType()naForegroundInfo.getForegroundServiceType(), aby zachować większą spójność z interfejsami API platformy bazowej. (b/142729893, aosp/1143316)
Poprawki błędów
- Usunęliśmy błąd spowodowany niepotrzebnym wywołaniem funkcji
setTransactionSuccessful()poza transakcją. Dzieje się tak w przypadku rzadkich migracji. (b/142580433, aosp/1141737)
Wersja 2.3.0-alpha02
9 października 2019 r.
Publikacja androidx.work:work-*:2.3.0-alpha02 Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- WorkManager obsługuje teraz długotrwałe lub ważne zadania, które powinny być utrzymywane przy życiu przez system operacyjny. Więcej informacji znajdziesz w artykule
ListenableWorker#setForegroundAsync()(lubCoroutineWorker#setForeground()w przypadku języka Kotlin). (aosp/1133636)
Zmiany w interfejsie API
- Interfejs API
containsKeyw przeglądarceDatazostał zmieniony nahasKeyWithValueOfType. Odpowiednia metoda rozszerzająca w bibliotecektxrównież została zmieniona. (b/141916545)
Poprawki błędów
- Gdy liczba zadań
WorkRequestw kolejce zbliża się do limitów planowania, WorkManager planuje pracę w sprawiedliwy sposób. (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ępie, gdy instancja robocza zostanie przerwana lub osiągnie stan końcowy. (aosp/1114572)
Datama teraz znacznie bardziej przydatnątoString()reprezentację. (b/140945323)Datama teraz lepsząequals()metodę. Obsługuje też operatordeepEqualsw przypadku typówArray. (b/140922528)- WorkManager przechowuje teraz wewnętrzną bazę danych i pliki preferencji w katalogu bez kopii zapasowej. (b/114808216)
Wersja 2.3.0-alpha01
22 sierpnia 2019 r.
Publikacja androidx.work:work-*:2.3.September 5, 20190-alpha01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
ListenableWorkermogą teraz ustawiać postępy za pomocą interfejsusetProgressAsync()API. Dodaliśmy też odpowiedni interfejs APIsuspend-ingsetProgressw przeglądarceCoroutineWorkeri interfejs APIsetProgressw przeglądarceRxWorker, który zwraca wartośćSingle<Void>. Dzięki tym nowym interfejsom API instancje robocze mogą przekazywać informacje o postępach za pomocąWorkInfo, który ma odpowiedni interfejs APIgetProgress. (b/79481554)Datama interfejs APIcontainsKey(), którego można używać do sprawdzania, czy dane wejściowe doWorkermają klucze o oczekiwanym typie. (b/117136838)Datamożna teraz serializować za pomocąData.toByteArray()iData.fromByteArray(). Pamiętaj, że w przypadkuDatanie ma gwarancji dotyczących wersji, więc nie należy go utrwalać ani używać do komunikacji międzyprocesowej między aplikacjami. Można ich bezpiecznie używać tylko w przypadku wielu procesów tej samej aplikacji.- Dodaliśmy możliwość określenia
InputMergerFactoryza pomocąConfiguration.setInputMergerFactory. (b/133273159)
Zmiany w interfejsie API
- WorkManager zgłosi instancję
IllegalStateException, jeśliWorkerFactoryzwróci instancjęListenableWorker, która została wcześniej wywołana. (b/139554406) - Aktualizacje dokumentacji dotyczące anulowania
ListenableFuturei funkcjionStopped()wListenableWorker. (b/138413671)
Poprawki błędów
- Scheduler w trakcie przetwarzania ignoruje teraz elementy
WorkRequestz ograniczeniemidle. Te żądania są teraz odbierane przezJobSchedulertylko wtedy, gdy urządzenie jest rzeczywiścieidle. (aosp/1089779) TestSchedulerw testach prawidłowo używa teraz określonego parametruExecutorw przypadku wewnętrznego wykonawcy zadań. (aosp/1090749)
Wersja 2.2.0
Wersja 2.2.0
15 sierpnia 2019 r.
Publikacja androidx.work:work-*:2.2.0 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
To wydanie jest identyczne z wydaniem androidx.work:work-*:2.2.0-rc01.
Ważne zmiany w wersji 2.2.0 w porównaniu z wersją 2.1.0
androidx.work:work-gcm:2.2.0 to nowy artefakt Mavena, który obsługuje używanie GCMNetworkManager jako harmonogramu, gdy Usługi Google Play są dostępne na poziomach interfejsu API <= 22. Jest to opcjonalna zależność, która pomaga w bardziej niezawodnym i wydajnym przetwarzaniu w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z Usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Google Play są niedostępne, WorkManager będzie nadal korzystać z AlarmManager na starszych urządzeniach.
Wersja 2.2.0-rc01
30 lipca 2019 r.
Publikacja androidx.work:work-*:2.2.0-rc01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiliśmy błąd w implementacji AlarmManager, który powodował przedwczesne wyłączanie usługi i w rzadkich przypadkach skutkował błędem
RejectedExecutionException. (aosp/1092374) (b/138238197). - Dodaliśmy obejście problemu
NullPointerExceptionpodczas korzystania z interfejsów APIJobSchedulerna niektórych urządzeniach. (aosp/1091020) (b/138364061), (b/138441699)
Wersja 2.2.0-beta02
19 lipca 2019 r.
Publikacja androidx.work:work-*:2.2.0-beta02 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność jacoco, która została wprowadzona w wersji
2.2.0-beta01.
Wersja 2.2.0-beta01
17 lipca 2019 r.
Publikacja androidx.work:work-*:2.2.0-beta01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
androidx.work:work-gcm:2.2.0-beta01to nowy artefakt Mavena, który obsługuje używanie GCMNetworkManager jako harmonogramu, gdy Usługi Google Play są dostępne na poziomach interfejsu API <= 22. Jest to opcjonalna zależność, która pomaga w bardziej niezawodnym i wydajnym przetwarzaniu w tle w starszych wersjach interfejsu API. Jeśli Twoja aplikacja korzysta z usług Google Play, dodaj tę zależność do pliku Gradle, aby automatycznie uzyskać obsługę GCMNetworkManager. Jeśli Usługi Google Play nie są dostępne, WorkManager będzie nadal korzystać z AlarmManager na starszych urządzeniach.
Poprawki błędów
- Poprawka
IllegalArgumentExceptionpodczas śledzenia stanu sieci na tabletach Nvidia Shield K1. (aosp/1010188)
Wersja 2.1.0
Wersja 2.1.0
11 lipca 2019 r.
Publikacja androidx.work:work-*:2.1.0 To wydanie jest identyczne z wydaniem androidx.work:work-*:2.1.0-rc01.
Ważne zmiany od wersji 2.0.1
work-runtime-ktxwymaga teraz Javy 8. Jeśli napotkasz jakieś problemy, możesz dodać do plikubuild.gradlete informacje:kotlinOptions { jvmTarget = "1.8" }- Dodano inicjowanie na żądanie biblioteki WorkManager, która będzie tworzona tylko wtedy, gdy będzie do niej odwołanie. b/127497100 Aby skonfigurować projekt do inicjowania na żądanie:
- Wyłącz automatyczny inicjator.
- Zaimplementuj
Configuration.Providerw niestandardowym obiekcieApplication. - Zmień wszystkie odwołania do
WorkManager.getInstance()naWorkManager.getInstance(Context). W ramach tej zmiany wycofaliśmyWorkManager.getInstance(). Zawsze bezpieczniej jest wywoływać nowy zamiennikWorkManager.getInstance(Context), nawet jeśli nie wykonujesz inicjowania na żądanie.
PeriodicWorkRequestobsługują teraz początkowe opóźnienia. Możesz użyć metodysetInitialDelayw przypadkuPeriodicWorkRequest.Builder, aby ustawić początkowe opóźnienie. b/111404867- Dodaliśmy możliwość przekazywania uprawnień co najmniej 1 zarejestrowanemu
WorkerFactoryza pomocąDelegatingWorkerFactory. b/131435993 - Dodano możliwość dostosowania
Executorużywanego przez WorkManagera do wszystkich wewnętrznych operacji za pomocąConfiguration.Builder.setTaskExecutor. - Dodano możliwość tworzenia klas
WorkeriListenableWorker, które można testować jednostkowo, za pomocąTestWorkerBuilderiTestListenableWorkerBuilderw artefakciework-testing.- Zwróć uwagę, że
work-testingpobiera teraz język Kotlin jako zależność i domyślnie zawiera kilka rozszerzeń Kotlin.
- Zwróć uwagę, że
- Dodano liczbę prób uruchomienia do
WorkInfo. b/127290461 - Typy
Datamogą teraz przechowywać i pobierać bajty oraz tablice bajtów. NIE zmienia to maksymalnego rozmiaru obiektówData. - WorkManager zależy teraz od
Room 2.1.0, co powinno rozwiązać niektóre problemy z bazą danych.
Wersja 2.1.0-rc01
27 czerwca 2019 r.
Publikacja androidx.work:work-*:2.1.0-rc01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiliśmy błąd, który powodował awarię aplikacji podczas wykonywania zadań z
JobSchedulerw trakcie tworzenia kopii zapasowej b/135858602.
Wersja 2.1.0-beta02
20 czerwca 2019 r.
Publikacja androidx.work:work-*:2.1.0-beta02 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
TestListenableWorkerBuilderużywa teraz prawidłowego znakuWorkerFactorypodczas tworzenia instancjiListenableWorker. b/135275844- Usunęliśmy błąd, który powodował odchylenia w oknach wykonywania
WorkRequestz powodu śmierci procesu. b/135272196
Wersja 2.1.0-beta01
13 czerwca 2019 r.
Publikacja androidx.work:work-*:2.1.0-beta01 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- WorkManager zależy teraz od
Room 2.1.0, co powinno rozwiązać niektóre problemy z bazą danych. - Usunięto niektóre operacje wejścia-wyjścia dysku startowego w wątku głównym.
- Usunięto potencjalny impas w śledzeniu ograniczeń. b/134361006
- Wcześniejsze anulowanie nieprawidłowych zadań przypisanych do WorkManagera. b/134058261
- Dodaliśmy do interfejsów JobScheduler API kilka wywołań defensywnych w przypadku nieprawidłowo działających urządzeń.
Wersja 2.1.0-alpha03
5 czerwca 2019 r.
Publikacja androidx.work:*:2.1.0-alpha03
Poprawki błędów
- Ulepszona dokumentacja
PeriodicWorkRequest. WorkManagerTestInitHelperużywa teraz prawidłowego wykonawcy w tle do testów.- Rozwiązania problemów z SQLite podczas obsługi dużych transakcji na niektórych urządzeniach. (b/130182503)
- Zależności WorkManagera są teraz bardziej szczegółowe. (b/133169148).
- Obejście błędów specyficznych dla producenta OEM w implementacji
JobSchedulerpodczas planowania zadań za pomocą biblioteki WorkManager. - Ulepszenia harmonogramu opartego na AlarmManager, które dotyczą czasu życia usługi i wcześniej powodowały rzadkie awarie. (b/133313734)
Wersja 2.1.0-alpha02
16 maja 2019 r.
Wydanie biblioteki WorkManager w wersji 2.1.0-alpha02. Ta wersja zawiera kilka nowych interfejsów API.
Zmiany w interfejsie API
PeriodicWorkRequestobsługują teraz początkowe opóźnienia. Możesz użyć metodysetInitialDelayw przypadkuPeriodicWorkRequest.Builder, aby ustawić początkowe opóźnienie. b/111404867Dodaliśmy możliwość przekazywania uprawnień co najmniej 1 zarejestrowanemu
WorkerFactoryza pomocąDelegatingWorkerFactory. b/131435993Dodano możliwość dostosowania
Executorużywanego przez WorkManagera do wszystkich wewnętrznych operacji za pomocąConfiguration.Builder.setTaskExecutor.Ulepszona dokumentacja dotycząca
WorkRequest.keepResultsForAtLeast(b/130638001), inicjowania na żądanie iPeriodicWorkRequest.Builder(b/131711394).
Wersja 2.1.0-alpha01
24 kwietnia 2019 r.
Wydanie WorkManager w wersji 2.1.0-alpha01. Ta wersja zawiera kilka nowych interfejsów API. Pamiętaj, że od tej wersji będą dostępne nowe funkcje, które nie zostaną przeniesione do wersji 1.x. Zalecamy przejście na wersję 2.x.
Zmiany w interfejsie API
- Dodano inicjowanie na żądanie biblioteki WorkManager, która będzie tworzona tylko wtedy, gdy będzie do niej odwołanie. b/127497100 Aby skonfigurować projekt do inicjowania na żądanie:
- Wyłącz automatyczny inicjator.
- Zaimplementuj
Configuration.Providerw niestandardowym obiekcieApplication. - Zmień wszystkie odwołania do
WorkManager.getInstance()naWorkManager.getInstance(Context). W ramach tej zmiany wycofaliśmyWorkManager.getInstance(). Zawsze bezpieczniej jest wywoływać nowy zamiennikWorkManager.getInstance(Context), nawet jeśli nie wykonujesz inicjowania na żądanie.
- Dodano możliwość tworzenia klas
WorkeriListenableWorker, które można testować jednostkowo, za pomocąTestWorkerBuilderiTestListenableWorkerBuilderw artefakciework-testing.- Zwróć uwagę, że
work-testingpobiera teraz język Kotlin jako zależność, ale domyślnie zawiera też kilka rozszerzeń Kotlin.
- Zwróć uwagę, że
- Dodano liczbę prób uruchomienia do
WorkInfo. b/127290461 - Typy
Datamogą teraz przechowywać i pobierać bajty oraz tablice bajtów. NIE zmienia to maksymalnego rozmiaru obiektówData. - Wycofano
CoroutineWorker.coroutineContext. To pole zostało nieprawidłowo określone jakoCoroutineDispatcher. Nie powinno być już potrzebne, ponieważ możesz samodzielnie przejść do żądanego elementu coroutineContext w treści funkcji zawieszającej. RxWorker.createWork()iRxWorker.getBackgroundScheduler()mają teraz adnotacje z typami zwracanych wartości@NonNull.
Wersja 2.0.1
Wersja 2.0.1
9 kwietnia 2019 r.
Wydanie biblioteki WorkManager w wersji 2.0.1. Ta wersja jest identyczna z wersją 2.0.1-rc01.
Wersja 2.0.1-rc01
3 kwietnia 2019 r.
Wydano bibliotekę WorkManager w wersji 2.0.1-rc01. Ta wersja zawiera kilka poprawek błędów. W przypadku użytkowników starszych wersji 1.x niektóre z tych zmian pojawią się też w wersji 1.0.1-rc01.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo z biblioteką WorkManager. b/122553577
- Rozwiązano problem z awarią w przypadku, gdy śledzenie ograniczeń nie było czyszczone w interfejsach API starszych niż JobScheduler. b/129226383
- Naprawiono
StackOverflowErrorzwiązaną z długimi ciągami zadań. b/129091233 - Zaktualizowano dokumentację
PeriodicWorkRequest, aby wskazać, że elastyczny czas nie jest obsługiwany w interfejsie API 23. - Naprawiliśmy niektóre uszkodzone linki w dokumentacji Kotlin.
Wersja 2.0.0
Wersja 2.0.0
20 marca 2019 r.
Wydanie biblioteki WorkManager w wersji 2.0.0. Ta wersja jest identyczna z 2.0.0-rc01 i jest wersją AndroidX stabilnej wersji 1.0.0 z zależnościami AndroidX. Zalecamy kierowanie reklam na tę wersję zamiast na starsze wersje 1.x. Wszystkie aktywne prace rozwojowe będą dotyczyć wersji 2.x, a wersja 1.x będzie otrzymywać tylko krytyczne poprawki błędów przez ograniczony czas.
Wersja 2.0.0-rc01
7 marca 2019 r.
Wydano bibliotekę WorkManager w wersji 2.0.0-rc01. Ta wersja jest identyczna ze stabilną wersją 1.0.0, ale ma zależności AndroidX. Gdy osiągnie ona stabilną wersję 2.0.0, należy ją uwzględnić, a starsze wersje 1.x będą otrzymywać tylko krytyczne poprawki błędów. Wszystkie aktywne prace rozwojowe będą dotyczyć wersji 2.x.
Zależności sprzed AndroidaX
Dokumentacja referencyjna: Java
Dynamiczny
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
Wersja 1.0.1
Wersja 1.0.1
9 kwietnia 2019 r.
Wydanie WorkManager w wersji 1.0.1. Ta wersja jest identyczna z wersją 1.0.1-rc01.
Pamiętaj, że zdecydowanie zachęcamy użytkowników do aktualizacji do WorkManager w wersji 2.x, ponieważ w przyszłości będzie bardzo mało aktualizacji gałęzi 1.x. Nie będziemy też udostępniać nowych interfejsów API dla biblioteki w wersji 1.x.
Wersja 1.0.1-rc01
2 kwietnia 2019 r.
Wydano bibliotekę WorkManager w wersji 1.0.1-rc01. Ta wersja zawiera kilka poprawek błędów.
Poprawki błędów
- Testy Robolectric działają teraz prawidłowo z biblioteką WorkManager. b/122553577
- Rozwiązano problem z awarią w przypadku, gdy śledzenie ograniczeń nie było czyszczone w interfejsach API starszych niż JobScheduler. b/129226383
- Naprawiono
StackOverflowErrorzwiązaną z długimi ciągami zadań. b/129091233
Wersja 1.0.0
Wersja 1.0.0
5 marca 2019 r.
Jest to stabilna wersja 1.0.0 biblioteki WorkManager. Ta wersja biblioteki WorkManager jest identyczna z wersją 1.0.0-rc02.
Wersja 1.0.0-rc02
21 lutego 2019 r.
To druga wersja kandydująca do publikacji stabilnej wersji 1.0.0 biblioteki WorkManager. Ta wersja zawiera 2 poprawki błędów.
Poprawki błędów
Workers są teraz prawidłowo planowane po awarii aplikacji. b/124546316Worker, które zgłaszają nieobsłużony wyjątekException, są teraz prawidłowo oznaczane jakoFAILEDi nie powodują już awarii procesu aplikacji.
Wersja 1.0.0-rc01
14 lutego 2019 r.
Jest to wersja kandydująca do publikacji stabilnej wersji 1.0.0 biblioteki WorkManager. Ta wersja zawiera 1 poprawkę błędu.
Poprawki błędów
- Implementacja oparta na AlarmManagerze prawidłowo uwzględnia teraz
flexw przypadku PeriodicWorkRequest. b/124274584
Wersja 1.0.0-beta05
6 lutego 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Naprawiono przypadek, w którym na interfejsie API 23 użyto
JobScheduler.getPendingJob(...). b/123893059 - Naprawiono
NullPointerExceptionna urządzeniach z Androidem 5.1 (interfejs API na poziomie 22) lub starszym. b/123835104
Wersja 1.0.0-beta04
4 lutego 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Ulepszone planowanie zadań PeriodicWork w przypadku implementacji opartej na AlarmManager.
- Rozwiązaliśmy problem, który powodował, że WorkManager nie śledził prawidłowo ograniczeń podczas korzystania z implementacji opartej na AlarmManager. b/123379508
- Rozwiązaliśmy problem polegający na tym, że w przypadku korzystania z implementacji opartej na AlarmManagerze WorkManager nie ponawiał pracy po śmierci procesu. b/123329850
- Naprawiliśmy przypadek, w którym WorkManager powodował wyciek blokad uśpienia podczas korzystania z implementacji opartej na AlarmManagerze.
Wersja 1.0.0-beta03
25 stycznia 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Wprowadziliśmy regresję
1.0.0-beta02, która w niektórych sytuacjach powodowała nieprawidłowe wykonywanie zadań. b/123211993 - Rozwiązaliśmy problem polegający na tym, że zadanie nie uwzględniało prawidłowo czasu wycofania.b/122881597
- Naprawiono
ConcurrentModificationExceptionna urządzeniach z Androidem 5.1 (API or) lub starszym. Jest to kontynuacja poprawki z1.0.0-beta02. b/121345393 - Dodaliśmy adnotację
exported=falsedo niektórych komponentów w pliku manifestu, których dotychczas nie zawierał. - Dodaliśmy informacje o tym, jak biblioteka WorkManager współdziała z systemem operacyjnym, w dokumentacji na poziomie pakietu.
Wersja 1.0.0-beta02
15 stycznia 2019 r.
Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Naprawiono przypadek brzegowy, w którym zadanie okresowe mogło być wykonywane więcej niż raz w interwale na urządzeniach z Androidem 6.0 (poziom interfejsu API 23). b/121998363
- Naprawiono
ConcurrentModificationExceptionna urządzeniach z Androidem 5.1 (interfejs API na poziomie 22) lub starszym. b/121345393 - Naprawiono błędne wykonywanie zadań, gdy na urządzeniach z Androidem 5.1 (API na poziomie 22) lub starszym nie były spełnione ograniczenia. b/122578012
- Zoptymalizowano obsługę zakończenia pracy, aby w niektórych przypadkach brzegowych działała szybciej. b/122358129
- Dodano zmianę, która ma zapobiegać potencjalnym sytuacjom wyścigu między wieloma instancjami
LiveDataużywanymi przez bibliotekę WorkManager. - Zamiast
1.1.1-rc01użyto zależnościRoom1.1.1. Te wersje są identyczne.b/122578011
Wersja 1.0.0-beta01
19 grudnia 2018 r.
Ta wersja nie zawiera zmian w interfejsie API. W przyszłości biblioteka WorkManager powinna zachować stabilność interfejsu API do czasu wydania następnej wersji, chyba że wystąpi poważny problem. Ta wersja zawiera poprawki błędów.
Poprawki błędów
- Wcześniej anulowane zadania podrzędne, które były powiązane z pomyślnie zakończonymi zadaniami nadrzędnymi, nie będą już uruchamiane. b/120811767
- Prawidłowo zainicjowane klasy rejestrowania (widoczne głównie podczas testów).
Wersja 1.0.0-alpha13
12 grudnia 2018 r.
Ta wersja zawiera niewielką zmianę w interfejsie API, która będzie przydatna dla niektórych użytkowników Kotlina.
Zmiany w interfejsie API
- Klasa
androidx.work.Resultzostała przeniesiona i jest teraz klasą wewnętrzną klasyListenableWorker. Zapobiega to konfliktom refaktoryzacji z klasą najwyższego poziomuResultw języku Kotlin. Jest to zmiana w interfejsie API, która może powodować problemy. b/120564418
Zmiany w interfejsie API powodujące niezgodność
- Klasa
androidx.work.Resultzostała przeniesiona i jest teraz klasą wewnętrzną klasyListenableWorker.
Wersja 1.0.0-alpha12
5 grudnia 2018 r.
Ta wersja zawiera pewne zmiany w interfejsie API powodujące niezgodność. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API powodujące niezgodność poniżej. Ta wersja prawdopodobnie zostanie udostępniona jako pierwsza wersja beta. alpha12 zawiera też obszerne aktualizacje dokumentacji.
Zmiany w interfejsie API
- Nowy artefakt
work-rxjava2wprowadzaRxWorker. Jest toListenableWorker, która oczekujeSingle<Payload>. - Usługa Firebase JobDispatcher została usunięta z powodu zbliżającego się wycofania. Oznacza to, że artefakt
work-firebasenie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji. - Połączono
PayloadzResult.Resultjest teraz „klasą zamkniętą” z 3 konkretnymi implementacjami, które można uzyskać za pomocąResult.success()(lubResult.success(Data)),Result.failure()(lubResult.failure(Data)) iResult.retry(). TwojeListenableFutureteraz dają wynikResultzamiastPayload.Workernie mają metod pobierających i ustawiających dla danych wyjściowychData. Jest to zmiana powodująca niezgodność. - Dodaliśmy
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)iConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)oraz ich warianty, aby lepiej obsługiwać adresy URI treści z powolnym wyzwalaniem. b/119919774 - Dodano wariant
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). Ta metoda wymaga interfejsu API w wersji 26. - Dodaliśmy metody rozszerzające Kotlin
Operation.await()iListenableFuture.await(). - Zmieniono nazwę
Operation.getException()naOperation.getThrowable(). Jest to zmiana powodująca niezgodność. - Klasa
ContentUriTriggersi metody, które się do niej odwołują, nie są już dostępne do użytku publicznego. Jest to zmiana powodująca niezgodność. - Aby uprościć interfejs API, usunęliśmy pozostałe metody varargs w klasach
WorkManager,WorkContinuationiOneTimeWorkRequest. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty varargs za pomocąArrays.asList(...). Nadal uwzględniamy wersje każdej metody z 1 argumentem. Jest to zmiana powodująca niezgodność. - Usunięto warianty
WorkContinuation.combine(OneTimeWorkRequest, *). Prezentowali mylący interfejs API. Obecne metodycombinesą bardziej zrozumiałe. Jest to zmiana powodująca niezgodność.
Poprawki błędów
- Implementacje starsze niż Marshmallow są teraz bardziej niezawodne w przypadku przywracania działania po śmierci procesu już wykonywanego zadania.
LiveData, które jest obserwowane za pomocąobserveForever, jest śledzone za pomocą WorkManagera. Jest to przeniesienie poprawki z biblioteki Room. b/74477406Data.Builder.build()zgłasza teraz wyjątek, jeśli serializowany obiekt przekracza maksymalny rozmiar. Wcześniej zdarzało się to tylko w wątku w tle, w którym nie można było prawidłowo obsłużyć tego zdarzenia.- Dalsze rozróżnienie między zatrzymaną a anulowaną pracą;
getWorkInfoById()zwróciWorkInfozCANCELLEDStatepodczasListenableWorker.onStopped(). - Traktuj
nullResultjako błędy wListenableWorker. b/120362353 - Spekulatywna poprawka dla tabletów Shield z interfejsem API 24, które czasami zgłaszały błąd
IllegalArgumentException. b/119484416
Zmiany w interfejsie API powodujące niezgodność
- Usunięto obsługę Firebase JobDispatcher z powodu zbliżającego się wycofania tej usługi. Oznacza to, że artefakt
work-firebasenie będzie już aktualizowany, ponieważ przechodzimy do wersji beta. W przyszłości rozważymy dodanie alternatywnej opcji. - Połączono
PayloadzResult.Resultjest teraz „klasą zamkniętą” z 3 konkretnymi implementacjami, które można uzyskać za pomocąResult.success()(lubResult.success(Data)),Result.failure()(lubResult.failure(Data)) iResult.retry(). TwojeListenableFutureteraz dają wynikResultzamiastPayload.Workernie mają metod pobierających i ustawiających dla danych wyjściowychData. - Dodaliśmy metody rozszerzające Kotlin
Operation.await()iListenableFuture.await(). - Zmieniono nazwę
Operation.getException()naOperation.getThrowable(). - Klasa
ContentUriTriggersi metody, które się do niej odwołują, nie są już dostępne do użytku publicznego. - Aby uprościć interfejs API, usunęliśmy pozostałe metody varargs w klasach
WorkManager,WorkContinuationiOneTimeWorkRequest. Aby rozwiązać problemy z kompilacją, możesz opakować istniejące argumenty varargs za pomocąArrays.asList(...). Nadal uwzględniamy wersje każdej metody z 1 argumentem. - Usunięto warianty
WorkContinuation.combine(OneTimeWorkRequest, *). Prezentowali mylący interfejs API. Obecne metodycombinesą bardziej zrozumiałe.
Wersja 1.0.0-alpha11
8 listopada 2018 r.
Ta wersja zawiera wiele zmian, które staną się stabilnym interfejsem API w dniu beta.
Ta wersja zawiera zmiany w interfejsie API, które mogą powodować problemy. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API, które mogą powodować problemy poniżej.
Zmiany w interfejsie API
work-runtime-ktxwprowadza nowyCoroutineWorker.- Nazwę konta usługi
WorkStatuszmieniono naWorkInfo. Wszystkie odpowiednie warianty metodygetStatuszostały zmienione na odpowiednie wariantygetWorkInfo. Jest to zmiana powodująca niezgodność. ListenableWorker.onStopped()no longer accepts ma argument logiczny określający, czyWorkRequestzostał anulowany.WorkManagernie rozróżnia już tych przypadków. Jest to zmiana powodująca niezgodność.- Pakiet
androidx.work.testzostał zmieniony na pakietandroidx.work.testing. Jest to zmiana powodująca niezgodność. - Funkcje ustawiające w
Constraintsnie są już częścią publicznego interfejsu API. Jest to zmiana powodująca niezgodność. - Funkcje
WorkerParameters.getTriggeredContentUris()iWorkerParameters.getTriggeredContentAuthorities()zwracały wcześniej tablice. Teraz te metody zwracają kolekcje. Jest to zmiana powodująca niezgodność. - Nazwa
ListenableWorker.onStartWork()została zmieniona naListenableWorker.startWork(). Jest to zmiana powodująca niezgodność. - Konstruktor
WorkStatusnie jest już częścią publicznego interfejsu API. Jest to zmiana powodująca niezgodność. - Nazwy
Configuration.getMaxJobSchedulerID()iConfiguration.getMinJobSchedulerID()zostaną zmienione odpowiednio naConfiguration.getMinJobSchedulerId()iConfiguration.getMaxJobSchedulerId(). Jest to zmiana powodująca niezgodność. - Dodaliśmy do publicznego interfejsu API wiele adnotacji
@NonNull, aby zwiększyć jego ergonomię. - Dodaj
WorkManager.enqueueUniqueWork()interfejs API, aby umieszczać w kolejce unikalneOneTimeWorkRequestbez konieczności tworzeniaWorkContinuation. - Wszystkie warianty metod
enqueueicancelwWorkManagerzwracają teraz nowy typOperation. Jest to zmiana powodująca niezgodność. - Wszystkie warianty
enqueuenie akceptują już argumentów varargs dlaWorkRequests. Jest to zmiana powodująca niezgodność. Zamiast tego użyj kolekcji. Możesz użyć ikonyArrays.asList(), aby zmodyfikować istniejący kod. Zrobiliśmy to, aby zmniejszyć powierzchnię interfejsu API i liczbę metod. - Próba
initializeWorkManagerwięcej niż raz w ramach jednego procesu spowoduje terazIllegalStateException. Jest to zmiana powodująca niezgodność.
Poprawki błędów
WorkRequest.Builderw artefakciework-runtime-ktxużywają terazListenableWorker. Poprawki b/117666259- Sprawdź, czy następny czas uruchomienia
PeriodicWorkprzypada w przyszłości. Poprawki b/118204399 - Usuń potencjalne operacje wejścia/wyjścia na dysku podczas korzystania z WorkManagera przy uruchamianiu aplikacji. Poprawki b/117796731
- Naprawiono sytuację wyścigu w
WorkConstraintsTracker. Rozwiązuje problem android-workmanager/issues/56
Zmiany w interfejsie API powodujące niezgodność
- Nazwę konta usługi
WorkStatuszmieniono naWorkInfo. Wszystkie odpowiednie warianty metodygetStatuszostały zmienione na odpowiednie wariantygetWorkInfo. ListenableWorker.onStopped()nie akceptuje już argumentu logicznego wskazującego, czyWorkRequestzostało anulowane.WorkManagernie rozróżnia już tych przypadków.- Pakiet
androidx.work.testzostał zmieniony na pakietandroidx.work.testing. - Settery w
Constraintsnie są już częścią publicznego interfejsu API. - Funkcje
WorkerParameters.getTriggeredContentUris()iWorkerParameters.getTriggeredContentAuthorities()zwracały wcześniej tablice. Teraz te metody zwracają kolekcje. - Nazwa
ListenableWorker.onStartWork()została zmieniona naListenableWorker.startWork(). - Konstruktor
WorkStatusnie jest już częścią publicznego interfejsu API. - Nazwy
Configuration.getMaxJobSchedulerID()iConfiguration.getMinJobSchedulerID()zostaną zmienione odpowiednio naConfiguration.getMinJobSchedulerId()iConfiguration.getMaxJobSchedulerId(). - Wszystkie warianty metod
enqueueicancelwWorkManagerzwracają teraz nowy typOperation. - Wszystkie warianty
enqueuenie akceptują już argumentów varargs dlaWorkRequests. - Próba
initializeWorkManagerwięcej niż raz w ramach jednego procesu spowoduje terazIllegalStateException.
Wersja 1.0.0-alpha10
11 października 2018 r.
Ta wersja obsługuje asynchroniczną pracę kontrolowaną przez dewelopera. Ta wersja zawiera zmiany w interfejsie API, które mogą powodować problemy. Więcej informacji znajdziesz w sekcji Zmiany w interfejsie API, które mogą powodować problemy poniżej.
Spodziewamy się, że WorkManager wchodzi w ostatnie fazy okresu alfa. W wersji beta interfejs API powinien być stabilny, dlatego poświęć trochę czasu na przesłanie opinii w naszym narzędziu do śledzenia problemów.
Zmiany w interfejsie API
- Usunięto wszystkie poprzednie
deprecatedmetody i klasy, w tym domyślnyWorkerkonstruktor. Jest to zmiana powodująca niezgodność interfejsu API. - Zmieniliśmy nazwę interfejsu
NonBlockingWorkernaListenableWorker. Jest to teraz nieukryta klasa publiczna gotowa do użycia.ListenableWorkerudostępnia jedną metodę abstrakcyjną,ListenableFuture<Payload> onStartWork()która jest wywoływana w głównym wątku. To Ty decydujesz, kiedy rozpocząć i przetworzyć pracę asynchroniczną. Po zakończeniu należy odpowiednio zaktualizowaćListenableFuture. Implementacje referencyjneListenableFuturesą dostępne w pakiecieFutureswalpha02(patrz sekcjaWorkManagerponiżej).WorkerrozszerzaListenableWorkeri nadal działa jak wcześniej, z abstrakcyjną metodąResult doWork().- Przeniesiono niektóre metody i elementy z
WorkerdoListenableWorker. - Wkrótce udostępnimy implementacje referencyjne dla
ListenableWorker, które używają korutyn w Kotlinie (gdy zostaną wydane stabilne wersje) i RxJava2.
- Interfejs
WorkerFactoryi konkretna implementacjaDefaultWorkerFactoryzostały scalone w klasę abstrakcyjną o nazwieWorkerFactory. Implementacja zapewnia, że domyślne zachowanie oparte na odbiciu jest wywoływane jako ostatnia próba w przypadku wszystkich utworzonych przez użytkownika instancjiWorkerFactory. Jest to zmiana powodująca niezgodność. - Usunęliśmy
WorkManager.synchronous()iWorkContinuation.synchronous()oraz wszystkie powiązane metody. DodanoListenableFuture<Void>jako zwracany typ wielu metod w interfejsie API. Jest to zmiana interfejsu API powodująca niezgodność wsteczną.- Możesz teraz synchronicznie pobierać i obserwować dane za pomocą
ListenableFuture. Na przykładWorkManager.enqueue()zwracałovoid, a teraz zwracaListenableFuture<Void>. Po zakończeniu operacji możesz wywołać funkcjęListenableFuture.addListener(Runnable, Executor)lubListenableFuture.get(), aby uruchomić kod. - Pamiętaj, że te
ListenableFuturenie informują o tym, czy operacja się powiodła, tylko o tym, że została zakończona. Aby uzyskać te informacje, nadal musisz łączyć metody WorkManagera. - Ignorujemy wywołania
cancel()w przypadku tych obiektów, ponieważ są one mylące i trudne do interpretacji (czy anulujesz operację, czy wynikającą z niej pracę?). Jest to zgodne z umowąFuture. - Aby zachować spójność z synchronicznymi metodami
getStatus*, udostępniliśmy wariantyListenableFuturei zmieniliśmy nazwy istniejących metod, które zwracałyLiveData, tak aby zawierały w nazwie słowo „LiveData” (np.getStatusesByIdLiveData(UUID)). Jest to zmiana interfejsu API powodująca niezgodność wsteczną.
- Możesz teraz synchronicznie pobierać i obserwować dane za pomocą
Poprawki błędów
- Rozwiązanie znanego problemu z wersji alpha09 dotyczącego zduplikowanych plików
androidx-annotations.pro. Możesz usunąć obejście z poprzednich informacji o wersji, usuwającexclude 'META-INF/proguard/androidx-annotations.pro'z pliku Gradle. - Dodano konfiguracje ProGuard, aby zachować nowy konstruktor
Worker. b/116296569 - Naprawiono potencjalny
NullPointerExceptionw sytuacji wyścigu, w której zadanie zostałoREPLACEd. b/116253486 i b/116677275 WorkContinuation.combine()akceptuje teraz co najmniej 1WorkContinuationzamiast co najmniej 2. b/117266752
Zmiany w interfejsie API powodujące niezgodność
- Usunięto wszystkie poprzednie
deprecatedmetody i klasy, w tym domyślnyWorkerkonstruktor. - Interfejs
WorkerFactoryi konkretna implementacjaDefaultWorkerFactoryzostały scalone w klasę abstrakcyjną o nazwieWorkerFactory. - Usunięto
WorkManager.synchronous()iWorkContinuation.synchronous(). - Metody
WorkManager.getStatus*()zwracają teraz obiektyListenableFuture.WorkManager.getStatus*LiveData()zwracaLiveData.
Wersja 1.0.0-alpha09
19 września 2018 r.
Znany problem
Jeśli napotkasz problem „Znaleziono więcej niż 1 plik ze ścieżką niezależną od systemu operacyjnego »META-INF/proguard/androidx-annotations.pro«”, w pliku Gradle umieść tymczasowe obejście, dopóki nie rozwiążemy tego problemu w wersji alpha10:
Dynamiczny
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Poprawki błędów
- Dodano kolejną poprawkę, która była potrzebna w przypadku błędu „100 zadań”. b/115560696
- Dodaliśmy kilka poprawek błędów ograniczeń klucza obcego spowodowanych warunkami wyścigu. b/114705286
- Przekazane wywołania
ConstraintTrackingWorker.onStopped(boolean)do bazowegoWorker. b/114125093 - Wymuszanie prawidłowego minimalnego opóźnienia wycofywania w przypadku Firebase JobDispatcher. b/113304626
- Ulepszone gwarancje dotyczące wątków w bibliotece.
- Rozwiązanie potencjalnego problemu z usuwaniem duplikatów
LiveDatawewnętrznie.
Zmiany w interfejsie API
- Możesz teraz tworzyć własne instancje
Workerw czasie działania, określającWorkerFactoryw ramachWorkManager.Configuration. Fabryka rezerwowa toDefaultWorkerFactory, która odpowiada działaniu poprzednich wersji biblioteki WorkManager.- Konstruktory domyślne dla klas
WorkeriNonBlockingWorkersą teraz oznaczone jako wycofane. Użyj nowego konstruktora (Worker(Context, WorkerParameters)) i wywołajsuper(Context, WorkerParameters). W przyszłych wersjach WorkManagera domyślny konstruktor zostanie usunięty.
- Konstruktory domyślne dla klas
- Zaczęliśmy wewnętrznie używać nowego artefaktu
ListenableFuture(bez zależności od Guavy). W przyszłych wersjach interfejsu API wprowadzimy ListenableFutures. Ta zmiana umożliwi późniejsze odkrycieNonBlockingWorker. - Dodano możliwość wywoływania pracy w
TestDriverw określonym czasie za pomocąTestDriver.setInitialDelayMet(UUID)iTestDriver.setPeriodDelayMet(UUID). b/113360060
Zmiany powodujące niezgodność
- Domyślne konstruktory
WorkeriNonBlockingWorkersą wycofane. Jak najszybciej przejdź na nowy konstruktor. W przyszłych wersjach domyślny konstruktor zostanie usunięty.
Wersja 1.0.0-alpha08
27 sierpnia 2018 r.
Poprawki błędów
- Wyraźnie oznaczono komponenty WorkManager jako nieobsługujące bezpośredniego uruchamiania, aby nie były uruchamiane podczas bezpośredniego uruchamiania. W przyszłości udostępnimy wersję WorkManagera, która będzie obsługiwać bezpośrednie uruchamianie. b/112665532
- Rozwiązaliśmy problem, który powodował, że ponowione zadania nie były wykonywane. b/112604021
- Rozwiązanie problemu polegającego na tym, że praca okresowa nie była wykonywana wielokrotnie (związany z powyższym problemem). b/112859683
- Przestrzeganie zasad wycofywania, gdy proces aplikacji jest już uruchomiony.
- Poprawione komunikaty o wyjątkach w
Data, aby wskazywać, że limit wynosi 10 KB. - Obniżono maksymalną wartość
Configuration.setMaxSchedulerLimit(int)do 50, aby uwzględnić opóźnienie w przetwarzaniuJobScheduler. b/112817355
Wersja 1.0.0-alpha07
16 sierpnia 2018 r.
Poprawki błędów
- Naprawiono potencjalne zapytanie SQL z ujemnymi limitami, które mogło zwracać nieograniczoną liczbę wyników.
- Zakończone zadanie prawidłowo anuluje teraz wszystkie oczekujące kopie tego zadania w innych harmonogramach. Spowodowało to przekroczenie limitu
JobSchedulerzadań. b/111569265 - Naprawiono
ConcurrentModificationExceptionwConstraintTracker. b/112272753 - Zmieniono adnotacje zwracanego typu funkcji
Data.getBooleanArray(String)iData.getIntArray(String)na@Nullablezamiast@NonNull. b/112275229
Zmiany w interfejsie API
Workeroferuje teraz nowe zajęcia:NonBlockingWorker. Nie ma to wpływu na bieżące wykorzystanie. W przyszłościNonBlockingWorkerbędzie w pełni obsługiwanym elementem w przypadku niestandardowych rozwiązań dotyczących wątków.- Zmieniono adnotacje zwracanego typu funkcji
Data.getBooleanArray(String)iData.getIntArray(String)na@Nullablezamiast@NonNull. b/112275229 - Rozszerzenia Kotlin: wycofano
Map.toWorkData()i dodanoworkDataOf(vararg Pair<String, Any?>)najwyższego poziomu, aby zapewnić większą spójność z istniejącymi interfejsami API.
Wersja 1.0.0-alpha06
1 sierpnia 2018 r.
Poprawki błędów
- Zapobieganie blokowaniu bazy danych podczas planowania pracy. b/111801342
- Usunięto błąd, który powodował, że funkcja
PeriodicWorknie działała zgodnie z harmonogramem w trybie uśpienia. b/111469837 - Naprawiono wyścigową sytuację podczas śledzenia ograniczeń, która powodowała awarię
WorkManager. googlecodelabs/android-workmanager/issues/56 - Twórz unikalne
WorkRequestpodczas korzystania zWorkRequest.Builder#build(). b/111408337 - Włącz korzystanie z funkcji
RescheduleReceivertylko wtedy, gdy sąWorkRequest, które jej potrzebują. b/111765853
Wersja 1.0.0-alpha05
24 lipca 2018 r.
Zmiany w interfejsie API
WorkManager.getInstance()jest teraz oznaczony adnotacją@NonNullzamiast@Nullable. Jeśli w przypadku ręcznej inicjalizacji pojedyncza instancja nie zostanie prawidłowo zainicjowana, metoda zgłosi wyjątekIllegalStateException. Jest to zmiana interfejsu API powodująca niezgodność wsteczną.- Dodaliśmy nowy interfejs API
Configuration.Builder.setMinimumLoggingLevel(int), który może kontrolować poziom szczegółowości WorkManagera. Domyślnie WorkManager rejestruje logi o poziomieLog.INFOi wyższym. - Zmieniono sygnaturę funkcji
Data.getString(), aby nie przyjmowała już wartości domyślnej (jest ona domyślnie równanull). Jest to zmiana w interfejsie API, która może powodować problemy z kompatybilnością. - Oznaczyliśmy niektóre metody potrzebne tylko do użytku wewnętrznego jako
@hide. Obejmuje to konstruktorConstraints,Data.toByteArray()iData.fromByteArray(byte[]). Jest to zmiana interfejsu API powodująca niezgodność wsteczną.
Poprawki błędów
- WorkManager nie wykonuje już zadań w znanych przypadkach automatycznego tworzenia kopii zapasowej. Mogło to spowodować awarię. b/110564377
- Naprawiono podwójne planowanie
PeriodicWorkRequestw przypadku korzystania zJobScheduler. b/110798652 - Rozwiązaliśmy problem z nieprawidłowym wykonywaniem
PeriodicWorkRequestpo przejściu urządzenia w stan uśpienia. b/111469837 - Rozwiązaliśmy problem z początkowymi opóźnieniami podczas korzystania z Firebase JobDispatcher. b/111141023
- Rozwiązano potencjalne problemy z wyścigiem i synchronizacją.
- Prawidłowo zwolniono
BroadcastReceiver, które nie były już potrzebne. - Zoptymalizowana wydajność ponownego planowania, gdy aplikacje uruchamiają się ponownie po wymuszeniu zamknięcia.
- Może być wywoływana
TestScheduler.setAllConstraintsMet(UUID)przed dodaniem do kolejki danego elementuWorkRequestlub po nim. b/111238024
Zmiany powodujące niezgodność
WorkManager.getInstance()jest teraz oznaczony adnotacją@NonNullzamiast@Nullable.- Zmieniono sygnaturę funkcji
Data.getString(), aby nie przyjmowała już wartości domyślnej (domyślnie jest tonull). - Oznaczono niektóre metody potrzebne tylko do użytku wewnętrznego jako
@hide. Obejmuje to konstruktorConstraints,Data.toByteArray()iData.fromByteArray(byte[]).
Wersja 1.0.0-alpha04
26 czerwca 2018 r.
Poprawki błędów
PeriodicWorkRequestsą teraz prawidłowo ponownie planowane w przypadku korzystania z implementacji opartej naAlarmManager.- Rozwiązano potencjalny problem z ANR podczas ponownego planowania wszystkich procesów po wymuszonym zatrzymaniu lub ponownym uruchomieniu. b/110507716
- Dodano adnotacje o dopuszczalności wartości null w różnych interfejsach API WorkManager. b/110344065
- Loguj niewykryte wyjątki, które występują podczas wykonywania funkcji Worker. b/109900862
- Zezwolenie na destrukcyjne migracje baz danych w przypadku decyzji o wycofaniu zmian 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ąpił tylko wtedy, gdy używasz tego samego formatu tagu domyślnego.
Wersja 1.0.0-alpha03
19 czerwca 2018 r.
Poprawki błędów
Naprawiono sytuację wyścigu w implementacji opartej na
AlarmManager. b/80346526Rozwiązaliśmy problem z duplikowaniem zadań podczas korzystania z
JobSchedulerpo ponownym uruchomieniu urządzenia.Zadania z wyzwalaczami identyfikatora URI treści są teraz zachowywane po ponownym uruchomieniu. b/80234744
Aktualizacje dokumentacji: b/109827628, b/109758949, b/80230748
Naprawiliśmy awarię, która występowała podczas ponownego umieszczania w kolejce elementu
WorkRequest. b/109572353.Naprawiono ostrzeżenia kompilatora Kotlin podczas korzystania z zależności
work-runtime-ktx.Biblioteka WorkManager korzysta teraz z wersji
Roompakietu1.1.1-rc1.
Zmiany w interfejsie API
- Dodano
getStatusesSync(), synchroniczną wersję funkcjiWorkContinuation.getStatuses(). Workerpotrafi odróżnić anulowanie zainicjowane przez użytkownika od tymczasowego zatrzymania na żądanie systemu operacyjnego.Worker.isStopped()zwraca wartośćtrue, jeśli zażądano jakiegokolwiek rodzaju zatrzymania.Worker.isCancelled()zwracatrue, gdy zadanie zostało wyraźnie anulowane. b/79632247- Dodano obsługę JobParameters#getNetwork() w interfejsie API 28. Jest to widoczne w
Worker.getNetwork(). - Dodano parametr
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit), aby można było określić, ile zadań można wysłać doJobSchedulerlubAlarmManager. Pomaga to zapobiegać zajmowaniu przezWorkManagerwszystkich dostępnych miejsc naJobScheduler. - Dodano
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), które pomaga zdefiniować zakres identyfikatorów zadańJobSchedulerbezpiecznych do użycia przezWorkManager. b/79996760 Worker.getRunAttemptCount()zwraca bieżącą liczbę uruchomień dla danego elementuWorker. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)umożliwia dodanie do kolejki unikalnychPeriodicWorkRequest. b/79600647WorkManager.cancelAllWork()anuluje wszystkieWorker. Biblioteki, które zależą odWorkManager, mogą sprawdzać, kiedy ta metoda została ostatnio wywołana, za pomocąWorkManager.getLastCancelAllTimeMillis(), aby dodatkowo wyczyścić stan wewnętrzny.- Dodano
WorkManager.pruneWork(), aby usuwać ukończone zadania z wewnętrznej bazy danych. b/79950952, b/109710758
Zmiany w zachowaniu
- Dodano tag domyślny dla wszystkich
WorkRequest, czyli pełną nazwę klasy dlaWorker. Umożliwia to usuwanieWorkRequestbeztaglub gdyidjest niedostępny. b/109572351
Zmiany powodujące niezgodność
- Zmieniono nazwę
Worker.WorkerResultnaWorker.Result. Worker.onStoppedma teraz dodatkowy parametrisCancelled, który ma wartośćtrue, gdyWorkerzostał wyraźnie anulowany.
Wersja 1.0.0-alpha02
24 maja 2018 r.
Poprawki błędów
- Rozwiązano problem
NullPointerExceptionw dniuState.isFinished(). b/79550068 - Rozwiązaliśmy problem, który powodował zmianę terminu
WorkernaApplication.onCreate(). b/79660657 - Rozwiązaliśmy problem, który powodował, że można było zaplanować więcej pracy, niż pozwalał na to system operacyjny. b/79497378
- Przeniesiono czyszczenie blokad uśpienia powiązanych z
Workerdo wątku w tle. - Implementacja
AlarmManagerteraz prawidłowo czyści dane po zakończeniu wszystkich oczekujących zadań. - Naprawiono zapytania SQL dotyczące czyszczenia, które miały wpływ na ustawienia regionalne inne niż angielskie. b/80065360
- Dodaliśmy obsługę
floatwData. b/79443878 Data.Builder.putAll()zwraca teraz instancję klasyBuilder. b/79699162- Więcej dokumentacji Javadoc i poprawek w dokumentacji. b/79691663
Zmiany w interfejsie API
Workermogą reagować na zatrzymanie. Za pomocąWorker.isStopped()można sprawdzić, czyWorkerzostała zatrzymana.Worker.onStopped()można używać do wykonywania prostych operacji czyszczenia.- Interfejs API
Worker.getTags()zwracaSettagów powiązanych zWorker. - Dodaliśmy przeciążenia
javax.time.Durationdo interfejsów API, które przyjmują kombinację czasu trwania iTimeUnit. Jest ona chroniona przez@RequiresApi(26). - Rozszerzenia
WorkManagerzostały przeniesione z pakietuandroidx.work.ktxdo pakietuandroidx.work. Stare rozszerzenia zostały wycofane i zostaną usunięte w przyszłej wersji. - Interfejs
Configuration.withExecutor()został wycofany. Użyj w zamian zasadyConfiguration.setExecutor().
Wersja 1.0.0-alpha01
8 maja 2018 r.
WorkManager upraszcza planowanie i wykonywanie gwarantowanej pracy w tle z uwzględnieniem ograniczeń. Ta pierwsza wersja to 1.0.0-alpha01.