WorkManager
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
17 Nisan 2024 | 2.9.0 | - | - | 2.10.0-alpha02 |
Bağımlılıkları bildirme
WorkManager'da bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir:
Uygulamanızın veya modülünüz için build.gradle
dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:
Modern
dependencies { def work_version = "2.9.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.9.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 uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerini inceleyin.
Bağımlılıklar hakkında daha fazla bilgi edinmek için Derleme Bağımlılıkları Ekleme bölümüne bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 2.10
Sürüm 2.10.0-alpha02
17 Nisan 2024
androidx.work:work-*:2.10.0-alpha02
yayınlandı. 2.10.0-alpha02 sürümü bu kayıtları içerir.
API Değişiklikleri
WorkManager
içinde yapılandırılabilir bir@RestrictTo
Tracer
ile iz aralıkları yayma özelliği eklendi. (I17d7f, b/260214125)CoroutineWorker
uygulamasının yürütüldüğü görev dağıtıcının kontrolü içinConfiguration.workerCoroutineContext
öğesine eklendi.WorkManager
içindeDispatchers.Default
kullanımının tamamen önlenmesine yardımcı olur. (Icd1b7)- Çalışanlar için özel istisna işleyiciler ekleme (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
vePeriodicWorkRequest.Builder
artıkClass
yerineKClass
ile oluşturulabilir:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)WorkManager
sınıf Kotlin'e taşındı. ArtıkLiveData
,ListenableFuture
veyaFlow
döndüren yöntemler doğru boş değer atanabilirliği bilgilerini sağlamaktadır. Koddaki geçersizlik varsayımları yanlışsa istemcilerin kaynak kodunda değişiklik yapılması gerekebilir. (If6757)
Sürüm 2.10.0-alpha01
24 Ocak 2024
androidx.work:work-*:2.10.0-alpha01
yayınlandı. 2.10.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
- Geliştiriciler,
Constraints.setRequiredNetworkRequest
yöntemini kullanarak bir çalışan için kısıtlama olarakNetworkRequest
değerini belirtebilir. Bu, söz konusu çalışanın hangi ağda çalışması gerektiği üzerinde daha ayrıntılı bir denetime olanak tanır.
API Değişiklikleri
- Kısıtlama olarak
NetworkRequest
belirtme özelliği ekleniyor. (Id98a1, b/280634452)
Sürüm 2.9
Sürüm 2.9.0
29 Kasım 2023
androidx.work:work-*:2.9.0
yayınlandı. 2.9.0 sürümü bu kayıtları içerir.
2.8.0'dan sonraki önemli değişiklikler
Flow
-sn üzerinden gözlemlenebilirlik. Çalışanın ilerlemesi artıkLiveData
yerineWorkManager.getWorkInfosFlow
aracılığıyla ve benzer yöntemlerle Akışla gözlemlenebilir.WorkManager
artık bir çalışanın neden daha önce durdurulduğuna dair ipucu sağlıyor.getStopReason()
yöntemi aracılığıyla bir çalışanın kendisinden veyagetStopReason()
aracılığıylaWorkInfo
üzerinden sorgulanabilir.setNextScheduleTimeOverride
aracılığıyla periyodik çalışanların hassas şekilde planlanması. Bu, bir sonraki Periyodik çalışma programının dinamik hesaplamasına olanak tanır. Bu özellik, uyarlanabilir yenileme süreleri, özel yeniden deneme davranışı veya bir haber feed'i çalışanının, kullanıcı her sabah kayma olmadan uyanmadan önce çalışmasını sağlamak gibi gelişmiş özellikleri uygulamak için kullanılabilir. Şu anda çalışmakta olan bir çalışanın iptal edilmesini önlemek ve bir sonrakini planlamak için bu tekniklerleExistingPeriodicWorkPolicy.UPDATE
kullanılmalıdır.- WorkManager'ın ileti dizisi eşleştirme üretimiyle testi.
ExecutorsMode.PRESERVE_EXECUTORS
,Configuration
içinde ayarlanan yürütücüleri korumak ve gerçek ana iş parçacığını kullanmak içininitializeTestWorkManager
ürününde kullanılabilir. CoroutineWorker
gibi eş yordam API'leri, ek yapı çalışma-çalışma zamanı-ktx'inden ana yapı çalışma zamanına taşındı. iş-çalışma zamanı-ktx artık boş.
API Değişiklikleri
stopReason
,WorkInfo
klasörüne eklendi.stopReason
, çalışan çalıştırıldıktan sonra kullanılabilir hale gelir. Bir çalışan durdurulduğunda uygulamanın kendisi çok hızlı bir şekilde durdurulabileceği için,stopReason
kullanılabilir bir şekilde raporlanmasında yararlı olabilir. (I21386)Clock
öğesinin yapılandırma aracılığıyla ayarlanmasına ve Çalışan testlerinin yürütme sırasının yönetilmesinde kullanılmasına izin verir. (Ic586e)ListenableWorker
öğesine, çalışanın neden durdurulduğuna dair ipucu verengetStopReason()
yöntemi eklendi. (I07060)- CloseGuard'ın kaynaklar sızıntısı ile ilgili uyarısını önlemek için
WorkManagerTestInitHelper#closeWorkDatabase()
eklendi. (Ia8d49) WorkInfo
ürününün oluşturucusu artık herkese açık. Bu nedenle, test sırasında faydalı olabilir. (Ia00b6, b/209145335)work-runtime-ktx
artık boş,CoroutineWorker
ve Kotlin'e özgü diğer yardımcı programlar artık ana çalışma süresi yapısında kullanılabilir. (I71a9a)- Periyodik çalışma programlarının doğru bir şekilde ayarlanmasını sağlayan
setNextScheduleTimeOverride
yöntemi eklendi (I3b4da) - Planlanan çalışma zamanı bilgisini almak için
getNextScheduleTimeMillis
eklendi veWorkInfo
eklendi. (I797e4) - İlk gecikme ve dönemsellik bilgileri
WorkInfo
öğesine eklenir. (I52f2f) getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) yöntemleriyle Akışlar aracılığıyla çalışanları gözlemleme yöntemi eklendiConstraints
oluşturucularına ve özelliklerine eksik@RequiresApi(...)
ek açıklaması eklendi. Bunlar artıkWorkManager
ürününün ilk sürümlerinde bulunan veConstraints.Builder
ürünündeki set belirleyicilerde bulunan ilgili ek açıklamalarla uyumlu. (I6d7d2)WorkManager
, artık Content URI çalışanlarınaJobScheduler
içinde garantili alanlar vermek için ayrı bir sınır uyguluyor. Böylece, yüksek yük altında içerik güncellemelerinin eksik olmamasını sağlayabilirsiniz. Sınır,Configuration.Builder.setContentUriTriggerWorkersLimit
aracılığıyla yapılandırılabilir. (Ic128f)- Sınırlamalar
WorkInfo
etiketine eklendi. (I162c0)
Sürüm 2.9.0-rc01
18 Ekim 2023
androidx.work:work-*:2.9.0-rc01
yayınlandı. 2.9.0-rc01 sürümü bu kayıtları içerir.
- Son beta sürümünden bu yana değişiklik yok
Sürüm 2.9.0-beta01
6 Eylül 2023
androidx.work:work-*:2.9.0-beta01
yayınlandı. 2.9.0-beta01 sürümü bu kayıtları içerir.
API Değişiklikleri
WorkInfo.stopReason
veListenableWorker.stopReason
tarafından döndürülen durdurma nedenleri için sabit değerler eklendi (I0cc00)
Sürüm 2.9.0-alpha02
26 Temmuz 2023
androidx.work:work-*:2.9.0-alpha02
yayınlandı. 2.9.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkManager
artık bir çalışanın neden daha önce durdurulduğuna dair ipucu sağlıyor.getStopReason()
yöntemi aracılığıyla bir çalışanın kendisinden veyagetStopReason()
aracılığıylaWorkInfo
üzerinden sorgulanabilir.
API Değişiklikleri
stopReason
,WorkInfo
klasörüne eklendi. Çalışan çalıştırıldıktanstopReason
sonra kullanılabilir hale gelir. Bir çalışan durdurulduğunda uygulamanın kendisi çok hızlı bir şekilde durdurulabileceği için,stopReason
kullanılabilir şekilde raporlanmasında yararlı olabilir. (I21386)- Saat'in yapılandırma aracılığıyla ayarlanmasına ve Çalışan testlerinin yürütme sırasının yönetilmesinde kullanılmasına izin verir. (Ic586e)
ListenableWorker
öğesine, çalışanın neden durdurulduğuna dair ipucu verengetStopReason()
yöntemi eklendi. (I07060)- CloseGuard'ın kaynaklar sızıntısı ile ilgili uyarısını önlemek için
WorkManagerTestInitHelper#closeWorkDatabase()
eklendi. (Ia8d49)
Hata Düzeltmeleri
TestDriver
kullanarakoverrideNextScheduleTime
atlama olanağı eklendi ve test edilebilirlik ile ilgili sorunlar düzeltildi. (Ic2905)
Sürüm 2.9.0-alpha01
7 Haziran 2023
androidx.work:work-*:2.9.0-alpha01
yayınlandı. 2.9.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
Flow
-sn üzerinden gözlemlenebilirlik. Çalışanın ilerlemesi artıkLiveData
yerineWorkManager.getWorkInfosFlow
aracılığıyla ve benzer yöntemlerle Akışla gözlemlenebilir.setNextScheduleTimeOverride
aracılığıyla periyodik çalışanların hassas şekilde planlanması. Bu, bir sonraki Periyodik çalışma programının dinamik hesaplamasına olanak tanır. Bu özellik, uyarlanabilir yenileme süreleri, özel yeniden deneme davranışı veya bir haber feed'i çalışanının, kullanıcı her sabah kayma olmadan uyanmadan önce çalışmasını sağlamak gibi gelişmiş özellikleri uygulamak için kullanılabilir. Şu anda çalışmakta olan bir çalışanın iptal edilmesini önlemek ve bir sonrakini planlamak için bu tekniklerleExistingPeriodicWorkPolicy.UPDATE
kullanılmalıdır.WorkManager
, ileti dizisi eşleştirme üretimiyle ilgili test yapıyor.ExecutorsMode.PRESERVE_EXECUTORS
,Configuration
içinde ayarlanan yürütücüleri korumak ve gerçek ana iş parçacığını kullanmak için kullanılabilir.CoroutineWorker
gibi eş yordam API'leri,work-runtime-ktx
ek yapıdanwork-runtime
ana yapıya taşındı.work-runtime-ktx
artık boş.
API Değişiklikleri
WorkInfo
ürününün oluşturucusu herkese açık. Bu, test sırasında faydalı olabilir. (Ia00b6, b/209145335)work-runtime-ktx
artık boş.CoroutineWorker
ve kotlin'e özgü diğer yardımcı programlar artık anawork-runtime
yapısında kullanılabilir. (I71a9a)- Periyodik çalışma programlarının doğru bir şekilde ayarlanmasını sağlayan
setNextScheduleTimeOverride
yöntemi eklendi (I3b4da) getEarliestRunTimeMillis
,getNextScheduleTimeMillis
olarak yeniden adlandırıldı. (I2bd7a)- Sonraki planlanan çalışma zamanı bilgisi
WorkInfo
konumuna eklenir. (I797e4) - İlk gecikme ve dönemsellik bilgileri
WorkInfo
öğesine eklenir. (I52f2f) getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) yöntemleriyle Akışlar aracılığıyla çalışanları gözlemleme yöntemi eklendi- Kısıtlamaların kurucularına ve özelliklerine eksik olan
@RequiresApi(...)
ek açıklamaları eklendi. Bunlar artıkWorkManager
ürününün ilk sürümlerinde bulunan veConstraints.Builder
ürünündeki set belirleyicilerde bulunan ilgili ek açıklamalarla uyumlu. (I6d7d2) WorkManager
, artık Content URI çalışanlarınaJobScheduler
içinde garantili alanlar vermek için ayrı bir sınır uyguluyor. Böylece, yüksek yük altında içerik güncellemelerinin eksik olmamasını sağlayabilirsiniz. Sınır,Configuration.Builder.setContentUriTriggerWorkersLimit
aracılığıyla yapılandırılabilir. (Ic128f)- Sınırlamalar
WorkInfo
etiketine eklendi. (I162c0)
Sürüm 2.8
Sürüm 2.8.1
22 Mart 2023
androidx.work:work-*:2.8.1
yayınlandı. Sürüm 2.8.1 bu kayıtları içerir.
Hata Düzeltmeleri
- Daha önce aynı anda iki yayını doğru şekilde işleyemeyen
RescheduleReceiver
sürümündeki ANR düzeltildi. (b/236906724)
Sürüm 2.8.0
8 Şubat 2023
androidx.work:work-*:2.8.0
yayınlandı. 2.8.0 sürümü bu kayıtları içerir.
2.7.0'dan sonraki önemli değişiklikler
Yeni Özellikler
- Orijinal sıraya girme süresini, zincirleme işlemi vs. koruyarak
WorkRequests
rahatsız edici olmayacak şekilde güncelleme olanağı eklendi. Bu özellikle ilgili ayrıntılı blog yayınına ve daha fazla ayrıntı içinWorkManager.updateWork
veExistingPeriodicWorkPolicy.UPDATE
için Javadocs 'a bakın.
API Değişiklikleri
- Çalışmayı, orijinal sıraya alma süresini ve zincirleme sürecini koruyarak güncellemek için
WorkManager.updateWork
eklendi.(I9a248, b/219446409) ExistingPeriodicWorkPolicy.UPDATE
eklendi. Bu politika, periyodik çalışmaların ada göre güncellenmesine izin verir. MevcutREPLACE
ile benzerdir ancak daha az rahatsız edicidir: Çalışmakta olan bir çalışanı iptal etmez ve sıraya alma süresini korur. İlk gecikme ve süre, güncelleme zamanı yerine orijinal sıraya alma zamanından hesaplanır. Çok benzer şekilde adlandırılmışREPLACE
ileUPDATE
arasındaki karışıklığı azaltmak içinREPLACE
desteği sonlandırıldı.REPLACE
öğesinin önceki anlamını kullanmaya devam etmek istiyorsanızREPLACE
ile aynı olan yeni eklenenCANCEL_AND_REENQUEUE
kullanılabilir. (I985ed, b/219446409)- setSchedulingExceptionHandler aracılığıyla
Consumer<Throwable>
sağlayan zamanlama istisnalarına müdahale etme özelliği eklendi.) - WorkManager'ı başlatmaya çalışırken sorun olup olmadığını belirlemek için setInitializationExceptionHandler üzerinden
Consumer<Throwable>
sağlama özelliği eklendi. OneTimeWorkRequest
vePeriodicWorkRequest
için satır içi yardımcılarandroidx.work:work-runtime-ktx
konumundanandroidx.work:work-runtime
konumuna taşındı (I0010f, b/209145335)WorkQuery
doğrudan oluşturmak içinWorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
veWorkQuery.fromTags
yardımcı yöntemleri eklendi. (b/199919736) (If48f2, b/199919736)getForegroundInfo
,Worker
koleksiyonuna eklendi. (Ic1ead)- Hem RxJava 2 hem de RxJava 3 için
RxWorker
artıkListenableFuture
değerini döndürensetForegroundInfoAsync
yerine kullanılabilecekCompletable
döndürensetForeground
değerine sahip - Hem RxJava 2 hem de RxJava 3 için
RxWorker
,ListenableFuture
değerini döndürengetForegroundInfoAsync
yerine kullanılabilecekSingle
döndürengetForegroundInfo
değerine sahiptir. (b/203851459) - Kısıtlamalar artık Kotlin kullanıcılarının işine yarayan
Constraints.Builder
kullanmak yerine doğrudan oluşturulabilir. (Idc390, b/137568653) WorkManager
başlatılıp başlatılmadığını kontrol etme özelliği eklendi. Ayrıca, kitaplık geliştiricilerininWorkManager
uygulamasının ilk kullanıma hazırlandığı yapılandırmayı alabilmeleri için yeni birgetConfiguration()
API'si eklendi. (I6eff3, b/212300336)
Hata Düzeltmeleri
- Çalışanların yük altındayken hemen çalışmasını engelleyen açgözlü planlayıcı ile ilgili bir sorun giderildi. (I9686b, b/248111307)
- SDK 33 ve sonraki sürümlerde
POST_NOTIFICATIONS
izninin verilmesini gerektiren API'lere@RequiresPermission
eklendi. (Ie542e, b/238790278) suspendCancellableCoroutine
kullanırkenCoroutineScope
içindeki iptalleriListenableFuture
öğesine yayın.
Sürüm 2.8.0-rc01
7 Aralık 2022
androidx.work:work-*:2.8.0-rc01
yayınlandı. 2.8.0-rc01 sürümü bu kayıtları içerir.
Yeni Özellikler
- Bu sürümde yeni özellik yok. Bu temel olarak bir sürüm güncellemesidir
Sürüm 2.8.0-beta02
9 Kasım 2022
androidx.work:work-*:2.8.0-beta02
yayınlandı. 2.8.0-beta02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
WorkInfo
içinde, daha önce yeni nesil bilgilerinin hesaba katılmadığıequals
yöntemi düzeltildi. (4977cc)
Sürüm 2.8.0-beta01
5 Ekim 2022
androidx.work:work-*:2.8.0-beta01
yayınlandı. 2.8.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Çalışanların yük altındayken hemen çalışmasını engelleyen açgözlü planlayıcı ile ilgili bir sorun giderildi. (I9686b, b/248111307)
Sürüm 2.8.0-alpha04
7 Eylül 2022
androidx.work:work-*:2.8.0-alpha04
yayınlandı. 2.8.0-alpha04 sürümü bu kayıtları içerir.
API Değişiklikleri
- Bir çalışanın neslini döndüren
WorkerInfo.getGeneration()
veWorkerParameters.getGeneration()
eklendi. Bir çalışanın birden fazla nesli vardır (ExistingPeriodicWorkPolicy.UPDATE
kullanılarakWorkManager.updateWork
veyaWorkManager.enqueueUniquePeriodicWork
aracılığıyla güncellenmişse). Çalışan şu anda çalışıyorsa ve çalışan yürütülürken bir güncelleme olduysa, bu yöntemin o anda çalışan çalışanın yeni neslini döndürmesinin mümkün olduğunu unutmayın. (I665c5, b/219446409) (I128a9, b/219446409) WorkManager
başlatılırken sorun olup olmadığını belirlemek için kullanılabilecek bir İstisna İşleyicisi olanInitializationExceptionHandler
eklendi. (I061de)
Sürüm 2.8.0-alpha03
10 Ağustos 2022
androidx.work:work-*:2.8.0-alpha03
yayınlandı. 2.8.0-alpha03 sürümü bu kayıtları içerir.
Yeni Özellikler
- Orijinal sıraya girme süresi ve zincir gibi bilgileri koruyarak, rahatsız edici olmayacak şekilde
WorkRequests
güncelleme olanağı eklendi. Daha fazla ayrıntı içinWorkManager.updateWork
veExistingPeriodicWorkPolicy.UPDATE
sayfalarına bakın.
API Değişiklikleri
- Çalışmayı, orijinal sıraya alma süresini ve zincirleme sürecini koruyarak güncellemek için
WorkManager.updateWork
eklendi.(I9a248, b/219446409) ExistingPeriodicWorkPolicy.UPDATE
eklendi. Bu politika, periyodik çalışmaların ada göre güncellenmesine olanak tanır. MevcutREPLACE
ile benzerdir ancak daha az rahatsız edicidir: Çalışmakta olan bir çalışanı iptal etmez ve sıraya alma süresini korur. İlk gecikme ve süre, güncelleme zamanı yerine orijinal sıraya alma zamanından hesaplanır. Çok benzer şekilde adlandırılmışREPLACE
ileUPDATE
arasındaki karışıklığı azaltmak içinREPLACE
desteği sonlandırıldı.REPLACE
öğesinin önceki anlamını kullanmaya devam etmek istiyorsanızREPLACE
ile aynı olan yeni eklenenCANCEL_AND_REENQUEUE
kullanılabilir. (I985ed, b/219446409)- Bir
SchedulingExceptionHandler
tanımlayarak planlama istisnalarına müdahale etme özelliği ekleyin. (I033eb) OneTimeWorkRequest
vePeriodicWorkRequest
için satır içi yardımcılarandroidx.work:work-runtime-ktx
konumundanandroidx.work:work-runtime
konumuna taşındı (I0010f, b/209145335)
Hata Düzeltmeleri
- SDK 33 ve sonraki sürümlerde POST_NOTIFICATIONS izninin verilmesini gerektiren API'lere
@RequiresPermission
eklendi. (Ie542e, b/238790278)
Sürüm 2.8.0-alpha02
6 Nisan 2022
androidx.work:work-*:2.8.0-alpha02
yayınlandı. 2.8.0-alpha02 sürümü bu kayıtları içerir.
API Değişiklikleri
- Sınırlamalar artık Kotlin kullanıcılarının işine yarayan Oluşturucu aracını kullanmak yerine doğrudan oluşturulabilir. (Idc390, b/137568653)
WorkManager
başlatılıp başlatılmadığını kontrol etme özelliği eklendi. Ayrıca, kitaplık geliştiricilerininWorkManager
uygulamasının ilk kullanıma hazırlandığı yapılandırmayı alabilmeleri için yeni birgetConfiguration()
API'si eklendi. (I6eff3, b/212300336)
Sürüm 2.8.0-alpha01
12 Ocak 2022
androidx.work:work-*:2.8.0-alpha01
yayınlandı. 2.8.0-alpha01 sürümü bu kayıtları içerir.
API Değişiklikleri
- Doğrudan WorkQuery oluşturmak için
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
veWorkQuery.fromTags
yardımcı yöntemleri eklendi. (If48f2, b/199919736) - Gelecekteki SDK'lar için deneysel BuildCompat yöntemleri ekler (Iafd82, b/207528937)
getForegroundInfo
adlı kişiyiWorker
alanına ekleyin. (Ic1ead)- WorkQuery'yi doğrudan kimliklerden oluşturmak için kullanılan
WorkQuery.fromIds
yardımcı yöntemleri eklendi. (Ie5bdf, b/199919736) - RxWorker'ın artık
ListenableFuture
değerini döndürensetForegroundInfoAsync
yerine kullanılabilecekCompletable
değerini döndürensetForeground
vardır. (I85156) - RxJava 2 için RxWorker'da artık
ListenableFuture
değerini döndürengetForegroundInfoAsync
yerine kullanılabilecekSingle
döndürengetForegroundInfo
vardır. (I21c91, b/203851459) - RxJava 3 için RxWorker'da artık
ListenableFuture
döndürengetForegroundInfoAsync
yerine kullanılabilecekSingle
döndürengetForegroundInfo
vardır. (I1ca8a) - RxWorker'ın artık
ListenableFuture
değerini döndürensetForegroundInfoAsync
yerine kullanılabilecekCompletable
değerini döndürensetForeground
vardır. (I992a3, b/203851459)
Hata Düzeltmeleri
suspendCancellableCoroutine
kullanırkenCoroutineScope
içindeki iptalleriListenableFuture
öğesine yayın. (I77e63)
Sürüm 2.7
Sürüm 2.7.1
17 Kasım 2021
androidx.work:work-*:2.7.1
yayınlandı. 2.7.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
suspendCancellableCoroutine
kullanılırkenCoroutineScope
içindeki iptallerListenableFuture
öğesine aktarılır. (I77e63)- Gecikmeli çalışma istekleri hızlandırılmış olarak işaretlendiğinde hemen bir istisna uygulanır. bef1762
Sürüm 2.7.0
13 Ekim 2021
androidx.work:work-*:2.7.0
yayınlandı. 2.7.0 sürümü bu kayıtları içerir.
2.6.0'dan sonraki önemli değişiklikler
WorkManager, Android 12'deki ön plan hizmeti kısıtlamalarına yardımcı olmak için yeni bir
WorkRequest.Builder.setExpedited(...)
API'sini kullanıma sunuyor.WorkManager,
setExpedited(...)
kullanılırken Android 12'den itibaren JobScheduler'daki hızlandırılmış işlere yetki verir. Buna ek olarak, bir Ön Plan Hizmeti'ne yetki vererek Android'in önceki sürümlerinde geriye dönük uyumluluk sağlar.
Sürüm 2.7.0-rc01
29 Eylül 2021
androidx.work:work-*:2.7.0-rc01
yayınlandı. 2.7.0-rc01 sürümü bu kayıtları içerir.
Bu sürüm, androidx.work:work-*:2.7.0-beta01
ile aynı.
Sürüm 2.7.0-beta01
1 Eylül 2021
androidx.work:work-*:2.7.0-beta01
yayınlandı. 2.7.0-beta01 sürümü bu kayıtları içerir.
Yeni Özellikler
- WorkManager'ı ilk kullanıma hazırlarken çok işlemli SQLite anlaşmazlığını azaltın.
API Değişiklikleri
- Android 12 (S) için temel platform API'leri kararlı olduğu için
@ExperimentalExpeditedWork
API'leri kaldırın. (aosp/1792806)
Hata Düzeltmeleri
getForegroundInfoAsync()
özelliğini uygulamayan hızlandırılmış çalışanlar için daha iyi bir hata mesajı sağlayın. (aosp/1809376)
Sürüm 2.7.0-alpha05
21 Temmuz 2021
androidx.work:work-*:2.7.0-alpha05
yayınlandı. 2.7.0-alpha05 sürümü bu kayıtları içerir.
Bu sürüm, WorkManager 2.6.0-beta02
sürümünden hata düzeltmeleri de içerir.
Sürüm 2.7.0-alpha04
2 Haziran 2021
androidx.work:work-*:2.7.0-alpha04
yayınlandı.
Bu sürüm aynı zamanda 2.6.0-beta01 sürümündeki değişiklikleri de içerir.
API Değişiklikleri
ListenableWorker.setForegroundAsync()
desteği sonlandırıldı.- Mümkün olduğunda
WorkRequest.Builder.setExpedited(...)
API kullanmanızı öneririz. Geliştiriciler, uygulamanın ön plan hizmet kısıtlamalarına tabi olmadığı durumları daha iyi desteklemek içinListenableWorker.setForegroundAsync()
API'yi kullanabilir. ListenableWorker.setForegroundAsync()
çağrılırsa uygulama ön plan hizmeti kısıtlamalarına tabi olduğunda ForegroundServiceStartNotAllowedException hatası verilir.
Hata Düzeltmeleri
- Hızlandırılmış işler yeniden planlandığında, bu işler artık hızlandırılmaz. Düzenli işler haline gelirler.
Sürüm 2.7.0-alpha03
21 Nisan 2021
androidx.work:work-*:2.7.0-alpha03
yayınlandı. 2.7.0-alpha03 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkManager
2.6.0-alpha02
'dan: Tüm işlemlerde çalışabilen çalışanlar için destek ekler. (Iaf200)WorkManager
2.6.0-alpha02
'dan: Uzak bir işleme bağlanabilenRemoteListenableWorker
uygulaması olan birRemoteCoroutineWorker
eklendi. (I30578)
API Değişiklikleri
- WorkManager
2.6.0-alpha02
'dan:TEMPORARILY_UNMETERED
ağ kısıtlaması için destek eklendi. (I08d5e) - WorkManager
2.6.0-alpha02
kaynağından:setProgressAsync()
için çok işlemli çalışan desteği. (Ib6d08) - Diğer
androidx.startup.Initializer
'lerin bunları bağımlılık olarak kullanabilmesi için WorkManager2.6.0-alpha02
'dan:WorkManagerInitializer
politikasını herkese açık hale getirin. (I5ab11)
Sürüm 2.7.0-alpha02
10 Mart 2021
androidx.work:work-*:2.7.0-alpha02
yayınlandı. 2.7.0-alpha02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Android 12 hedeflenirken oluşan kilitlenmeyi düzeltmek için
PendingIntent
değişkenliğini açık hale getirin. (b/180884673)
Sürüm 2.7.0-alpha01
18 Şubat 2021
androidx.work:work-*:2.7.0-alpha01
yayınlandı. 2.7.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkManager, Android 12'de ön plan hizmeti kısıtlamalarını dikkate alan yeni bir
WorkRequest.Builder.setExpedited(...)
API'sini kullanıma sunuyor.Uygulamalar artık arka plandayken ön plan hizmeti başlatamaz. Bu nedenle uygulamalar, daha önce bir ön plan hizmetinin yaşam döngüsüne bağlı olan uzun süreli çalışmaları daha iyi desteklemek için
WorkRequest
'leri Hızlandırılmış olarak işaretleyebilir.Bu API, kullanımdan kaldırılmış
setForegroundAsync(...)
/setForeground(...)
API'lerinin yerini almaktadır.WorkManager,
setExpedited(...)
kullanılırken Android 12'den itibarenJobScheduler
bölgesinde hızlandırılmış işler için yetki verirken, ön plan hizmetlerine yetki vererek Android'in önceki sürümlerinde geriye dönük uyumluluk sağlar.
API Değişiklikleri
- Hızlandırılmış
WorkRequest
desteği ekleyin.
Sürüm 2.6.0
Sürüm 2.6.0
1 Eylül 2021
androidx.work:work-*:2.6.0
yayınlandı. 2.6.0 sürümü bu kayıtları içerir.
2.5.0'dan sonraki önemli değişiklikler
WorkManager, WorkManager'ı ilk kullanıma hazırlamak için artık
androidx.startup
kullanıyor. Geçmişte WorkManager'ı ilk kullanıma hazırlamak için kullanılanContentProvider
tools:node="remove"
kullandıysanız bunun yerine aşağıdakileri yapmanız gerekir.<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" />
Çalışanlar için her türlü işlemde çalışabilen destek eklendi. (Iaf200)
Uzak bir işleme bağlanabilen RemoteListenableWorker uygulaması olan bir
RemoteCoroutineWorker
eklendi. (I30578)
Sürüm 2.6.0-rc01
4 Ağustos 2021
androidx.work:work-*:2.6.0-rc01
yayınlandı. 2.6.0-rc01 sürümü bu kayıtları içerir.
Bu sürüm, androidx.work:work-*:2.6.0-beta02
ile aynı.
Sürüm 2.6.0-beta02
21 Temmuz 2021
androidx.work:work-*:2.6.0-beta02
yayınlandı. 2.6.0-beta02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
RemoteWorkManager
artıkRemoteWorkManagerService
ile olan bağlantıyı doğru şekilde kaldırıyor. BöyleceRemoteWorkManagerService
uygulaması düzgün şekilde temizlenmiş oluyor. aosp/1730694RemoteListenableWorker
,RemoteWorkerService
ile olan bağlantısını artık doğru şekilde kaldırıyor. Bu sayedeRemoteWorkerService
, cihazı doğru şekilde temizleyebiliyor. aosp/1743817ForceStopRunnable
artık yalnızca birincil uygulama işleminde çalışır. Bu bir optimizasyon olup birden fazla işlem kullanan uygulamalar için kaynak çakışmasını önler. aosp/1749180, aosp/1761729
Sürüm 2.6.0-beta01
2 Haziran 2021
androidx.work:work-*:2.6.0-beta01
yayınlandı. 2.6.0-beta01 sürümü bu kayıtları içerir.
Bu sürüm, bazı küçük doküman iyileştirmeleri içerir. Sürüm 2.6.0-alpha02 ile büyük ölçüde aynıdır.
Sürüm 2.6.0-alpha02
21 Nisan 2021
androidx.work:work-*:2.6.0-alpha02
yayınlandı. 2.6.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
Çalışanlar için her işlemde çalışabilen destek ekler. (Iaf200)
Uzak bir işleme bağlanabilen
RemoteListenableWorker
uygulaması olan birRemoteCoroutineWorker
eklendi. (I30578)
API Değişiklikleri
TEMPORARILY_UNMETERED
ağ kısıtlaması için destek eklendi. (I08d5e)setProgressAsync()
için çok işlemli çalışan desteği. (Ib6d08)- Diğer
androidx.startup.Initializer
'lerin bunları bağımlılık olarak kullanabilmesi içinWorkManagerInitializer
öğesini herkese açık hale getirin. (I5ab11)
Sürüm 2.6.0-alpha01
24 Mart 2021
androidx.work:work-*:2.6.0-alpha01
yayınlandı. 2.6.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkManager
, WorkManager'ı ilk kullanıma hazırlamak için artıkandroidx.startup
kullanıyor. Daha önce bu işlemandroidx.work.impl.WorkManagerInitializer
tarafından gerçekleştiriliyordu. (aosp/1608813)Geçmişte işlem yaşam döngüsünü başlatmak için kullanılan
ContentProvider
öğesinitools:node="remove"
kullandıysanız bunun yerine aşağıdakileri yapmanız gerekir.<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>
(veya)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API Değişiklikleri
- ListenableWorker'ın
outputData
değerini döndüren birResult.getOutputData()
API'si ekleyin. (Ie51e3)
Hata Düzeltmeleri
AlarmManager
API'leri kullanılırkenSecurityException
hatasına neden olan OEM hatası için geçici bir çözüm ekleyin. (aosp/1587518)
Sürüm 2.5.0
Sürüm 2.5.0
27 Ocak 2021
androidx.work:work-*:2.5.0
yayınlandı. Sürüm 2.5.0 bu kayıtları içerir.
2.4.0'dan bu yana yapılan önemli değişiklikler
- Birden çok işlem kullanan uygulamalar için yeni bir
:work:work-multiprocess
yapısı. Bu da iş isteği planlamasını tek bir işlemde birleştirerek performans kazançlarını artırır.work-multiprocess
özelliğini kullanmak için şunlara bağımlılık tanımlayın:implementation "androidx.work:work-multiprocess:2.5.0"
- Configuration.Builder.setDefaultProcessName(String) işlevini kullanarak birincil işlem atayın.
work-multiprocess
kullanırkenWorkRequest
'lerinizi yönetmek için RemoteWorkManager'ı da kullanmak istersiniz. RemoteWorkManager, belirlenen işleme her zaman ulaşır. İşlem içi planlayıcı, belirtilen işlemde de çalışır.
- Bazen
ActivityManager
, bir iş başlatmak içinJobService
örneğini örnekleyemez. Bu da bir platform hatası nedeniyle temel işin sessizce iptal edilmesine neden olur.WorkManager
, artık işler uzlaştırılarak birApplication
başlatılırken her birWorkRequest
için yedek işler olmasını sağlıyor. Bu yöntem, iş yürütme güvenilirliğini önemli ölçüde artırır. (b/172475041, aosp/1489577) WorkManager
,WorkRequest
tamamlandıktan sonra izlenenWorkRequest
arabellek süresini azaltarak veritabanı büyümesini sınırlandırır. Süre7
gün önceydi.1
güne + keepResultsForAtLeast süresine düşürüldü. (aosp/1419708)TestListenableWorkerBuilder
, testi kolaylaştırmak için artıkListenableWorker
kapsamını genişleten yenidenlaştırılmış sınıfı desteklemektedir. (aosp/1443299, b/169787349)- WorkManager denetleyicisi artık Android Studio Arctic Fox ile kullanılabilir.
Sürüm 2.5.0-rc01
13 Ocak 2021
androidx.work:work-*:2.5.0-rc01
yayınlandı. 2.5.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
WorkQuery
tabanlı API kullanılırken varlıklar güncellendikten sonragetWorkInfosLiveData
öğesinin doğru şekilde geçersiz kılınmamasına neden olan hata düzeltildi. (aosp/1540566, b/173769028)- Veritabanı işlemlerinin bazı nadir durumlarda başarılı olarak işaretlenmemesine neden olan hata düzeltildi. Bu durum bazı Motorola cihazlarda sorunlara neden olur. (aosp/1535368, b/175944460)
- Ölü bir işlemin bağlantısını kaldırmaya çalışırken
NoSuchElementException
öğelerinin yoksayılmasına neden olan bir hata düzeltildi. (aosp/1530589) ConstraintTrackingWorker
işlemini,ListenableWorker
durdurulmamışsa yalnızca durduracak şekilde iyileştirin. (aosp/1496844, b/172946965)- androidx.work kitaplıklarını Java 8'i hedefleyecek şekilde güncelleyin (Ibd2f2)
Sürüm 2.5.0-beta02
2 Aralık 2020
androidx.work:work-*:2.5.0-beta02
yayınlandı. 2.5.0-beta02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
androidx.work:work-multiprocess
özelliğinde, belirtilen işleme bağlanmaya çalışırken WorkManager'ın çağrıda bulunan ileti dizisini yanlışlıkla engellemesine neden olan bir hata düzeltildi. (aosp/1475538)PeriodicWorkRequest
öğelerinin doğru mutabık kılınmamasına neden olan hata düzeltildi. (b/172475041, aosp/1489577)setForeground*
API'leri kullanılırken ön plan hizmetinin durdurulması sırasında ortaya çıkan platform hatası için geçici bir çözüm eklendi. (b/170924044, aosp/1489901)
Sürüm 2.5.0-beta01
28 Ekim 2020
androidx.work:work-*:2.5.0-beta01
yayınlandı. 2.5.0-beta01 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkManager
, işlemdeki planlayıcı tarafından alınabilecekWorkRequest
sayısını otomatik olarak kısıtlar. İstekler yine FIFO sırasına göre yürütülür. (aosp/1455228)WorkManager
, uygulamanın veri deposu bozuk bir durumdayken kurtarma girişiminde bulunur. (aosp/1463103)
Hata Düzeltmeleri
ListenableWorker
yarıda kesildiğinde daha sonra yeniden planlanabilmesi için bunları hemenENQUEUED
olarak işaretleyin. (aosp/1455618, b/170273988)
Sürüm 2.5.0-alpha03
14 Ekim 2020
androidx.work:work-*:2.5.0-alpha03
yayınlandı. 2.5.0-alpha03 sürümü bu kayıtları içerir.
API Değişiklikleri
TestListenableWorkerBuilder
veTestWorkerBuilder
ham türleri kullanmaz. (I883ad, b/169787349)
Hata Düzeltmeleri
- Varsayılan uygulama işleminin adını belirlemek için
ApplicationInfo
öğesini kullanın. (b/168716641, aosp/1429950) RemoteWorkManager
veRemoteWorkContinuation
için görünürlük kurallarını düzeltin. Bu API'ler artık@Restricted
olarak işaretli değil. (aosp/1432091):work:work-multiprocess
için ProGuard kurallarını düzeltin. (aosp/1432091)- Bir ön plan hizmetine bağlı uzun süreli işler için bildirim yaşam döngülerini iyileştirin. (b/168502234, aosp/1431331)
Sürüm 2.5.0-alpha02
16 Eylül 2020
androidx.work:work-*:2.5.0-alpha02
yayınlandı. 2.5.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkInfo
öğelerini sorgulamak amacıylaid
kullanabilmek için WorkQuery'ye bir API ekleyin. (aosp/1412372, b/157335295)- WorkManager, yeni bir yapıyla (
androidx.work:work-multiprocess:*
) birden fazla işlem kullanan uygulamaları daha iyi destekler. Bu yeni yapı, büyük uygulamaların karşılaştığı şu sorunların bazılarını çözmeye yardımcı olur:- WorkManager'ın genellikle her uygulama işleminde başlatılması gerekir. Bu iyi bir durum değildir çünkü SQLite anlaşmazlığı artar ve bu da başka sorunlara neden olur. WorkManager artık
Configuration#setDefaultProcessName(processName)
kullanarak birincil uygulama işlemi tanımlamak için kullanılabilecek yeni API'lere sahip.processName
,packageName:processName
(ör.com.example:remote
) gibi görünen tam bir işlem adıdır. - Bir dizi yeni API:
RemoteWorkManager
veRemoteWorkContinuation
ileenqueue
,cancel
vequery
iş istekleri. Birden çok işlemde SQLite anlaşmazlığını önlemek içinLiveData
varyantlar içermez.enqueue
,cancel
vequery
'a yapılan tüm çağrılar, AIDL kullanılarak birprimary
uygulama işlemine yönlendirilir ve akıcı birListenableFuture
döndürülür. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- WorkManager'ın genellikle her uygulama işleminde başlatılması gerekir. Bu iyi bir durum değildir çünkü SQLite anlaşmazlığı artar ve bu da başka sorunlara neden olur. WorkManager artık
API Değişiklikleri
- WorkManager, eksik bağımlılığı olmayan tamamlanmış
WorkRequest
öğelerini artık daha agresif bir şekilde ayıklar.7
gün olan arabellek süresi1
gün olarak değiştirildi. (aosp/1419708)
Hata Düzeltmeleri
- WorkManager,
WorkManager
başlatıldığındaWorkRequest
veJobScheduler
işlemlerinin senkronize olmasını sağlamak için artık işleri proaktif olarak mutabık kılar. (aosp/1412794, b/166292069)
Sürüm 2.5.0-alpha01
19 Ağustos 2020
androidx.work:work-*:2.5.0-alpha01
yayınlandı. 2.5.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
- Gelecekte
WorkManager
ile daha iyi araçlar sunmamıza olanak tanıyan dahili API'lerde yapılan değişiklikler. Ek güncellemeler için bizi takip etmeye devam edin.
Hata Düzeltmeleri
- Bazı cihazlarda ağ durumunu izlerken
SecurityException
öğelerini işleyin. (aosp/1396969)
Harici Katkı
- Zac Sweers (github/43) tarafından geliştirilen
ArrayCreatingInputMerger
ile ilgili dokümanları düzeltin.
Sürüm 2.4.0
Sürüm 2.4.0
22 Temmuz 2020
androidx.work:work-*:2.4.0
yayınlandı. 2.4.0 sürümü bu kayıtları içerir.
2.3.0'dan bu yana yapılan önemli değişiklikler
WorkManager
'nin işlem içi planlayıcısı artık daha yetenekli. Daha önce, süreçtekiScheduler
yalnızca gecikmeli olmayan ve kısıtlamalarına uyan çalışmaları yürütmeyi göz önünde bulunduruyordu. Artık işlem içi planlayıcı, PeriodicWorkRequests de dahil olmak üzere gelecekte yürütülebilecekWorkRequest
işlemlerini izliyor. İşlemdekiScheduler
de planlama sınırlarını dikkate almaz (ancak yine de WorkManager tarafından kullanılanExecutor
boyutuyla sınırlıdır). Diğer bir deyişle, uygulama ön plandayken uygulama artık çok daha fazla WorkRequest yürütebilir. Gecikmeli çalışmaların ön planda yürütülmesini yönetmek içinWorkManager
, yeni bir yapılandırılabilirRunnableScheduler
özelliğini de kullanıma sundu. (aosp/1185778)- WorkManager artık RxJava 3'ü desteklemektedir. RxJava 3'ü kullanmak için şu bağımlılığı eklemeniz gerekir:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) WorkQuery
kullanılarakWorkInfo
için sorgulama özelliği eklendi. Geliştiriciler birden fazla özelliğin bir kombinasyonuna göreWorkInfo
sorgulamak istediklerinde bu yöntem yararlıdır. Daha fazla bilgi içinWorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
veyaWorkQuery.Builder.fromUniqueWorkNames(...)
sayfalarına bakın. (aosp/1253230, b/143847546)Aşağıdakileri kullanarak
WorkManager
adlı satıcıdan teşhis bilgisi isteme olanağı ekleyin:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Bu kaynak, aşağıdakileri de içeren birçok yararlı bilgi sağlar:
- Son 24 saat içinde tamamlanan WorkRequest'ler.
- Şu anda ÇALIŞIYOR olan WorkRequests (Çalışma İstekleri)
- Planlanmış WorkRequests. (aosp/1235501)
APPEND
ile benzer olan ancak iptal edilmiş veya önkoşulları başarısız olan bir zincirin yerini alanExistingWorkPolicy.APPEND_OR_REPLACE
ekleyin. (b/134613984, aosp/1199640)Gelecekte yürütülmesi gereken WorkRequest'leri izlemek için özel
RunnableScheduler
ekleme imkanı sağlar. Bu, işlemdeki Planlayıcı tarafından kullanılır. (aosp/1203944)DelegatingWorkerFactory
kullanırken, yetki verilecek fabrikaları dinamik olarak ekleme desteği ekleyin. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
kısıtlamaları için izlemeyi platformla daha uyumlu hale getirin. (aosp/1312583)İşlem içi planlayıcı, sürecin adını belirlemek için artık daha iyi API'ler kullanıyor. Bu, birden çok işlem kullanan uygulamaları daha iyi desteklemek için yararlıdır. (aosp/1324732)
Aşağıdakileri zorunlu kılan yeni Lint kuralları:
setForegroundAsync()
API'leri kullanırken doğruforegroundServiceType
kullanılmalıdır. (b/147873061, aosp/1215915)- WorkManager'ın, JobService API'lerini doğrudan kullanırken kullanması gereken JobScheduler kimliklerini belirtme. aosp/1223567
- Varsayılan
WorkerFactory
kullanılırkenListenableWorker
uygulamaların artıkpublic
olmasını sağlayan yeni bir hata analizi kuralı eklendi. (aosp/1291262)
setForegroundAsync()
için yapılan veListenableWorker
tamamlanmadan önce yapılan aramalar, döndürülenListenableFuture
tarihindeIllegalStateException
ile bildirilir. (aosp/1262743)Worker
ön planı kesintiye uğradığındaForegroundService
öğesinin durdurulmamasına neden olan hata düzeltildi. (b/155579898, aosp/1302153)WorkManager
ürününün bir ön plan hizmetine bağlı birden fazlaWorker
örneğini yürütmeye çalıştığı hata düzeltildi (b/156310133, aosp/1309853)
Sürüm 2.4.0-rc01
24 Haziran 2020
androidx.work:work-*:2.4.0-rc01
yayınlandı. 2.4.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- İşlem içi planlayıcı, sürecin adını belirlemek için artık daha iyi API'ler kullanıyor. Bu, birden çok işlem kullanan uygulamaları daha iyi desteklemek için yararlıdır. (aosp/1324732)
Sürüm 2.4.0-beta01
20 Mayıs 2020
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
ve androidx.work:work-testing:2.4.0-beta01
yayınlandı. 2.4.0-beta01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
Worker
ön planı kesintiye uğradığındaForegroundService
öğesinin durdurulmamasına neden olan hata düzeltildi. (b/155579898, aosp/1302153)WorkManager
ürününün bir ön plan hizmetine bağlı birden fazlaWorker
örneğini yürütmeye çalıştığı hata düzeltildi (b/156310133, aosp/1309853)DelegatingWorkerFactory
kullanırken, yetki verilecek fabrikaları dinamik olarak ekleme desteği ekleyin. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
kısıtlamaları için izlemeyi platformla daha uyumlu hale getirin. (aosp/1312583)
Sürüm 2.4.0-alpha03
29 Nisan 2020
androidx.work:work-*:2.4.0-alpha03
yayınlandı. 2.4.0-alpha03 sürümü bu kayıtları içerir.
Yeni Özellikler
- WorkManager artık RxJava 3'ü desteklemektedir. RxJava 3'ü kullanmak için şu bağımlılığı eklemeniz gerekir:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - Varsayılan
WorkerFactory
kullanılırkenListenableWorker
uygulamaların artıkpublic
olmasını sağlayan yeni bir hata analizi kuralı eklendi. (aosp/1291262)
API Değişiklikleri
ListenableWorker
tamamlandıktan sonrasetProgressAsync()
çağrılırsa artıkListenableFuture
üzerindenException
sinyali verilecek. (aosp/1285494)WorkQuery.Builder
,final
olarak işaretlendi. (aosp/1275037)WorkQuery.Builder
fabrika yöntemleriwithStates
,withTags
vewithUniqueWorkNames
sırasıylafromStates
,fromTags
vefromUniqueWorkNames
olarak yeniden adlandırıldı. (aosp/1280287)
Hata Düzeltmeleri
- Bir cihazın ağ durumunu izlerken
SecurityException
öğelerini yoksayın. (b/153246136, aosp/1280813)
Sürüm 2.4.0-alpha02
1 Nisan 2020
androidx.work:work-*:2.4.0-alpha02
yayınlandı. 2.4.0-alpha02 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkRequest
hemConstraints.setRequiresCharging(...)
hem deConstraints.setRequiresDeviceIdle(...)
gerektirdiğinde uyarı veren yeni bir Lint kuralı eklendi. Bazı cihazlar aynı anda hiçbir zaman şarj olmaz ve boşta kalmaz. Dolayısıyla bu tür istekler beklenenden daha az çalışır. (aosp/1253840)
API Değişiklikleri
WorkQuery
kullanılarakWorkInfo
için sorgulama özelliği eklendi. Geliştiriciler birden fazla özelliğin bir kombinasyonuna göreWorkInfo
sorgulamak istediklerinde bu yöntem yararlıdır. Daha fazla bilgi içinWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
veyaWorkQuery.Builder withUniqueWorkNames(...)
sayfalarına bakın. (aosp/1253230, b/143847546)setForegroundAsync()
için yapılan veListenableWorker
tamamlanmadan önce yapılan aramalar, döndürülenListenableFuture
tarihindeIllegalStateException
ile bildirilir. (aosp/1262743)
Hata Düzeltmeleri
PeriodicWorkRequest
sn. için geçersiz aralık sürelerini kontrol eden hata analizi kuralı düzeltildi. (aosp/1254846, b/152606442)
Sürüm 2.4.0-alpha01
4 Mart 2020
androidx.work:work-*:2.4.0-alpha01
yayınlandı. 2.4.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
WorkManager
'nin işlem içi planlayıcısı artık daha yetenekli. Daha önce, süreçteki Planlayıcı yalnızca gecikmeyen ve kısıtlamaları karşılanan işleri yürütmeyi değerlendiriyordu. Artık işlem içi planlayıcı,PeriodicWorkRequest
dahil olmak üzere gelecekte yürütülebilecekWorkRequest
işlemlerini izliyor. İşlemdeki Planlayıcı da planlama sınırlarını gözetmez (ancak yine de WorkManager tarafından kullanılanExecutor
boyutuyla sınırlıdır). Yani, uygulama ön plandayken artık çok daha fazlaWorkRequest
yürütebilir. (aosp/1185778)adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
kullanarak WorkManager'dan teşhis bilgisi isteme özelliği eklendi. Bu kaynak, aşağıdakileri de içeren birçok yararlı bilgi sağlar:- Son 24 saat içinde tamamlanan WorkRequest'ler.
- Şu anda ÇALIŞIYOR olan WorkRequests (Çalışma İstekleri)
- Planlanmış WorkRequests. (aosp/1235501)
Aşağıdakileri zorunlu kılan yeni Lint kuralları:
setForegroundAsync()
API'leri kullanırken doğruforegroundServiceType
kullanılmalıdır. (b/147873061, aosp/1215915)- Doğrudan
JobService
API'lerini kullanırkenWorkManager
tarafından kullanılması gerekenJobScheduler
kimliklerini belirtme. (aosp/1223567)
API Değişiklikleri
APPEND
ile benzer olanExistingWorkPolicy.APPEND_OR_REPLACE
ekleyin ancak önkoşulları iptal eden veya yerine getiremeyen bir zincirin yerini değiştirin. (b/134613984, aosp/1199640)Gelecekte yürütülmesi gereken
WorkRequest
'leri izlemek için özelRunnableScheduler
ekleme imkanı sağlar. Bu, işlemdeki Planlayıcı tarafından kullanılır. (aosp/1203944)
Hata Düzeltmeleri
- Daha önce imkansız bir tür olan
Single<Void>
döndürdüğü içinRxWorker
konumundasetProgress()
desteği sonlandırıldı. Bunun yerineCompletable
döndüren yenisetCompletableProgress()
API'si eklendi ve yeni API'lere geçişe yardımcı olan yeni Lint kuralları eklendi. (b/150080946, aosp/1242665)
Sürüm 2.3.4
Sürüm 2.3.4
18 Mart 2020
androidx.work:work-*:2.3.4
yayınlandı. 2.3.4 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- 10 dakikalık yürütme süresi aşıldığında, uzun süre çalışan
Worker
öğelerinin birden fazla örneğinin çalışmasına neden olan bir hata düzeltildi. (aosp/1247484, b/150553353) - WorkManager'ın
IssueRegistry
hata analizi için düzeltme. Slack'ten @ZacSweers'a katkıları için teşekkür ederiz. (aosp/1217923)
Sürüm 2.3.3
Sürüm 2.3.3
4 Mart 2020
androidx.work:work-*:2.3.3
yayınlandı. 2.3.3 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
Worker
kesintiye uğrarsa doğru şekilde yeniden planlanmamasına neden olan hata düzeltildi. (b/150325687, aosp/1246571)
Sürüm 2.3.2
Sürüm 2.3.2
19 Şubat 2020
androidx.work:work-*:2.3.2
serbest bırakıldı. 2.3.2 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Nadir durumlarda WorkManager'ın JobScheduler'daki 100 iş sınırını aşmasına neden olan sorun giderilir. (aosp/1226859, b/149092520)
- ConstraintControllers'da yarış durumu için düzeltme uygulandı. (aosp/1220100)
- Uzun süre çalışan Çalışanlar için yönetim ön planı Hizmet yaşam döngüsü iyileştirildi. (aosp/1226295)
- Uzun süre çalışan Çalışan iptali sonrasında, Bildirimlerin iptali yönetimi iyileştirildi. (aosp/1228346)
Sürüm 2.3.1
Sürüm 2.3.1
5 Şubat 2020
androidx.work:work-*:2.3.1
yayınlandı. Sürüm 2.3.1 bu kayıtları içerir.
Hata düzeltmeleri
- Ön plan
Service
etkinken çalışan uzun süreliWorker
'ler içinNotification
yaşam döngüsünü daha iyi yönetin. (aosp/1218539, b/147249312) WorkManager
artıkandroidx.sqlite:sqlite-framework:2.1.0
kararlı sürümünü kullanıyor. (aosp/1217729)ForegroundInfo
içindeforegroundServiceType
kullanılırkenAndroidManifest.xml
içinde birforegroundServiceType
belirtilmesini sağlamak için lint kuralları eklendi. (aosp/1214207, b/147873061)
Sürüm 2.3.0
Sürüm 2.3.0
22 Ocak 2020
androidx.work:work-*:2.3.0
, 2.3.0-rc01
tarihinden bu yana herhangi bir değişiklik olmadan yayınlandı. Sürüm 2.3.0 bu kayıtları içerir.
2.2.0'dan sonraki önemli değişiklikler
- Uzun süreli çalışmalar veya önemli işler için
ListenableWorker#setForegroundAsync()
üzerinden destek. ListenableWorker#setProgressAsync()
Üzerinden Çalışan İlerleme Durumu desteği.- WorkManager, kitaplığın bir parçası olarak artık ek lint kuralları paketleyerek hataların erken yakalanmasını sağlar.
Sürüm 2.3.0-rc01
8 Ocak 2020
androidx.work:work-*:2.3.0-rc01
yayınlandı. 2.3.0-rc01 sürümü bu kayıtları içerir.
Bu sürüm 2.3.0-beta02
ile aynı
Hata düzeltmeleri
work-testing
yapısı artıkwork-runtime-ktx
üzerinde birapi
bağımlılığı tanımlıyor. (aosp/1194410)
Sürüm 2.3.0-beta02
18 Aralık 2019
androidx.work:work-*:2.3.0-beta02
yayınlandı. 2.3.0-beta02 sürümü bu kayıtları içerir.
Yeni özellikler
- Kurtarılamayan SQLite istisnaları için daha iyi bir hata mesajı eklendi. (aosp/1185777)
- İsteğe bağlı başlatma kullanılırken
androidx.work.impl.WorkManagerInitializer
içerik sağlayıcısınınAndroidManifest.xml
öğesinden kaldırılmasını sağlayan bir hata analizi kuralı eklendi. (aosp/1167007) enqueueUniquePeriodicWork()
yerinePeriodicWorkRequest
içinenqueue()
kullanıldığında hata analizi uyarısı eklendi. (aosp/1166032)
API değişiklikleri
ForegroundInfo
artıkListenableWorker.setForegroundAsync()
kullanılırken kullanılacaknotificationId
öğesini belirtmenizi zorunlu tutuyor. Bu, zarar verici bir değişiklik. Böylece aynı anda birden fazla uzun süreliWorker
çalıştırabilirsiniz.WorkManager
ayrıca sağlananNotification
öğelerinin kullanım ömürlerini daha iyi yönetir. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Hata düzeltmeleri
- AlarmManager uygulamasında, alarmların doğru şekilde temizlenmesine yol açan bir hata düzeltildi. (aosp/1156444)
- Boş
WorkRequest
listesinin yanlışWorkContinuation
zincirinin derlenmesine neden olan hata düzeltildi. (b/142835274, aosp/1157051)
Bağımlılık değişiklikleri
- WorkManager artık Oda 2.2.2'yi kullanıyor.
Sürüm 2.3.0-beta01
20 Kasım 2019
androidx.work:work-*:2.3.0-beta01
yayınlandı. 2.3.0-beta01 sürümü bu kayıtları içerir.
Yeni özellikler
- İsteğe bağlı başlatma kullanılırken
androidx.work.Configuration.Provider
öğesinin yanlış uygulanması nedeniyle geliştirici hatalarını önleyen yeni bir hata analizi kuralı eklendi. aosp/1164559
Sürüm 2.3.0-alpha03
23 Ekim 2019
androidx.work:work-*:2.3.0-alpha03
yayınlandı. Sürüm 2.3.0-alpha03 bu kayıtları içerir.
Yeni özellikler
AndroidManifest.xml
içinde başka bir bileşen kaydetmek zorunda kalmadanWorkRequest
öğelerini iptal etmeyi kolaylaştıranWorkManager.createCancelPendingIntent()
API'si eklendi. Bu API, özellikleNotification
kaynaklıWorkRequest
işlemlerinin iptal edilmesini kolaylaştırır. Bu API'nin, 2.3.0 sürümünde yeni ön plan API'leriyle eşlenmesini bekliyoruz.- WorkManager artık
androidx.room:*:2.2.0
kararlı sürümünü kullanıyor.
API değişiklikleri
- Temel platform API'leriyle daha tutarlı olması için
ForegroundInfo.getNotificationType()
öğesinin adıForegroundInfo.getForegroundServiceType()
olarak değiştirildi. (b/142729893, aosp/1143316)
Hata düzeltmeleri
- Bir işlem dışında
setTransactionSuccessful()
için gereksiz bir çağrının neden olduğu bir hata düzeltildi. Bu durum, nadir taşıma işlemlerinde yaşanır. (b/142580433, aosp/1141737)
Sürüm 2.3.0-alpha02
9 Ekim 2019
androidx.work:work-*:2.3.0-alpha02
yayınlandı. Sürüm 2.3.0-alpha02 bu kayıtları içerir.
Yeni özellikler
- WorkManager, işletim sistemi tarafından sürdürülmesi gereken uzun süreli işleri veya önemli işleri artık destekliyor. Daha fazla bilgi için
ListenableWorker#setForegroundAsync()
(veya Kotlin içinCoroutineWorker#setForeground()
) sayfasına bakın. (aosp/1133636)
API değişiklikleri
Data
uygulamasındakicontainsKey
API,hasKeyWithValueOfType
olarak yeniden adlandırıldı.ktx
kitaplığındaki ilgili uzantı yöntemi de yeniden adlandırıldı. (b/141916545)
Hata düzeltmeleri
- Sıraya alınan
WorkRequest
sayısı planlama sınırlarına yaklaştığında WorkManager programları adil bir şekilde çalışır. (aosp/1105766) - WorkManager,
ListenableWorker#onStopped()
işlevini yalnızca iş tamamlanmadıysa çağırır. (b/140055777) - WorkManager, bir çalışan kesintiye uğradığında veya terminal durumuna ulaştığında artık ilerleme bilgilerini kaldırıyor. (aosp/1114572)
Data
artık çok daha kullanışlı birtoString()
temsil ediyor. (b/140945323)Data
artık daha iyi birequals()
yöntemine sahip. Ayrıca,Array
türleri içindeepEquals
'i destekler. (b/140922528)- WorkManager artık dahili veritabanını ve tercih dosyalarını yedek olmayan bir dizinde depoluyor. (b/114808216)
Sürüm 2.3.0-alpha01
22 Ağustos 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
ListenableWorker
kullanıcıları artık ilerleme durumunusetProgressAsync()
API'si ile ayarlayabilir. Ayrıca,CoroutineWorker
içine karşılık gelensuspend
-ingsetProgress
API'si veRxWorker
içindeSingle<Void>
değeri döndüren birsetProgress
eklendi. Bu yeni API'lerle çalışanlar, ilerleme bilgileriniWorkInfo
aracılığıyla aktarabilir ve buna karşılık gelen birgetProgress
API'si vardır. (b/79481554)Data
,Worker
giriş verilerinin beklenen türde anahtarlara sahip olduğunu doğrulamak için kullanılabilecek bircontainsKey()
API'sına sahip. (b/117136838)Data
artıkData.toByteArray()
veData.fromByteArray()
kullanılarak serileştirilebilir.Data
ile sürüm oluşturma garantisi verilmez, bu nedenle onu devam ettirmemeniz veya uygulamalar arasında IPC için kullanmamanız gerekir. Yalnızca aynı uygulamanın birden fazla işlemi arasında güvenle kullanılabilirler.Configuration.setInputMergerFactory
aracılığıylaInputMergerFactory
belirtme olanağı eklendi. (b/133273159)
API değişiklikleri
WorkerFactory
, daha önce çağrılanListenableWorker
örneğini döndürürse WorkManager,IllegalStateException
öğesinin bir örneğini atar. (b/139554406)ListenableWorker
içindeListenableFuture
iptali veonStopped()
geri aramasıyla ilgili dokümanlar güncellenir. (b/138413671)
Hata düzeltmeleri
- İşlemdeki Planlayıcı artık
idle
kısıtlamasıylaWorkRequest
öğelerini yok sayıyor. Bu istekler artık yalnızca cihazınidle
olduğu durumlardaJobScheduler
tarafından teslim alınıyor. (aosp/1089779) TestScheduler
artık testlerde dahili görev yürütücüsü için belirtilenExecutor
öğesini doğru şekilde kullanıyor. (aosp/1090749)
Sürüm 2.2.0
Sürüm 2.2.0
15 Ağustos 2019
androidx.work:work-*:2.2.0
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Bu sürüm, androidx.work:work-*:2.2.0-rc01
ile aynı.
2.2.0 ve 2.1.0'da Yapılan Önemli Değişiklikler
androidx.work:work-gcm:2.2.0
, Google Play Hizmetleri <= 22 API düzeyleri için kullanılabilir olduğunda GCMNetworkManager'ın planlayıcı olarak kullanılmasını destekleyen yeni bir Maven yapısıdır. Bu, eski API sürümlerinde daha güvenilir ve performanslı arka planda işlemeye yardımcı olan isteğe bağlı bir bağımlılıktır. Uygulamanız Google Play Hizmetleri'ni kullanıyorsa GCMNetworkManager desteğini otomatik olarak almak için bu bağımlılığı gradle dosyanıza ekleyin. Play Hizmetleri kullanılamıyorsa WorkManager eski cihazlarda AlarmManager'ı kullanmaya devam eder.
Sürüm 2.2.0-rc01
30 Temmuz 2019
androidx.work:work-*:2.2.0-rc01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Hata düzeltmeleri
- AlarmManager uygulamasında, Hizmet'in zamanından önce kapanmasına ve nadir durumlarda
RejectedExecutionException
hatasına neden olan bir hata düzeltildi. (aosp/1092374) (b/138238197). - Bazı cihazlarda
JobScheduler
API'leri kullanılırkenNullPointerException
için geçici çözüm eklendi. (aosp/1091020) (b/138364061), (b/138441699)
Sürüm 2.2.0-beta02
19 Temmuz 2019
androidx.work:work-*:2.2.0-beta02
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Hata düzeltmeleri
2.2.0-beta01
ayında kullanıma sunulan istenmeyen jakoko bağımlılığı kaldırıldı.
Sürüm 2.2.0-beta01
17 Temmuz 2019
androidx.work:work-*:2.2.0-beta01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Yeni özellikler
androidx.work:work-gcm:2.2.0-beta01
, Google Play Hizmetleri <= 22 API düzeyleri için kullanılabilir olduğunda GCMNetworkManager'ın planlayıcı olarak kullanılmasını destekleyen yeni bir Maven yapısıdır. Bu, eski API sürümlerinde daha güvenilir ve performanslı arka plan işlemesine yardımcı olan isteğe bağlı bir bağımlılıktır. Uygulamanız Google Play Hizmetleri'ni kullanıyorsa GCMNetworkManager desteğini otomatik olarak almak için bu bağımlılığı gradle dosyanıza ekleyin. Play Hizmetleri kullanılamıyorsa WorkManager eski cihazlarda AlarmManager'ı kullanmaya devam eder.
Hata düzeltmeleri
- Nvidia Shield K1 tabletlerinde ağ durumu izlenirken
IllegalArgumentException
için düzeltme uygulandı. (aosp/1010188)
Sürüm 2.1.0
Sürüm 2.1.0
11 Temmuz 2019
androidx.work:work-*:2.1.0
yayınlandı. Bu sürüm, androidx.work:work-*:2.1.0-rc01
ile aynı.
2.0.1'den bu yana yapılan önemli değişiklikler
work-runtime-ktx
için artık Java 8 gerekiyor. Herhangi bir sorunla karşılaşırsanızbuild.gradle
öğenize aşağıdakileri ekleyebilirsiniz:kotlinOptions { jvmTarget = "1.8" }
- WorkManager için isteğe bağlı başlatma özelliği eklendi. Bu özellik, WorkManager'ı yalnızca referans verildiğinde oluşturur. b/127497100 Projenizi isteğe bağlı başlatma için ayarlamak üzere:
- Otomatik başlatıcıyı devre dışı bırakın.
- Özel
Application
nesnenizeConfiguration.Provider
uygulayın. - Tüm
WorkManager.getInstance()
başvurularınıWorkManager.getInstance(Context)
olarak değiştirin. Bu değişiklik kapsamındaWorkManager.getInstance()
özelliğini kullanımdan kaldırdık. İsteğe bağlı başlatma yapmasanız bile yeniWorkManager.getInstance(Context)
değişim cihazını çağırmak her zaman daha güvenlidir.
PeriodicWorkRequest
artık ilk gecikmeleri destekliyor. Başlangıç gecikmesi ayarlamak içinPeriodicWorkRequest.Builder
üzerindesetInitialDelay
yöntemini kullanabilirsiniz. b/111404867DelegatingWorkerFactory
kullanarak kayıtlı bir veya daha fazlaWorkerFactory
öğesine yetki verme olanağı eklendi. b/131435993- WorkManager tarafından kullanılan
Executor
alanını, tüm dahili muhasebe işlemleri içinConfiguration.Builder.setTaskExecutor
üzerinden özelleştirme olanağı eklendi. work-testing
yapısındaTestWorkerBuilder
veTestListenableWorkerBuilder
kullanarak test edilebilirWorker
veListenableWorker
sınıfları oluşturma olanağı eklendi.work-testing
ürününün artık Kotlin'i bağımlılık olarak aldığını ve varsayılan olarak birkaç Kotlin uzantısı içerdiğini unutmayın.
- Koşu denemesi sayısı
WorkInfo
değerine eklendi. b/127290461 Data
türleri artık baytları ve bayt dizilerini depolayabilir ve alabilir. Bu,Data
nesnelerinin maksimum boyutunu DEĞİŞTİRMEZ.- WorkManager artık, veritabanıyla ilgili bazı sorunları çözecek
Room 2.1.0
hizmetini kullanıyor.
Sürüm 2.1.0-rc01
27 Haziran 2019
androidx.work:work-*:2.1.0-rc01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Hata düzeltmeleri
- Yedekleme devam ederken
JobScheduler
ile işler yürütülürken bir uygulamanın kilitlenmesine neden olan bir hata düzeltildi b/135858602.
Sürüm 2.1.0-beta02
20 Haziran 2019
androidx.work:work-*:2.1.0-beta02
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Hata düzeltmeleri
TestListenableWorkerBuilder
,ListenableWorker
örnekleri oluştururken artık doğruWorkerFactory
kullanıyor. b/135275844- İşlemin ölümü nedeniyle
WorkRequest
işlemleri için yürütme pencerelerinde kaymalara neden olan bir hata düzeltildi. b/135272196
Sürüm 2.1.0-beta01
13 Haziran 2019
androidx.work:work-*:2.1.0-beta01
yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.
Hata düzeltmeleri
- WorkManager artık, veritabanıyla ilgili bazı sorunları çözecek
Room 2.1.0
hizmetini kullanıyor. - Ana iş parçacığındaki bazı başlangıç diski G/Ç'si kaldırıldı.
- Kısıtlama izlemedeki olası bir kilitlenme düzeltildi. b/134361006
- WorkManager ile ilişkilendirilen geçersiz işler önleme amaçlı olarak iptal edildi. b/134058261
- JobScheduler API'lerine hatalı çalışan cihazlar için bazı savunma çağrıları eklendi.
Sürüm 2.1.0-alpha03
5 Haziran 2019
androidx.work:*:2.1.0-alpha03
yayınlandı.
Hata düzeltmeleri
PeriodicWorkRequest
ile ilgili dokümanlar iyileştirildi.WorkManagerTestInitHelper
artık testler için doğru arka plan yürütücüyü kullanıyor.- Bazı cihazlarda büyük işlemler gerçekleştirirken SQLite ile ilgili sorunlara yönelik düzeltmeler. (b/130182503)
- WorkManager'ın bağımlılıkları artık daha ayrıntılı. (b/133169148).
- WorkManager'ı kullanarak iş planlarken
JobScheduler
uygulanmasıyla ilgili, OEM'ye özgü geçici hatalar. - AlarmManager tabanlı planlayıcıda, daha önce nadir kilitlenmelere neden olan hizmet kullanım ömrüne yönelik iyileştirmeler. (b/133313734)
Sürüm 2.1.0-alpha02
16 Mayıs 2019
WorkManager 2.1.0-alpha02 yayınlandı. Bu sürüm birkaç yeni API içeriyor.
API Değişiklikleri
PeriodicWorkRequest
artık ilk gecikmeleri destekliyor. Başlangıç gecikmesi ayarlamak içinPeriodicWorkRequest.Builder
üzerindesetInitialDelay
yöntemini kullanabilirsiniz. b/111404867DelegatingWorkerFactory
kullanarak kayıtlı bir veya daha fazlaWorkerFactory
öğesine yetki verme olanağı eklendi. b/131435993WorkManager tarafından kullanılan
Executor
alanını, tüm dahili muhasebe işlemleri içinConfiguration.Builder.setTaskExecutor
üzerinden özelleştirme olanağı eklendi.WorkRequest.keepResultsForAtLeast
(b/130638001), isteğe bağlı başlatma vePeriodicWorkRequest.Builder
(b/131711394) ile ilgili belgeler iyileştirildi.
Sürüm 2.1.0-alpha01
24 Nisan 2019
WorkManager 2.1.0-alpha01 yayınlandı. Bu sürüm birkaç yeni API içeriyor. Bu sürümden itibaren 1.x sürümüne geri taşınmayacak yeni özellikler olacağını unutmayın. 2.x sürümüne geçmenizi öneririz.
API Değişiklikleri
- WorkManager için isteğe bağlı başlatma özelliği eklendi. Bu özellik, WorkManager'ı yalnızca referans verildiğinde oluşturur. b/127497100 Projenizi isteğe bağlı başlatma için ayarlamak üzere:
- Otomatik başlatıcıyı devre dışı bırakın.
- Özel
Application
nesnenizeConfiguration.Provider
uygulayın. - Tüm
WorkManager.getInstance()
başvurularınıWorkManager.getInstance(Context)
olarak değiştirin. Bu değişiklik kapsamındaWorkManager.getInstance()
özelliğini kullanımdan kaldırdık. İsteğe bağlı başlatma yapmasanız bile yeniWorkManager.getInstance(Context)
değişim cihazını çağırmak her zaman daha güvenlidir.
work-testing
yapısındaTestWorkerBuilder
veTestListenableWorkerBuilder
kullanarak test edilebilirWorker
veListenableWorker
sınıfları oluşturma olanağı eklendi.work-testing
ürününün artık Kotlin'i bağımlılık olarak aldığını ancak aynı zamanda varsayılan olarak birkaç Kotlin uzantısı içerdiğini unutmayın.
- Koşu denemesi sayısı
WorkInfo
değerine eklendi. b/127290461 Data
türleri artık baytları ve bayt dizilerini depolayabilir ve alabilir. Bu,Data
nesnelerinin maksimum boyutunu DEĞİŞTİRMEZ.CoroutineWorker.coroutineContext
desteği sonlandırıldı. Bu alan, yanlış bir şekildeCoroutineDispatcher
olarak yazılmıştır. Askıya alma işlevinin gövdesinde istediğiniz coroutineContext'e kendiniz gittiğiniz için artık buna ihtiyacınız yoktur.RxWorker.createWork()
veRxWorker.getBackgroundScheduler()
artık@NonNull
döndürme türleriyle ek açıklamaya sahip.
Sürüm 2.0.1
Sürüm 2.0.1
9 Nisan 2019
WorkManager 2.0.1 yayınlandı. Bu sürüm 2.0.1-rc01 ile aynıdır.
Sürüm 2.0.1-rc01
3 Nisan 2019
WorkManager 2.0.1-rc01 yayınlandı. Bu sürüm bazı hata düzeltmeleri içeriyor. Eski 1.x kullanıcıları için bu değişikliklerden bazıları 1.0.1-rc01 sürümünde de görünür.
Hata Düzeltmeleri
- Robolectric testleri artık WorkManager ile düzgün çalışıyor. b/122553577
- JobScheduler öncesi API'lerde temizlenmeyen kısıtlamalar takibiyle ilgili uç durum kilitlenmesi düzeltildi. b/129226383
- Uzun iş zincirleriyle ilgili bir
StackOverflowError
düzeltildi. b/129091233 PeriodicWorkRequest
dokümanları, esnek sürenin API 23'te desteklenmediğini belirtecek şekilde güncellendi.- Kotlin dokümanlarındaki bazı bozuk bağlantılar düzeltildi.
Sürüm 2.0.0
Sürüm 2.0.0
20 Mart 2019
WorkManager 2.0.0 yayınlandı. Bu sürüm, 2.0.0-rc01 ile aynıdır ve AndroidX bağımlılıkları içeren 1.0.0 kararlı sürümünün AndroidX sürümüdür. Eski 1.x sürümleri yerine bu sürümü hedeflemenizi öneririz. Tüm etkin geliştirmeler 2.x ve 1.x sürümlerini hedefler. Kritik hata düzeltmeleri sınırlı bir süre için alınır.
Sürüm 2.0.0-rc01
7 Mart 2019
WorkManager 2.0.0-rc01 yayınlandı. Bu sürüm, 1.0.0 kararlı sürümüyle aynı ancak AndroidX bağımlılıkları içeriyor. Bu sürüm 2.0.0 kararlılığına ulaştığında bu sürümü eklemeniz gerekir. Eski 1.x sürümleri yalnızca bazı kritik hata düzeltmelerini alır. Tüm etkin geliştirme 2.x'i hedefleyecektir.
AndroidX Öncesi Bağımlılıklar
Referans belgeler: Java
Modern
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") }
Sürüm 1.0.1
Sürüm 1.0.1
9 Nisan 2019
WorkManager 1.0.1 yayınlandı. Bu sürüm 1.0.1-rc01 ile aynıdır.
1.x dalında bundan sonra çok az güncelleme olacağından, kullanıcıların WorkManager 2.x’e güncelleme yapmalarını önemle tavsiye ettiğimizi lütfen unutmayın. 1.x kitaplığı için yeni API'ler de yayınlanmayacaktır.
Sürüm 1.0.1-rc01
2 Nisan 2019
WorkManager 1.0.1-rc01 yayınlandı. Bu sürüm bazı hata düzeltmeleri içeriyor.
Hata Düzeltmeleri
- Robolectric testleri artık WorkManager ile düzgün çalışıyor. b/122553577
- JobScheduler öncesi API'lerde temizlenmeyen kısıtlamalar takibiyle ilgili uç durum kilitlenmesi düzeltildi. b/129226383
- Uzun iş zincirleriyle ilgili bir
StackOverflowError
düzeltildi. b/129091233
Sürüm 1.0.0
Sürüm 1.0.0
5 Mart 2019
Bu, WorkManager'ın 1.0.0 kararlı sürümüdür. WorkManager'ın bu sürümü 1.0.0-rc02 ile aynıdır.
Sürüm 1.0.0-rc02
21 Şubat 2019
Bu, WorkManager'ın 1.0.0 kararlı sürümü için ikinci sürüm adayıdır. Bu sürüm iki hata düzeltmesi içermektedir.
Hata Düzeltmeleri
Worker
öğeleri artık bir uygulama kilitlenmesinden sonra doğru şekilde planlandı. b/124546316İşaretlenmemiş
Exception
işareti verenWorker
öğeleri artık doğru bir şekildeFAILED
olarak işaretleniyor ve artık uygulama işlemini çökertmiyor.
Sürüm 1.0.0-rc01
14 Şubat 2019
Bu, WorkManager'ın 1.0.0 kararlı sürümü için sürüm adayıdır. Bu sürüm bir hata düzeltmesi içerir.
Hata Düzeltmeleri
- AlarmManager tabanlı uygulama, artık PeriodicWorkRequests için
flex
zaman aralığını doğru şekilde uymaktadır. b/124274584
Sürüm 1.0.0-beta05
6 Şubat 2019
Bu sürüm bazı hata düzeltmeleri içermektedir.
Hata Düzeltmeleri
- API 23'te
JobScheduler.getPendingJob(...)
özelliğinin kullanıldığı bir durum düzeltildi. b/123893059 - Android 5.1 (API düzeyi 22) veya önceki sürümleri çalıştıran cihazlarda
NullPointerException
sorunu düzeltildi. b/123835104
Sürüm 1.0.0-beta04
4 Şubat 2019
Bu sürüm bazı hata düzeltmeleri içermektedir.
Hata Düzeltmeleri
- AlarmManager tabanlı uygulama için PeriodicWork'ün zamanlaması iyileştirildi.
- AlarmManager tabanlı uygulamayı kullanırken WorkManager'ın kısıtlamaları doğru şekilde izleyememesi durumu düzeltildi. b/123379508
- AlarmManager tabanlı uygulamayı kullanırken WorkManager'ın işlem ölümü üzerinde çalışmayı yeniden denememe sorunu giderildi. b/123329850
- AlarmManager tabanlı uygulamayı kullanırken WorkManager'ın Uyandırma Kilitlerini sızdırmasına neden olan bir durum düzeltildi.
Sürüm 1.0.0-beta03
25 Ocak 2019
Bu sürüm bazı hata düzeltmeleri içermektedir.
Hata Düzeltmeleri
- İşin bazı durumlarda doğru şekilde yürütülmemesine neden olan bir regresyon
1.0.0-beta02
ortaya çıktı. b/123211993 - Çalışmanın geri yükleme zamanına düzgün şekilde uymadığı bir durum düzeltildi. b/122881597
- Android 5.1 (API veya önceki sürümleri) veya önceki sürümleri çalıştıran cihazlarda
ConcurrentModificationException
sorunu düzeltildi. Bu,1.0.0-beta02
ürünündeki düzeltmenin devamıdır. b/121345393 - Manifest'te bu ek açıklamanın eksik olduğu bazı bileşenler için
exported=false
eklendi. - Paket düzeyindeki belgelere WorkManager'ın işletim sistemiyle nasıl etkileşimde bulunduğuna dair bilgiler eklendi.
Sürüm 1.0.0-beta02
15 Ocak 2019
Bu sürüm bazı hata düzeltmeleri içermektedir.
Hata Düzeltmeleri
- Android 6.0 (API düzeyi 23) çalıştıran cihazlarda periyodik çalışmaların aralık başına birden fazla kez çalıştırılmasına neden olan uç bir durum düzeltildi. b/121998363
- Android 5.1 (API düzeyi 22) veya önceki sürümleri çalıştıran cihazlarda
ConcurrentModificationException
sorunu düzeltildi. b/121345393 - Android 5.1 (API düzeyi 22) veya önceki sürümleri çalıştıran cihazlarda Kısıtlamalar karşılanmadığında oluşan hatalı çalışma yürütme düzeltildi. b/122578012
- Bazı uç durumlarda daha hızlı olacak şekilde optimize edilmiş iş tamamlama süreci. b/122358129
- WorkManager'ın kullandığı birden fazla
LiveData
örneği arasındaki olası yarış koşullarını ele alan bir değişiklik eklendi. 1.1.1-rc01
yerineRoom
bağımlılığı1.1.1
kullanılacak şekilde taşındı; bu sürümler aynı. b/122578011
Sürüm 1.0.0-beta01
19 Aralık 2018
Bu sürümde API değişikliği yoktur. Bundan sonra WorkManager'ın, kritik bir sorun olmadığı sürece bir sonraki sürüme kadar API'nin kararlı durumda kalması beklenmektedir. Bu sürüm bazı hata düzeltmeleri içermektedir.
Hata Düzeltmeleri
- Başarıyla tamamlanmış üst işin daha önce iptal edilen alt öğeleri artık çalışmayacaktır. b/120811767
- Uygun şekilde başlatılan günlük sınıfları (genellikle testler sırasında gösterilir).
Sürüm 1.0.0-alfa13
12 Aralık 2018
Bu sürüm, bazı Kotlin kullanıcılarına faydalı olacak küçük bir API değişikliği içeriyor.
API Değişiklikleri
androidx.work.Result
,ListenableWorker
alt sınıfı olacak şekilde taşındı. Bu, Kotlin'in üst düzeyResult
sınıfıyla çakışmaların yeniden düzenlenmesini önler. Bu, olumsuz bir API değişikliğidir. b/120564418
Kesin API Değişiklikleri
androidx.work.Result
,ListenableWorker
alt sınıfı olacak şekilde taşındı.
Sürüm 1.0.0-alpha12
5 Aralık 2018
Bu sürümde, zarar veren API değişiklikleri yer alıyor. Lütfen aşağıdaki Kırıcı API Değişiklikleri bölümüne bakın. Bu sürüm muhtemelen ilk beta programımız olarak yayınlanacaktır. alpha12
, kapsamlı doküman güncellemeleri de içerir.
API Değişiklikleri
work-rxjava2
adlı yeni yapı,RxWorker
özelliğini tanıtıyor. Bu,Single<Payload>
bekleyen birListenableWorker
.- Firebase JobDispatcher desteği yakında sonlandırılacağı için kaldırıldı. Bu nedenle, beta sürümüne girerken
work-firebase
yapısı artık güncellenmeyecek. Gelecekte bir alternatif eklemeye çalışacağız. Payload
,Result
olarak birleştirildi.Result
, artıkResult.success()
(veyaResult.success(Data)
),Result.failure()
(veyaResult.failure(Data)
) veResult.retry()
aracılığıyla elde edebileceğiniz üç somut uygulamaya sahip bir "bağımsız sınıf" haline geldi.ListenableFuture
öğeleriniz artıkPayload
yerineResult
sonucunu veriyor.Worker
,Data
çıkışı için getter ve setter yöntemlerine sahip değil. Bu, zarar verici bir değişiklik.- Yavaş tetiklenen içerik URI'lerini daha iyi desteklemek için
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
,Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
ve varyantlar eklendi. b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
varyant eklendi. Bu yöntem için API 26 gerekir.Operation.await()
veListenableFuture.await()
Kotlin uzantısı yöntemleri eklendi.Operation.getException()
,Operation.getThrowable()
olarak yeniden adlandırıldı. Bu, zarar verici bir değişiklik.- Bu öğeye başvuruda bulunan
ContentUriTriggers
sınıfı ve yöntemleri artık herkese açık olarak kullanılamaz. Bu, zarar verici bir değişiklik. - API'yi basitleştirmek için
WorkManager
,WorkContinuation
veOneTimeWorkRequest
için diğer varargs yöntemleri kaldırıldı. Derleme sorunlarını düzeltmek için mevcut değişkenleriniziArrays.asList(...)
ile sarmalayabilirsiniz. Her yöntemin tek bağımsız değişkenli sürümlerini eklemeye devam ediyoruz. Bu, zarar verici bir değişiklik. WorkContinuation.combine(OneTimeWorkRequest, *)
varyant kaldırıldı. Kafa karıştırıcı bir API sunuyorlardı; mevcutcombine
yöntemleri daha anlaşılırdı. Bu, zarar verici bir değişiklik.
Hata Düzeltmeleri
- Marshmallow öncesi uygulamalar, zaten yürütülen bir görevin işlem ölümünü telafi etmede artık daha güvenilir.
observeForever
aracılığıyla gözlemlenenLiveData
, WorkManager aracılığıyla takip edilir. Bu, bir Oda kitaplığı düzeltmesinin eski halidir. b/74477406- Serileştirilmiş nesne maksimum boyutunu aşarsa
Data.Builder.build()
artık bir istisna oluşturuyor. Bu durum daha önce yalnızca düzgün şekilde gerçekleştiremediğiniz bir arka plan ileti dizisinde gerçekleşiyordu. - Durdurulan ve iptal edilen diğer ayırt edici çalışmalar;
getWorkInfoById()
,ListenableWorker.onStopped()
boyuncaCANCELLED
State
içeren birWorkInfo
döndürür. ListenableWorker
kapsamındakinull
Result
işlemi, hata olarak değerlendir. b/120362353- API 24'ü çalıştıran ve zaman zaman
IllegalArgumentException
sorunu veren Shield Tabletler için spekülatif düzeltme. b/119484416
Kesin API Değişiklikleri
- Firebase JobDispatcher desteği yakında sonlandırılacağı için kaldırıldı. Bu nedenle, beta sürümüne girerken
work-firebase
yapısı artık güncellenmeyecek. Gelecekte bir alternatif eklemeye çalışacağız. Payload
,Result
olarak birleştirildi.Result
, artıkResult.success()
(veyaResult.success(Data)
),Result.failure()
(veyaResult.failure(Data)
) veResult.retry()
aracılığıyla elde edebileceğiniz üç somut uygulamaya sahip bir "bağımsız sınıf" haline geldi.ListenableFuture
öğeleriniz artıkPayload
yerineResult
sonucunu veriyor.Worker
,Data
çıkışı için getter ve setter yöntemlerine sahip değil.Operation.await()
veListenableFuture.await()
Kotlin uzantısı yöntemleri eklendi.Operation.getException()
,Operation.getThrowable()
olarak yeniden adlandırıldı.- Bu öğeye başvuruda bulunan
ContentUriTriggers
sınıfı ve yöntemleri artık herkese açık olarak kullanılamaz. - API'yi basitleştirmek için
WorkManager
,WorkContinuation
veOneTimeWorkRequest
için diğer varargs yöntemleri kaldırıldı. Derleme sorunlarını düzeltmek için mevcut değişkenleriniziArrays.asList(...)
ile sarmalayabilirsiniz. Her yöntemin tek bağımsız değişkenli sürümlerini eklemeye devam ediyoruz. WorkContinuation.combine(OneTimeWorkRequest, *)
varyant kaldırıldı. Kafa karıştırıcı bir API sunuyorlardı; mevcutcombine
yöntemleri daha anlaşılırdı.
Sürüm 1.0.0-alpha11
8 Kasım 2018
Bu sürüm, beta
itibarıyla kararlı API haline gelecek birçok değişiklik içeriyor.
Bu sürümde önemli API değişiklikleri var. Lütfen aşağıdaki Arı Çevrici API Değişiklikleri bölümüne bakın.
API Değişiklikleri
work-runtime-ktx
, yeni birCoroutineWorker
sunuyor.WorkStatus
,WorkInfo
olarak yeniden adlandırıldı. Karşılık gelen tümgetStatus
yöntemi varyantları, karşılık gelengetWorkInfo
varyantlarına göre yeniden adlandırıldı. Bu, zarar verici bir değişiklik.ListenableWorker.onStopped()
, artıkWorkRequest
işleminin iptal edilip edilmediğini temsil eden bir boole bağımsız değişkenini kabul etmiyor.WorkManager
artık bu ayrımı yapmamaktadır. Bu, zarar verici bir değişiklik.androidx.work.test
paketinin adı,androidx.work.testing
paketi olarak değiştirildi. Bu, zarar verici bir değişiklik.Constraints
üzerindeki ayarlayıcılar artık herkese açık API'nin bir parçası değil. Bu, zarar verici bir değişiklik.WorkerParameters.getTriggeredContentUris()
veWorkerParameters.getTriggeredContentAuthorities()
daha önce dizi döndürdü. Artık bu yöntemler Koleksiyonlar döndürür. Bu, zarar verici bir değişiklik.ListenableWorker.onStartWork()
,ListenableWorker.startWork()
olarak yeniden adlandırıldı. Bu, zarar verici bir değişiklik.WorkStatus
oluşturucu artık herkese açık API'nin bir parçası değil. Bu, zarar verici bir değişiklik.Configuration.getMaxJobSchedulerID()
veConfiguration.getMinJobSchedulerID()
, sırasıylaConfiguration.getMinJobSchedulerId()
veConfiguration.getMaxJobSchedulerId()
olarak yeniden adlandırıldı. Bu, zarar verici bir değişiklik.- API'nin ergonomisini iyileştirmek için herkese açık API'ye çok sayıda
@NonNull
ek açıklaması eklendi. WorkContinuation
oluşturmak zorunda kalmadan benzersizOneTimeWorkRequest
'leri sıraya koymak içinWorkManager.enqueueUniqueWork()
API ekleyin.WorkManager
üzerindeki tümenqueue
vecancel
yöntemleri artık yeni birOperation
türü döndürüyor. Bu, zarar verici bir değişiklik.enqueue
işlevinin hiçbir değişkeni artıkWorkRequest
için değişkenleri kabul etmiyor. Bu, zarar verici bir değişiklik. Bunun yerine Koleksiyonlar'ı kullanın. Mevcut kodu değiştirmek içinArrays.asList()
kodunu kullanabilirsiniz. Bu uygulamanın amacı, API yüzeyini ve yöntem sayısını azaltmaktır.- İşlem başına
WorkManager
işlemini birden fazla kezinitialize
yapmaya çalışmak artıkIllegalStateException
sonucunu verir. Bu, zarar verici bir değişiklik.
Hata Düzeltmeleri
work-runtime-ktx
yapısındakiWorkRequest.Builder
öğeleri artıkListenableWorker
kullanıyor. b/117666259 düzeltmeleriPeriodicWork
uygulamasının bir sonraki çalışma zamanının gelecekte olduğundan emin olun. b/118204399 düzeltmeleri- Uygulama başlatılırken WorkManager'ı kullanırken olası disk G/Ç'sini kaldırın. b/117796731 düzeltmeleri
WorkConstraintsTracker
öğesinde bir yarış durumunu düzeltin. android-workmanager/issues/56 sorunlarını düzeltir
Kesin API Değişiklikleri
WorkStatus
,WorkInfo
olarak yeniden adlandırıldı. Karşılık gelen tümgetStatus
yöntemi varyantları, karşılık gelengetWorkInfo
varyantlarına göre yeniden adlandırıldı.ListenableWorker.onStopped()
, artıkWorkRequest
işleminin iptal edilip edilmediğini temsil eden bir boole bağımsız değişkenini kabul etmiyor.WorkManager
artık bu ayrımı yapmamaktadır.androidx.work.test
paketinin adı,androidx.work.testing
paketi olarak değiştirildi.Constraints
üzerindeki ayarlayıcılar artık herkese açık API'nin bir parçası değil.WorkerParameters.getTriggeredContentUris()
veWorkerParameters.getTriggeredContentAuthorities()
daha önce dizi döndürdü. Artık bu yöntemler Koleksiyonlar döndürür.ListenableWorker.onStartWork()
,ListenableWorker.startWork()
olarak yeniden adlandırıldı.WorkStatus
oluşturucu artık herkese açık API'nin bir parçası değil.Configuration.getMaxJobSchedulerID()
veConfiguration.getMinJobSchedulerID()
, sırasıylaConfiguration.getMinJobSchedulerId()
veConfiguration.getMaxJobSchedulerId()
olarak yeniden adlandırıldı.WorkManager
üzerindeki tümenqueue
vecancel
yöntemleri artık yeni birOperation
türü döndürüyor.enqueue
işlevinin hiçbir değişkeni artıkWorkRequest
için değişkenleri kabul etmiyor.- İşlem başına
WorkManager
işlemini birden fazla kezinitialize
yapmaya çalışmak artıkIllegalStateException
sonucunu verir.
Sürüm 1.0.0-alfa10
11 Ekim 2018
Bu sürüm, geliştirici tarafından kontrol edilen eşzamansız çalışmaları destekler. Bu sürümde önemli API değişiklikleri var. Lütfen aşağıdaki Arı Çevrici API Değişiklikleri bölümüne bakın.
WorkManager'ın, alfa döneminin son aşamalarına girdiğini tahmin ediyoruz. Beta sürümünde API'nin kararlı olmasını bekliyoruz, bu nedenle lütfen sorun izleyicimize geri bildirim göndermek için biraz zaman ayırın.
API Değişiklikleri
- Önceden varsayılan olarak kullanılan tüm
deprecated
yöntemleri ve sınıfları (özellikle varsayılanWorker
oluşturucusu) kaldırıldı. Bu, son derece önemli bir API değişikliğidir. NonBlockingWorker
dersinin adıListenableWorker
olarak değiştirildi. Bu sınıf artık herkese açık bir sınıf olup kullanıma hazır.ListenableWorker
, ana iş parçacığında çağrılanListenableFuture<Payload> onStartWork()
adlı soyut yönteme erişim sağlar. İşleri eşzamansız olarak başlatmak ve işlemek size kalmıştır. İşiniz bittiğindeListenableFuture
uygun şekilde güncellemeniz gerekir.ListenableFuture
öğelerinin referans uygulamaları,alpha02
içindekiFutures
paketinde sağlanmıştır (WorkManager
bölümünün altına bakın).Worker
,ListenableWorker
kapsamını genişletir ve soyut birResult doWork()
yöntemiyle çalışmaya devam eder.- Bazı yöntemler ve üyeler
Worker
öğesindenListenableWorker
grubuna karıştırıldı. - Yakında, Kotlin eş yordamlarını (kararlı sürümler yayınlandıktan sonra) ve RxJava2 kullanan
ListenableWorker
'ler için referans uygulamalar sağlayacağız.
WorkerFactory
arayüzü veDefaultWorkerFactory
somut uygulama,WorkerFactory
adlı soyut bir sınıfta birleştirildi. Uygulama, varsayılan yansıtmaya dayalı davranışın, kullanıcı tarafından oluşturulan tümWorkerFactory
örnekleri için son adım girişimi olarak çağrılmasını sağlar. Bu, zarar verici bir değişiklik.WorkManager.synchronous()
,WorkContinuation.synchronous()
ve ilgili tüm yöntemler kaldırıldı.ListenableFuture<Void>
, API'deki birçok yöntemin döndürme türü olarak eklendi. Bu, son derece önemli bir API değişikliğidir.- Artık
ListenableFuture
öğelerini kullanarak eşzamanlı olarak alma ve gözlem yapabilirsiniz. Örneğin,WorkManager.enqueue()
eskidenvoid
döndürürken artıkListenableFuture<Void>
döndürüyor. İşlem tamamlandığında kod çalıştırmak içinListenableFuture.addListener(Runnable, Executor)
veyaListenableFuture.get()
yöntemini çağırabilirsiniz. - Bu
ListenableFuture
öğeleri işlemin başarılı veya başarısız olduğunu değil, yalnızca işlemin tamamlandığını belirtir. Bu bilgileri bulmak için yine de bir dizi WorkManager yöntemi kullanmanız gerekecektir. - Bu nesnelere yapılan
cancel()
çağrılarını yoksayıyoruz. Çünkü bunlar kafa karıştırıcıdır ve anlaşılması güçtür (işlemi mi yoksa sonucunda ortaya çıkan çalışmayı mı iptal ediyorsunuz?). Bu,Future
sözleşmesi kapsamındadır. - Eşzamanlı
getStatus*
yöntemleriyle benzerliği korumak içinListenableFuture
varyant sağladık veLiveData
varyantını döndüren mevcut varyantları, adlarında açıkça "LiveData" bulunacak şekilde yeniden adlandırdık (örneğin,getStatusesByIdLiveData(UUID)
). Bu, zarar verici bir API değişikliğidir.
- Artık
Hata Düzeltmeleri
- Yinelenen
androidx-annotations.pro
dosyalarıyla ilgili alfa09'daki bilinen sorun düzeltildi. Gradle dosyanızdanexclude 'META-INF/proguard/androidx-annotations.pro'
dosyasını silerek bu geçici çözümü önceki sürüm notlarından kaldırabilirsiniz. - Yeni
Worker
oluşturucuyu tutmak için ProGuard yapılandırmaları eklendi. b/116296569 - İşin
REPLACE
d. b/116253486 ve b/116677275 olduğu bir yarış durumunda potansiyelNullPointerException
düzeltme WorkContinuation.combine()
artık iki veya daha fazla yerine bir veya daha fazlaWorkContinuation
kabul ediyor. b/117266752
Kesin API Değişiklikleri
- Önceden varsayılan olarak kullanılan tüm
deprecated
yöntemleri ve sınıfları (özellikle varsayılanWorker
oluşturucusu) kaldırıldı. WorkerFactory
arayüzü veDefaultWorkerFactory
somut uygulama,WorkerFactory
adlı soyut bir sınıfta birleştirildi.WorkManager.synchronous()
veWorkContinuation.synchronous()
kaldırıldı.WorkManager.getStatus*()
yöntemleri artıkListenableFuture
döndürüyor.WorkManager.getStatus*LiveData()
,LiveData
değerini döndürür.
Sürüm 1.0.0-alpha09
19 Eylül 2018
Bilinen Sorun
Şu sorunla karşılaşırsanız: "İşletim sisteminden bağımsız 'META-INF/proGuard/androidx-annotations.pro' yoluna sahip birden fazla dosya bulundu" hatasını alıyorsanız, biz alfa10'da sorunu düzeltirken lütfen aşağıdakini geçici bir çözüm olarak gradle dosyanıza yerleştirin:
Modern
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Hata Düzeltmeleri
- "100 iş" hatası için gereken bir düzeltme daha eklendi. b/115560696
- Yarış koşullarından kaynaklanan yabancı anahtar kısıtlama hataları için bazı düzeltmeler eklendi. b/114705286
- Temel
Worker
öğesineConstraintTrackingWorker.onStopped(boolean)
çağrı için yetki verildi. b/114125093 - Firebase JobDispatcher için doğru minimum geri yükleme gecikmesini zorunlu kılın. b/113304626
- Kitaplık içinde gelişmiş iş parçacığı garantileri.
LiveData
değerini tekilleştirmeyle ilgili olası sorunları dahili olarak düzeltin.
API Değişiklikleri
- Artık
WorkManager.Configuration
öğesinin parçası olarak birWorkerFactory
belirterek çalışma zamanında kendiWorker
örneklerinizi oluşturabilirsiniz. Yedek fabrika, WorkManager'ın önceki sürümlerinin davranışıyla eşleşenDefaultWorkerFactory
değerine sahiptir.Worker
veNonBlockingWorker
için varsayılan kurucular artık kullanımdan kaldırılmış olarak işaretlendi. Lütfen yeni oluşturucuyu (Worker(Context, WorkerParameters)
) kullanın vesuper(Context, WorkerParameters)
yöntemini çağırın. WorkManager'ın gelecekteki sürümleri, varsayılan oluşturucuyu kaldıracaktır.
- Yeni
ListenableFuture
yapısını şirket içinde kullanmaya başladık (Guava bağımlılığı yok). Gelecek sürümlerde, ListenableFutures'ı API'ye ekleyeceğiz. Bu değişiklik,NonBlockingWorker
adlı uygulamanın gizlenen olarak gösterilmemesini destekleyecek. TestDriver
içinTestDriver.setInitialDelayMet(UUID)
veTestDriver.setPeriodDelayMet(UUID)
aracılığıyla zamanlı çalışmayı tetikleme özelliği ekleyin. b/113360060
Zarar Veren Değişiklikler
- Varsayılan
Worker
veNonBlockingWorker
kurucuları kullanımdan kaldırıldı. Lütfen en kısa zamanda yeni oluşturucuya geçiş yapın. Gelecekteki sürümler, varsayılan oluşturucuyu kaldıracak.
Sürüm 1.0.0-alpha08
27 Ağustos 2018
Hata Düzeltmeleri
- WorkManager bileşenleri, doğrudan başlatma sırasında etkinleşmemeleri için doğrudan başlatmanın farkında değil olarak açıkça etiketlenmiştir. Gelecekte WorkManager'ın doğrudan önyüklemeyi kullanabilen bir sürümünü sağlayacağız. b/112665532
- Yeniden denenen çalışmaların çalışmamasına neden olan bir sorun düzeltildi. b/112604021
- Periyodik çalışmaların tekrar tekrar çalışmaması (yukarıdaki sorunla ilgili) düzeltildi. b/112859683
- Uygulama işlemi zaten çalışırken uygulanan geri yükleme politikaları kabul edilir.
Data
öğesinde, sınırın 10 KB olduğunu belirten istisna mesajları düzeltildi.JobScheduler
işlemenin tamamlanmasındaki bir gecikmeyi hesaba katmak içinConfiguration.setMaxSchedulerLimit(int)
olan maksimum değer 50'ye düşürüldü. b/112817355
Sürüm 1.0.0-alpha07
16 Ağustos 2018
Hata Düzeltmeleri
- Sınırsız sayıda sonuç döndürebilen negatif limitleri olan potansiyel bir SQL sorgusu düzeltildi.
- Yürütülen çalışmalar artık diğer Planlayıcılarda ilgili çalışmanın bekleyen tüm kopyalarını doğru şekilde iptal ediyor. Bu durum,
JobScheduler
iş sınırının aşılmasına neden oldu. b/111569265 ConstraintTracker
öğesinde birConcurrentModificationException
düzeltildi. b/112272753Data.getBooleanArray(String)
veData.getIntArray(String)
döndürme türü notları@NonNull
yerine@Nullable
olarak değiştirildi. b/112275229
API Değişiklikleri
Worker
artıkNonBlockingWorker
adlı yeni bir sınıfın kapsamını genişletiyor. Bu durum mevcut kullanımı etkilemez. GelecekteNonBlockingWorker
, özel ileti dizisi oluşturma çözümleri için tam olarak desteklenen bir varlık haline gelecek.Data.getBooleanArray(String)
veData.getIntArray(String)
döndürme türü notları@NonNull
yerine@Nullable
olarak değiştirildi. b/112275229- Kotlin uzantıları:
Map.toWorkData()
desteği sonlandırıldı ve mevcut API'lerle daha tutarlı olması için üst düzeyworkDataOf(vararg Pair<String, Any?>)
eklendi.
Sürüm 1.0.0-alpha06
1 Ağustos 2018
Hata Düzeltmeleri
- İş planlanırken veritabanı kilidi kullanılmasını önleyin. b/111801342
- Doz modundayken
PeriodicWork
ürününün zamanında çalışmamasına neden olan hata düzeltildi. b/111469837 WorkManager
uygulamasının kilitlenmesine neden olan kısıtlamaları izlerken yarış durumunu düzeltin. googlecodelabs/android-workmanager/issues/56WorkRequest.Builder#build()
kullanırken benzersizWorkRequest
'ler oluşturun. b/111408337RescheduleReceiver
kullanımını, yalnızca ihtiyaç duyulanWorkRequest
olduğunda etkinleştirin. b/111765853
Sürüm 1.0.0-alpha05
24 Temmuz 2018
API Değişiklikleri
WorkManager.getInstance()
için ek açıklama artık@Nullable
yerine@NonNull
olarak eklendi. Bunun yerine, manuel başlatma durumlarında tekli düzgün şekilde başlatılmazsa yöntem birIllegalStateException
hatası verir. Bu, çok önemli bir API değişikliği.- WorkManager ayrıntı düzeyini kontrol edebilen yeni bir API (
Configuration.Builder.setMinimumLoggingLevel(int)
) eklendi. Varsayılan olarak WorkManager,Log.INFO
ve üstünü günlüğe kaydeder. Data.getString()
imzası, artık varsayılan bir değer kullanmaması için değiştirildi (dolaylı olaraknull
). Bu, zarar veren bir API değişikliğidir.- Yalnızca dahili kullanım için gereken bazı yöntemler
@hide
olarak işaretlendi.Constraints
kurucusuData.toByteArray()
veData.fromByteArray(byte[])
de buna dahildir. Bu, son derece önemli bir API değişikliğidir.
Hata Düzeltmeleri
- WorkManager, bilinen otomatik yedekleme durumları sırasında artık iş yürütmez. Bu durum, kilitlenmeye yol açmış olabilir. b/110564377
JobScheduler
kullanılırkenPeriodicWorkRequest
değerlerinin çift zamanlaması sorunu düzeltildi. b/110798652- Cihaz dozundan sonra
PeriodicWorkRequest
öğelerinin doğru şekilde çalışmamasıyla ilgili bir sorun düzeltildi. b/111469837 - Firebase JobDispatcher kullanılırken başlangıçtaki gecikmelerle ilgili bir sorun düzeltildi. b/111141023
- Bazı olası yarış koşulları ve zamanlama sorunları düzeltildi.
- Artık ihtiyaç duyulmayan
BroadcastReceiver
hata doğru şekilde serbest bırakıldı. - Uygulamalar zorunlu kapatıldıktan sonra yeniden başlatıldığında sağlanan yeniden planlama performansı optimize edildi.
- Belirtilen
WorkRequest
öğesinin sıraya alınmasından önce veya sonraTestScheduler.setAllConstraintsMet(UUID)
çağrılmasına izin verilir. b/111238024
Zarar Veren Değişiklikler
WorkManager.getInstance()
için ek açıklama artık@Nullable
yerine@NonNull
olarak eklendi.- Artık varsayılan değeri (dolaylı olarak
null
) almayacak şekildeData.getString()
imzası değiştirildi. - Yalnızca dahili kullanım için gereken bazı yöntemler
@hide
olarak işaretlendi.Constraints
kurucusuData.toByteArray()
veData.fromByteArray(byte[])
de buna dahildir.
Sürüm 1.0.0-alpha04
26 Haziran 2018
Hata Düzeltmeleri
PeriodicWorkRequest
işlemleri artıkAlarmManager
tabanlı uygulama kullanılırken doğru şekilde yeniden planlanıyor.- Zorunlu olarak durdurma veya yeniden başlatma sonrasında tüm çalışanların yeniden planlanmasında yaşanabilecek olası ANR düzeltildi. b/110507716
- Çeşitli WorkManager API'lerine boş değer atanabilirliği ek açıklamaları eklendi. b/110344065
- Çalışan yürütmesi sırasında oluşan yakalanmamış istisnaları günlüğe kaydedin. b/109900862
- WorkManager'ın eski bir sürümüne geri dönmeye karar vermeniz durumunda yıkıcı veritabanı taşıma işlemlerine izin verilir. b/74633270
- Yinelenen örtülü etiketler oluşturulurken yaşanan taşıma kilitlenmesi düzeltildi. Bu, yalnızca aynı örtülü etiket biçimini kendiniz kullandığınızda ortaya çıkan çok nadir görülen bir sorundur.
Sürüm 1.0.0-alpha03
19 Haziran 2018
Hata Düzeltmeleri
AlarmManager
tabanlı uygulamada bir yarış durumu düzeltildi. b/80346526.Cihaz yeniden başlatıldıktan sonra
JobScheduler
kullanılırken yinelenen işler düzeltildi.İçerik URI'si tetikleyicilerine sahip işler artık yeniden başlatmalar sırasında devam ediyor. b/80234744
Belge güncellemeleri. b/109827628, b/109758949, b/80230748
WorkRequest
yeniden sıraya alınırken yaşanan kilitlenme düzeltildi. b/109572353.work-runtime-ktx
bağımlılığı kullanılırken Kotlin derleyici uyarıları düzeltildi.WorkManager artık
Room
1.1.1-rc1
sürümünü kullanıyor.
API Değişiklikleri
WorkContinuation.getStatuses()
uygulamasının eşzamanlı sürümü olangetStatusesSync()
eklendi.Worker
, kullanıcı tarafından başlatılan iptal ile işletim sistemi tarafından istenen geçici durdurma arasında ayrım yapabilir. Herhangi bir durdurma işlemi istenirseWorker.isStopped()
,true
değerini döndürür.Worker.isCancelled()
, iş açıkça iptal edildiğindetrue
değerini döndürür. b/79632247- API 28'de JobParameters#getNetwork() için destek ekleyin. Bu bilgi,
Worker.getNetwork()
üzerinden açığa çıktı. JobScheduler
veyaAlarmManager
'ye kaç iş gönderilebileceğini zorunlu kılabilmeniz içinConfiguration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
eklendi. Bu işlem,WorkManager
uygulamasının mevcutJobScheduler
yuvalarınızın tamamını almasını engellemeye yardımcı olur.WorkManager
tarafından kullanılabilecek birJobScheduler
iş kimliği aralığını tanımlamaya yardımcı olanConfiguration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
eklendi. b/79996760Worker.getRunAttemptCount()
, belirli birWorker
için mevcut çalıştırma sayısını döndürür. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
, benzersizPeriodicWorkRequest
öğelerini sıraya almanıza olanak tanır. b/79600647WorkManager.cancelAllWork()
, tümWorker
öğelerini iptal eder.WorkManager
'a bağlı kitaplıklar, dahili durumun ek temizlenmesi içinWorkManager.getLastCancelAllTimeMillis()
kullanılarak bu yöntemin en son ne zaman çağrıldığını sorgulayabilir.- Tamamlanan işleri dahili veritabanından kaldırmak için
WorkManager.pruneWork()
eklendi. b/79950952, b/109710758
Davranış Değişiklikleri
- Tüm
WorkRequest
öğeleri için,Worker
için tam nitelikli sınıf adı olan bir örtülü etiket eklendi. Bu,tag
olmadan veyaid
kullanılamadığındaWorkRequest
öğelerinin kaldırılmasına olanak tanır. b/109572351
Zarar Veren Değişiklikler
Worker.WorkerResult
,Worker.Result
olarak yeniden adlandırıldı.Worker
açıkça iptal edildiğindeWorker.onStopped
artıktrue
olarak ayarlanan ek birisCancelled
parametresine sahip.
Sürüm 1.0.0-alpha02
24 Mayıs 2018
Hata Düzeltmeleri
State.isFinished()
işletim sistemindeNullPointerException
düzeltildi. b/79550068Worker
etkinliğinApplication.onCreate()
tarihinde yeniden planlanmasına neden olan bir sorun düzeltildi. b/79660657- İşletim sisteminin izin verdiğinden daha fazla çalışma planlamanıza neden olan bir sorun düzeltildi. b/79497378
Worker
ile ilişkili uyanık kalma kilitlerinin temizlemesi arka plan ileti dizisine taşındı.- Beklemedeki tüm işler tamamlandığında
AlarmManager
uygulaması artık düzgün şekilde temizleniyor. - İngilizce olmayan yerel ayarları etkileyen SQL sorgularının temizlenmesi düzeltildi. b/80065360
Data
grubundafloat
desteği eklendi. b/79443878Data.Builder.putAll()
artıkBuilder
öğesinin bir örneğini döndürüyor. b/79699162- Dokümanlarda daha fazla javadoc ve düzeltmeler. b/79691663
API Değişiklikleri
Worker
kullanıcıları durdurulmaya tepki verebilir.Worker.isStopped()
,Worker
durdurulup durdurulmadığını kontrol etmek için kullanılabilir.Worker.onStopped()
, basit temizleme işlemleri yapmak için kullanılabilir.Worker.getTags()
API,Worker
ile ilişkilendirilmişSet
etiket döndürür.- Süre ve
TimeUnit
içeren API'ler içinjavax.time.Duration
aşırı yüklemeleri eklendi. Bu koruma@RequiresApi(26)
tarafından yönetiliyor. WorkManager
uzantı,androidx.work.ktx
paketindenandroidx.work
paketine taşındı. Eski uzantılar kullanımdan kaldırıldı ve gelecekteki bir sürümde kaldırılacaktır.Configuration.withExecutor()
desteği sonlandırıldı. Bunun yerineConfiguration.setExecutor()
politikasını kullanın.
Sürüm 1.0.0-alpha01
8 Mayıs 2018
WorkManager, garantili, kısıtlamaya duyarlı arka plan çalışmalarının planlanmasını ve yürütülmesini kolaylaştırır. Bu ilk sürüm: 1.0.0-alpha01
.