WorkManager
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
10 सितंबर, 2025 | 2.10.4 | - | - | 2.11.0-alpha01 |
डिपेंडेंसी का एलान करना
WorkManager पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी:
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def work_version = "2.10.4" // (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.10.4" // (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 एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 2.11
वर्शन 2.11.0-alpha01
27 अगस्त, 2025
androidx.work:work-*:2.11.0-alpha01
रिलीज़ हो गया है. वर्शन 2.11.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- minSdk को एपीआई 21 से एपीआई 23 पर अपडेट कर दिया गया है (Ibdfca, b/380448311, b/435705964, b/435705223)
- WorkManager के कॉन्फ़िगरेशन बिल्डर में एपीआई
setRemoteSessionTimeoutMillis
जोड़ा गया है. इससे यह कॉन्फ़िगर किया जा सकेगा कि RemoteWorkManager सेशन, आखिरी बार इस्तेमाल किए जाने के बाद कितने समय तक चालू रहेगा. (Ib23c8) WorkRequest.Builder
में एक्सपेरिमेंटल एपीआई जोड़ें, ताकि सिस्टम की वजह से काम में रुकावट आने पर बैकऑफ़ लागू किया जा सके. (Ie2dc7, b/335513480)- कस्टम
WorkerFactory
लागू करने के लिए बनाए जा रहेTestListenableWorkerBuilder
के बजाय, किसी दूसरी वर्कर क्लास में पास करने के लिए टेस्ट एपीआई जोड़ें (If6bff, b/389154854)
गड़बड़ियां ठीक की गईं
SharedNetworkCallback
में नेटवर्क की सुविधाओं को कैश मेमोरी में सेव करें, ताकि गैर-ज़रूरी आईपीसी (Ie4027, b/427115602) को रोका जा सके- नेटवर्क की पाबंदी के आकलन से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, पहले वर्क आइटम के बाद के वर्क आइटम को नेटवर्क की मौजूदा सुविधाएं नहीं मिलती थीं. इसके बजाय, टाइम आउट होने के बाद
ConstraintsNotMet
की समस्या आती थी (Ib6a66, b/427115602)
वर्शन 2.10
वर्शन 2.10.4
10 सितंबर, 2025
androidx.work:work-*:2.10.4
रिलीज़ हो गया है. वर्शन 2.10.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
RemoteCoroutineWorker
के रिमोट सेवा को अनबाइंड न कर पाने की समस्या को ठीक किया गया (I842f2, b/247113322)
वर्शन 2.10.3
30 जुलाई, 2025
androidx.work:work-*:2.10.3
रिलीज़ हो गया है. वर्शन 2.10.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें पिछले वर्कर की तरह ही नेटवर्क की पाबंदियां वाले वर्कर, पाबंदियों के पूरा न होने की शिकायत करते थे. (b/427115602).
वर्शन 2.10.2
18 जून, 2025
androidx.work:work-*:2.10.2
रिलीज़ हो गया है. वर्शन 2.10.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेटवर्क अनुरोधों और डिफ़ॉल्ट सुविधाओं के साथ वर्कर को बनाए रखने से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, हटाई गई सुविधाओं को फिर से जोड़ा जा रहा था. इससे नेटवर्क की पाबंदियों वाले वर्कर ठीक से काम नहीं कर पा रहे थे. (b/409716532)
- उस बग को ठीक किया गया है जिसकी वजह से नेटवर्क की पाबंदियों वाले वर्कर, नेटवर्क और क्षमताएं उपलब्ध होने के बावजूद, पाबंदियां पूरी न होने की वजह से तुरंत काम नहीं कर पाते थे. (b/423403088)
वर्शन 2.10.1
23 अप्रैल, 2025
androidx.work:work-*:2.10.1
रिलीज़ हो गया है. वर्शन 2.10.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
WorkManager
के रजिस्ट्रेशन सेTooManyRequestsException
के बाहर होने की संभावना कम करें. इसके लिए, कंस्ट्रेंट ट्रैकिंग के लिए इस्तेमाल किए गएNetworkCallback
का इस्तेमाल करें. (b/231499040, b309d5).
वर्शन 2.10.0
30 अक्टूबर, 2024
androidx.work:work-*:2.10.0
रिलीज़ हो गया है. वर्शन 2.10.0 में ये बदलाव शामिल हैं.
वर्शन 2.9.1 के बाद हुए अहम बदलाव
WorkManager
से नौकरियों में ट्रेस टैग जोड़े गए हैं. इससे ‘adb shell dumpsys jobscheduler’ को समझना बहुत आसान हो जाता है, क्योंकि इसमें एक्ज़ीक्यूट किए जा रहे वर्कर का नाम शामिल होगा.WorkManager
के मुख्य हिस्सों के आस-पास ट्रेस सेक्शन भी जोड़े जाते हैं.Configuration.workerCoroutineContext
को डिस्पैचर के कंट्रोल के लिए जोड़ा गया था. यहांCoroutineWorker
को एक्ज़ीक्यूट किया जाता है.- डेवलपर,
NetworkRequest
तरीके का इस्तेमाल करके, वर्कर के लिएNetworkRequest
को एक कंस्ट्रेंट के तौर पर सेट कर सकते हैं.Constraints.setRequiredNetworkRequest
इससे यह तय किया जा सकता है कि वर्कर को किस नेटवर्क पर चलाना है. WorkManager
2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है. साथ ही, इसमें SDK 35 के साथ काम करने के लिए कई बदलाव किए गए हैं.
वर्शन 2.10.0-rc01
24 अक्टूबर, 2024
androidx.work:work-*:2.10.0-rc01
रिलीज़ हो गया है. वर्शन 2.10.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.10.0-beta01
2 अक्टूबर, 2024
androidx.work:work-*:2.10.0-beta01
रिलीज़ हो गया है. वर्शन 2.10.0-beta01 में ये बदलाव शामिल हैं.
वर्शन 2.10.0-alpha04
18 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha04
रिलीज़ हो गया है. वर्शन 2.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोरग्राउंड सेवा के टाइप के आधार पर, एक्ज़ीक्यूशन टाइम आउट की वजह से फ़ोरग्राउंड वर्कर के बंद होने पर, बंद होने की वजह
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
जोड़ें. (Ibd0af)
वर्शन 2.10.0-alpha03
4 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha03
रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkManager
से नौकरियों में ट्रेस टैग जोड़े गए हैं. इससे ‘adb shell dumpsys jobscheduler’ को समझना बहुत आसान हो जाता है, क्योंकि इसमें एक्ज़ीक्यूट किए जा रहे वर्कर का नाम शामिल होगा.WorkManager
के मुख्य हिस्सों के आस-पास ट्रेस सेक्शन भी जोड़े जाते हैं.
एपीआई में हुए बदलाव
- WorkManager 2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है.
- ‘कम समय तक चलने वाली सेवा’ और ‘डेटा सिंक’ टाइप वाले फ़ोरग्राउंड वर्कर की समयसीमा खत्म होने और
WorkManager
केstopSelf()
को कॉल न करने पर एएनआर की समस्या को ठीक किया गया. यह सुधार सिर्फ़ उन डिवाइसों पर लागू होता है जिनमें एपीआई 34 और 35 है. इन डिवाइसों में फ़ोरग्राउंड सेवा के टाइप पेश किए गए थे. (ca06b2, b/364508145) - नए
WorkerParameters
एपीआई, जिनकी मदद सेWorkerFactory
का इस्तेमाल करते समय,Worker
को बाइंड करने वाली रिमोट प्रोसेस को स्विच किया जा सकता है. (Ibdc8a, Ie8a90, I7373f)
गड़बड़ियां ठीक की गईं
WorkManager
की वजह से होने वाले क्रैश को ठीक किया गया है.ऐसा तब होता है, जब लंबे समय तक चलने वाले वर्कर (जैसे, फ़ोरग्राउंड वर्कर) को फिर से शुरू करने की कोशिश की जाती है. ऐसा तब होता है, जब काम के फ़ोरग्राउंड टाइप के लिए Android 14 की ज़रूरी अनुमतियां रद्द कर दी गई हों. (b/333957914)- नए प्लैटफ़ॉर्म एपीआई को ऐक्सेस करने के लिए, मैन्युअल तरीके से आउटलाइन बनाने की सुविधा हटा दी गई है. ऐसा इसलिए, क्योंकि AGP 7.3 या इसके बाद के वर्शन (जैसे, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग के ज़रिए यह काम अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (जैसे, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह काम अपने-आप हो जाता है. AGP का इस्तेमाल न करने वाले क्लाइंट को, D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (Ia60e0, b/345472586)
वर्शन 2.10.0-alpha02
17 अप्रैल, 2024
androidx.work:work-*:2.10.0-alpha02
रिलीज़ हो गया है. वर्शन 2.10.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
WorkManager
में कॉन्फ़िगर किए जा सकने वाले@RestrictTo
Tracer
के ज़रिए, ट्रेस स्पैन को भेजने की सुविधा जोड़ी गई. (I17d7f, b/260214125)Configuration.workerCoroutineContext
को डिस्पैचर के कंट्रोल के लिए जोड़ा गया था. यहांCoroutineWorker
को एक्ज़ीक्यूट किया जाता है. इससेWorkManager
मेंDispatchers.Default
का इस्तेमाल पूरी तरह से बंद करने में मदद मिलती है. (Icd1b7)- Workers के लिए कस्टम अपवाद हैंडलर जोड़े गए (Ib1b74, b/261190695)
- अब
OneTimeWorkRequest.Builder
औरPeriodicWorkRequest.Builder
कोClass
के बजायKClass
से बनाया जा सकता है:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6) WorkManager
क्लास को Kotlin में माइग्रेट कर दिया गया है. अबLiveData
,ListenableFuture
याFlow
दिखाने वाले तरीके, शून्य होने की स्थिति के बारे में सही जानकारी देते हैं. अगर कोड में शून्य होने की मान्यताओं के बारे में जानकारी गलत है, तो क्लाइंट के सोर्स कोड में बदलाव करने पड़ सकते हैं. (If6757)
वर्शन 2.10.0-alpha01
24 जनवरी, 2024
androidx.work:work-*:2.10.0-alpha01
रिलीज़ हो गया है. वर्शन 2.10.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- डेवलपर,
NetworkRequest
तरीके का इस्तेमाल करके, वर्कर के लिएNetworkRequest
को एक कंस्ट्रेंट के तौर पर सेट कर सकते हैं.Constraints.setRequiredNetworkRequest
इससे यह तय किया जा सकता है कि वर्कर को किस नेटवर्क पर चलाना है.
एपीआई में हुए बदलाव
NetworkRequest
को पाबंदी के तौर पर तय करने की सुविधा जोड़ी गई है. (Id98a1, b/280634452)
वर्शन 2.9
वर्शन 2.9.1
7 अगस्त, 2024
androidx.work:work-*:2.9.1
रिलीज़ हो गया है. वर्शन 2.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
WorkManager
की वजह से होने वाले क्रैश को ठीक किया गया है.ऐसा तब होता है, जब लंबे समय तक चलने वाले वर्कर (यानी कि फ़ोरग्राउंड वर्कर) को फिर से शुरू करने की कोशिश की जाती है. ऐसा तब होता है, जब काम के फ़ोरग्राउंड टाइप में Android 14 के लिए ज़रूरी अनुमतियां थीं, जिन्हें रद्द कर दिया गया था. (b/333957914)
वर्शन 2.9.0
29 नवंबर, 2023
androidx.work:work-*:2.9.0
रिलीज़ हो गया है. वर्शन 2.9.0 में ये बदलाव शामिल हैं.
2.8.0 के बाद हुए अहम बदलाव
Flow
की मदद से जांच करने की सुविधा. अबLiveData
के बजाय, वर्कर की प्रोग्रेस कोWorkManager.getWorkInfosFlow
और इसी तरह के अन्य तरीकों से देखा जा सकता है.- अब
WorkManager
से यह जानकारी मिलती है कि किसी वर्कर को पहले क्यों रोका गया था. इसे वर्कर सेgetStopReason()
तरीके से याWorkInfo
सेgetStopReason()
तरीके से क्वेरी किया जा सकता है. setNextScheduleTimeOverride
की मदद से, समय-समय पर काम करने वाले लोगों के काम का सटीक शेड्यूल बनाना. इससे, काम के अगले शेड्यूल की डाइनैमिक कैलकुलेशन की जा सकती है. इसका इस्तेमाल, अडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राय बिहेवियर या हर सुबह उपयोगकर्ता के उठने से पहले न्यूज़फ़ीड वर्कर को चलाने जैसी ऐडवांस सुविधाओं को लागू करने के लिए किया जा सकता है. इन तकनीकों के साथExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल किया जाना चाहिए, ताकि अगले वर्कर को शेड्यूल करते समय, मौजूदा वर्कर को रद्द न किया जा सके.- WorkManager की टेस्टिंग, थ्रेडिंग मैचिंग प्रोडक्शन के साथ.
ExecutorsMode.PRESERVE_EXECUTORS
का इस्तेमालinitializeTestWorkManager
में किया जा सकता है. इससेConfiguration
में सेट किए गए एक्ज़ीक्यूटर को सुरक्षित रखा जा सकता है और असली मुख्य थ्रेड का इस्तेमाल किया जा सकता है. - कोरूटीन एपीआई, जैसे कि
CoroutineWorker
को अतिरिक्त आर्टफ़ैक्ट work-runtime-ktx से मुख्य आर्टफ़ैक्ट work-runtime में ले जाया गया है. work-runtime-ktx अब खाली है.
एपीआई में हुए बदलाव
stopReason
कोWorkInfo
में जोड़ा गया. यह वर्कर के चलने के बादstopReason
को उपलब्ध कराता है. यह रिपोर्टिंगstopReason
में काम आ सकता है, क्योंकि वर्कर के बंद होने के बाद, ऐप्लिकेशन को बहुत तेज़ी से बंद किया जा सकता है. (I21386)- कॉन्फ़िगरेशन के ज़रिए
Clock
को सेट करने की अनुमति दें. साथ ही, इसका इस्तेमाल वर्कर टेस्ट के एक्ज़ीक्यूशन के क्रम को तय करने के लिए किया जा सकता है. (Ic586e) getStopReason()
मेंListenableWorker
तरीका जोड़ा गया है. इससे यह पता चलता है कि वर्कर को क्यों रोका गया था. (I07060)- लीक हुए संसाधनों के बारे में Closeguard की चेतावनी से बचने के लिए,
WorkManagerTestInitHelper#closeWorkDatabase()
जोड़ा गया. (Ia8d49) WorkInfo
का कंस्ट्रक्टर अब सार्वजनिक है. यह टेस्टिंग में काम आ सकता है. (Ia00b6, b/209145335)work-runtime-ktx
अब खाली है.CoroutineWorker
और Kotlin से जुड़ी अन्य सुविधाएं अब मुख्य work-runtime आर्टफ़ैक्ट में उपलब्ध हैं. (I71a9a)setNextScheduleTimeOverride
तरीका जोड़ा गया. इससे समय-समय पर होने वाले काम के शेड्यूल को सटीक तरीके से सेट किया जा सकता है (I3b4da)getNextScheduleTimeMillis
को जोड़ा गया है, ताकि शेड्यूल किए गए रन टाइम की जानकारीWorkInfo
में जोड़ी जा सके. (I797e4)WorkInfo
में, शुरुआती देरी और समय-समय पर होने वाली देरी की जानकारी जोड़ी जाती है. (I52f2f)getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
तरीकों से फ़्लो के ज़रिए, वर्कर को मॉनिटर करने का तरीका जोड़ा गया (If122a)Constraints
' कंस्ट्रक्टर और प्रॉपर्टी में, वे@RequiresApi(...)
एनोटेशन जोड़े गए जो पहले मौजूद नहीं थे. अब इन्हेंConstraints.Builder
में सेटर पर मौजूद उन एनोटेशन के साथ अलाइन कर दिया गया है जोWorkManager
के शुरुआती वर्शन से मौजूद थे. (I6d7d2)WorkManager
में अब कॉन्टेंट यूआरआई वर्कर के लिए अलग सीमा तय की गई है, ताकि उन्हेंJobScheduler
में गारंटीड स्लॉट मिल सकें. इससे ज़्यादा लोड होने पर भी, कॉन्टेंट अपडेट मिस नहीं होंगे. इस सीमा कोConfiguration.Builder.setContentUriTriggerWorkersLimit
के ज़रिए कॉन्फ़िगर किया जा सकता है. (Ic128f)WorkInfo
में कंस्ट्रेंट जोड़े गए हैं. (I162c0)
वर्शन 2.9.0-rc01
18 अक्टूबर, 2023
androidx.work:work-*:2.9.0-rc01
रिलीज़ हो गया है. वर्शन 2.9.0-rc01 में ये बदलाव शामिल हैं.
- बीटा वर्शन की पिछली रिलीज़ के बाद से कोई बदलाव नहीं हुआ है
वर्शन 2.9.0-beta01
6 सितंबर, 2023
androidx.work:work-*:2.9.0-beta01
रिलीज़ हो गया है. वर्शन 2.9.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
WorkInfo.stopReason
औरListenableWorker.stopReason
से मिले स्टॉप की वजहों के लिए कॉन्सटेंट जोड़े गए (I0cc00)
वर्शन 2.9.0-alpha02
26 जुलाई, 2023
androidx.work:work-*:2.9.0-alpha02
रिलीज़ हो गया है. वर्शन 2.9.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
WorkManager
से यह जानकारी मिलती है कि किसी वर्कर को पहले क्यों रोका गया था. इसे वर्कर सेgetStopReason()
तरीके से याWorkInfo
सेgetStopReason()
तरीके से क्वेरी किया जा सकता है.
एपीआई में हुए बदलाव
stopReason
कोWorkInfo
में जोड़ा गया. यह वर्कर के चलने के बाद,stopReason
को उपलब्ध कराता है. इससे रिपोर्टिंगstopReason
को इस्तेमाल करने में आसानी हो सकती है. ऐसा इसलिए, क्योंकि वर्कर को बंद करने के बाद, ऐप्लिकेशन को बहुत तेज़ी से बंद किया जा सकता है. (I21386)- कॉन्फ़िगरेशन के ज़रिए Clock को सेट करने की अनुमति दें. साथ ही, इसका इस्तेमाल Worker टेस्ट के एक्ज़ीक्यूशन सीक्वेंस को चलाने के लिए करें. (Ic586e)
getStopReason()
मेंListenableWorker
तरीका जोड़ा गया है. इससे यह पता चलता है कि वर्कर को क्यों रोका गया था. (I07060)- लीक हुए संसाधनों के बारे में Closeguard की चेतावनी से बचने के लिए,
WorkManagerTestInitHelper#closeWorkDatabase()
जोड़ा गया. (Ia8d49)
गड़बड़ियां ठीक की गईं
overrideNextScheduleTime
का इस्तेमाल करकेoverrideNextScheduleTime
को बायपास करने की सुविधा जोड़ी गई है. साथ ही, जांच से जुड़ी समस्याओं को ठीक किया गया है.TestDriver
(Ic2905)
वर्शन 2.9.0-alpha01
7 जून, 2023
androidx.work:work-*:2.9.0-alpha01
रिलीज़ हो गया है. वर्शन 2.9.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
Flow
की मदद से जांच करने की सुविधा. अबLiveData
के बजाय, वर्कर की प्रोग्रेस कोWorkManager.getWorkInfosFlow
और इसी तरह के अन्य तरीकों से देखा जा सकता है.setNextScheduleTimeOverride
की मदद से, समय-समय पर काम करने वाले लोगों के काम का सटीक शेड्यूल बनाना. इससे, काम के अगले शेड्यूल की डाइनैमिक कैलकुलेशन की जा सकती है. इसका इस्तेमाल, अडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राय बिहेवियर या हर सुबह उपयोगकर्ता के उठने से पहले न्यूज़फ़ीड वर्कर को चलाने जैसी ऐडवांस सुविधाओं को लागू करने के लिए किया जा सकता है. इन तकनीकों के साथExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल किया जाना चाहिए, ताकि अगले वर्कर को शेड्यूल करते समय, मौजूदा वर्कर को रद्द न किया जा सके.WorkManager
की टेस्टिंग, थ्रेडिंग मैचिंग प्रोडक्शन के साथ की जा रही है.ExecutorsMode.PRESERVE_EXECUTORS
का इस्तेमाल,Configuration
में सेट किए गए एक्ज़ीक्यूटर को बनाए रखने और असली मुख्य थ्रेड का इस्तेमाल करने के लिए किया जा सकता है.- कोरूटीन एपीआई, जैसे कि
CoroutineWorker
को अतिरिक्त आर्टफ़ैक्टwork-runtime-ktx
से मुख्य आर्टफ़ैक्टwork-runtime
में ले जाया गया है.work-runtime-ktx
अब खाली है.
एपीआई में हुए बदलाव
WorkInfo
का कंस्ट्रक्टर अब सार्वजनिक है. यह टेस्टिंग में काम आ सकता है. (Ia00b6, b/209145335)work-runtime-ktx
अब खाली है.CoroutineWorker
और Kotlin से जुड़ी अन्य सुविधाएं अब मुख्यwork-runtime
आर्टफ़ैक्ट में उपलब्ध हैं. (I71a9a)setNextScheduleTimeOverride
तरीका जोड़ा गया. इससे समय-समय पर होने वाले काम के शेड्यूल को सटीक तरीके से सेट किया जा सकता है (I3b4da)getEarliestRunTimeMillis
का नाम बदलकरgetNextScheduleTimeMillis
कर दिया गया. (I2bd7a)WorkInfo
में, अगली बार चलाने के शेड्यूल की जानकारी जोड़ी गई है. (I797e4)WorkInfo
में, शुरुआती देरी और समय-समय पर होने वाली देरी की जानकारी जोड़ी जाती है. (I52f2f)getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
तरीकों से फ़्लो के ज़रिए, वर्कर को मॉनिटर करने का तरीका जोड़ा गया (If122a)- Constraints के कंस्ट्रक्टर और प्रॉपर्टी में, छूटे हुए
@RequiresApi(...)
एनोटेशन जोड़े गए. अब इन्हेंConstraints.Builder
में सेटर पर मौजूद उन एनोटेशन के साथ अलाइन कर दिया गया है जोWorkManager
के शुरुआती वर्शन से मौजूद थे. (I6d7d2) WorkManager
में अब कॉन्टेंट यूआरआई वर्कर के लिए अलग सीमा तय की गई है, ताकि उन्हेंJobScheduler
में गारंटीड स्लॉट मिल सकें. इससे ज़्यादा लोड होने पर भी, कॉन्टेंट अपडेट मिस नहीं होंगे.Configuration.Builder.setContentUriTriggerWorkersLimit
के ज़रिए सीमा को कॉन्फ़िगर किया जा सकता है. (Ic128f)WorkInfo
में कंस्ट्रेंट जोड़े गए हैं. (I162c0)
वर्शन 2.8
वर्शन 2.8.1
22 मार्च, 2023
androidx.work:work-*:2.8.1
रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
RescheduleReceiver
में एएनआर की समस्या को ठीक किया गया है. पहले, यह एक साथ दो ब्रॉडकास्ट को सही तरीके से हैंडल नहीं करता था. (b/236906724)
वर्शन 2.8.0
8 फ़रवरी, 2023
androidx.work:work-*:2.8.0
रिलीज़ हो गया है. वर्शन 2.8.0 में ये बदलाव शामिल हैं.
2.7.0 के बाद हुए ज़रूरी बदलाव
नई सुविधाएं
WorkRequests
को अपडेट करने की सुविधा जोड़ी गई है. इससे, ओरिजनल एनक्यू टाइम, चेनिंग वगैरह को बनाए रखा जा सकता है. इस सुविधा के बारे में ज़्यादा जानने के लिए, ज़्यादा जानकारी वाली ब्लॉग पोस्ट पढ़ें. साथ ही, ज़्यादा जानकारी के लिएWorkManager.updateWork
औरExistingPeriodicWorkPolicy.UPDATE
के लिए JavaDoc देखें.
एपीआई में हुए बदलाव
WorkManager.updateWork
को जोड़ा गया था, ताकि काम को अपडेट किया जा सके. इससे, काम को मूल रूप से कतार में लगाने का समय और उसे एक साथ कई कामों से जोड़ने की सुविधा बनी रहती है.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
को जोड़ा गया. इस नीति की मदद से, समय-समय पर किए जाने वाले काम को नाम के हिसाब से अपडेट किया जा सकता है. यह मौजूदाREPLACE
के जैसा ही है, लेकिन यह कम दखल देने वाला है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता है. साथ ही, यह एनक्यू करने के समय को बनाए रखता है. शुरुआती देरी और अवधि की गणना, अपडेट करने के समय के बजाय एनक्यू करने के मूल समय से की जाती है.REPLACE
को इसलिए बंद कर दिया गया, ताकिREPLACE
औरUPDATE
के बीच अंतर करने में लोगों को परेशानी न हो. अगर आपको अब भीREPLACE
के पिछले सिमैंटिक का इस्तेमाल करना है, तोCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. यहREPLACE
के जैसा ही है. (I985ed, b/219446409)- शेड्यूलिंग से जुड़ी गड़बड़ियों को रोकने की सुविधा जोड़ी गई है. इसके लिए,
Consumer<Throwable>
को setSchedulingExceptionHandler के ज़रिए उपलब्ध कराया गया है) - WorkManager को शुरू करते समय कोई समस्या हुई है या नहीं, यह पता लगाने के लिए setInitializationExceptionHandler के ज़रिए
Consumer<Throwable>
देने की सुविधा जोड़ी गई. OneTimeWorkRequest
औरPeriodicWorkRequest
के लिए इनलाइन हेल्पर कोandroidx.work:work-runtime-ktx
सेandroidx.work:work-runtime
पर ले जाया गया (I0010f, b/209145335)WorkQuery
को सीधे तौर पर बनाने के लिए, हेल्पर तरीकेWorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
जोड़े गए. (b/199919736) (If48f2, b/199919736)getForegroundInfo
कोWorker
में जोड़ा गया. (Ic1ead)RxWorker
में अब RxJava 2 और RxJava 3, दोनों के लिएsetForeground
उपलब्ध है. यहCompletable
दिखाता है. इसका इस्तेमालsetForegroundInfoAsync
के बजाय किया जा सकता है.setForegroundInfoAsync
,ListenableFuture
दिखाता है- RxJava 2 और RxJava 3, दोनों के लिए
RxWorker
मेंgetForegroundInfo
,Single
दिखाता है. इसका इस्तेमालgetForegroundInfoAsync
के बजाय किया जा सकता है, जोListenableFuture
दिखाता है. (b/203851459) - अब
Constraints.Builder
का इस्तेमाल करने के बजाय, सीधे तौर पर कंस्ट्रेंट बनाए जा सकते हैं. इससे Kotlin का इस्तेमाल करने वाले लोगों को आसानी होगी. (Idc390, b/137568653) - यह जांच करने की सुविधा जोड़ी गई है कि
WorkManager
शुरू किया गया है या नहीं. इसके अलावा, लाइब्रेरी डेवलपर के लिए एक नयाgetConfiguration()
एपीआई जोड़ा गया है. इससे डेवलपर को वह कॉन्फ़िगरेशन मिल पाएगा जिससेWorkManager
को शुरू किया गया था. (I6eff3, b/212300336)
गड़बड़ियां ठीक की गईं
- ग्रीडी शेड्यूलर से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, लोड होने पर वर्कर तुरंत काम नहीं कर पाते थे. (I9686b, b/248111307)
- उन एपीआई में
@RequiresPermission
जोड़ा गया है जिनके लिए, SDK 33 और उसके बाद के वर्शन परPOST_NOTIFICATIONS
अनुमति देना ज़रूरी है. (Ie542e, b/238790278) suspendCancellableCoroutine
का इस्तेमाल करते समय,CoroutineScope
में रद्द किए गए टिकटों की जानकारीListenableFuture
को भेजें.
वर्शन 2.8.0-rc01
7 दिसंबर, 2022
androidx.work:work-*:2.8.0-rc01
रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- इस रिलीज़ में कोई नई सुविधा नहीं है. यह मुख्य रूप से वर्शन में बदलाव है
वर्शन 2.8.0-beta02
9 नवंबर, 2022
androidx.work:work-*:2.8.0-beta02
रिलीज़ हो गया है. वर्शन 2.8.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
equals
मेंequals
तरीके को ठीक किया गया है. पहले, इसमें नई जनरेशन की जानकारी को ध्यान में नहीं रखा जाता था.WorkInfo
(4977cc)
वर्शन 2.8.0-beta01
5 अक्टूबर, 2022
androidx.work:work-*:2.8.0-beta01
रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- ग्रीडी शेड्यूलर से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, लोड होने पर वर्कर तुरंत काम नहीं कर पाते थे. (I9686b, b/248111307)
वर्शन 2.8.0-alpha04
7 सितंबर, 2022
androidx.work:work-*:2.8.0-alpha04
रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
WorkerInfo.getGeneration()
औरWorkerParameters.getGeneration()
को जोड़ा गया है, जो किसी वर्कर के जनरेशन की जानकारी देते हैं. अगर किसी वर्कर कोExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल करकेWorkManager.updateWork
याWorkManager.enqueueUniquePeriodicWork
के ज़रिए अपडेट किया गया है, तो उसके कई जनरेशन होते हैं. ध्यान दें कि अगर वर्कर फ़िलहाल चल रहा है, तो ऐसा हो सकता है कि यह तरीका, फ़िलहाल चल रहे वर्कर से नई जनरेशन को वापस लाए. ऐसा तब होता है, जब वर्कर के चलने के दौरान कोई अपडेट हुआ हो. (I665c5, b/219446409) (I128a9, b/219446409)InitializationExceptionHandler
जोड़ा गया है. यह एक अपवाद हैंडलर है. इसका इस्तेमाल यह पता लगाने के लिए किया जा सकता है किWorkManager
को शुरू करते समय कोई समस्या हुई थी या नहीं. (I061de)
वर्शन 2.8.0-alpha03
10 अगस्त, 2022
androidx.work:work-*:2.8.0-alpha03
रिलीज़ हो गया है. वर्शन 2.8.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkRequests
को बिना किसी रुकावट के अपडेट करने की सुविधा जोड़ी गई है. इससे, ओरिजनल एनक्यू टाइम, चेनिंग वगैरह को सुरक्षित रखा जा सकेगा. ज़्यादा जानकारी के लिए,WorkManager.updateWork
औरExistingPeriodicWorkPolicy.UPDATE
देखें.
एपीआई में हुए बदलाव
WorkManager.updateWork
को जोड़ा गया था, ताकि काम को अपडेट किया जा सके. इससे, काम को मूल रूप से कतार में लगाने का समय और उसे एक साथ कई कामों से जोड़ने की सुविधा बनी रहती है.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
को जोड़ा गया. इस नीति की मदद से, समय-समय पर किए जाने वाले काम को नाम के हिसाब से अपडेट किया जा सकता है. यह मौजूदाREPLACE
के जैसा ही है, लेकिन यह कम रुकावट डालने वाला है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता है. साथ ही, यह enqueue समय को बनाए रखता है. शुरुआती देरी और अवधि की गणना, अपडेट के समय के बजाय, enqueue के मूल समय से की जाती है.REPLACE
को इसलिए बंद कर दिया गया, ताकिREPLACE
औरUPDATE
के बीच अंतर करने में आसानी हो. अगर आपको अब भीREPLACE
के पिछले सिमैंटिक का इस्तेमाल करना है, तोCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. यहREPLACE
के जैसा ही है. (I985ed, b/219446409)SchedulingExceptionHandler
तय करके, शेड्यूल करने से जुड़े अपवादों को रोकने की सुविधा जोड़ें. (I033eb)OneTimeWorkRequest
औरPeriodicWorkRequest
के लिए इनलाइन हेल्पर कोandroidx.work:work-runtime-ktx
सेandroidx.work:work-runtime
पर ले जाया गया (I0010f, b/209145335)
गड़बड़ियां ठीक की गईं
- उन एपीआई में
@RequiresPermission
जोड़ा गया है जिनके लिए, SDK 33 और उसके बाद के वर्शन पर POST_NOTIFICATIONS की अनुमति देना ज़रूरी है. (Ie542e, b/238790278)
वर्शन 2.8.0-alpha02
6 अप्रैल, 2022
androidx.work:work-*:2.8.0-alpha02
रिलीज़ हो गया है. वर्शन 2.8.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब सीधे तौर पर कंस्ट्रेंट बनाए जा सकते हैं. इसके लिए, बिल्डर का इस्तेमाल करने की ज़रूरत नहीं है. यह Kotlin उपयोगकर्ताओं के लिए आसान है. (Idc390, b/137568653)
- यह जांच करने की सुविधा जोड़ी गई है कि
WorkManager
शुरू किया गया है या नहीं. इसके अलावा, लाइब्रेरी डेवलपर के लिए एक नयाgetConfiguration()
एपीआई जोड़ा गया है. इससे डेवलपर को वह कॉन्फ़िगरेशन मिल पाएगा जिससेWorkManager
को शुरू किया गया था. (I6eff3, b/212300336)
वर्शन 2.8.0-alpha01
12 जनवरी, 2022
androidx.work:work-*:2.8.0-alpha01
रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- WorkQuery को सीधे तौर पर बनाने के लिए, हेल्पर मेथड
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
जोड़े गए. (If48f2, b/199919736) - आने वाले समय में इस्तेमाल किए जाने वाले एसडीके के लिए, BuildCompat के एक्सपेरिमेंटल तरीके जोड़े गए (Iafd82, b/207528937)
Worker
मेंgetForegroundInfo
जोड़ें. (Ic1ead)- आईडी से सीधे WorkQuery बनाने के लिए, हेल्पर तरीके
WorkQuery.fromIds
जोड़े गए. (Ie5bdf, b/199919736) - RxWorker में अब
setForeground
वापस लाने वालाCompletable
है, जिसका इस्तेमालsetForegroundInfoAsync
की जगह किया जा सकता है.setForegroundInfoAsync
,ListenableFuture
को वापस लाता है. (I85156) - RxJava 2 के लिए RxWorker में अब
getForegroundInfo
वापस लाने वालाSingle
है. इसका इस्तेमालgetForegroundInfoAsync
के बजाय किया जा सकता है, जोListenableFuture
दिखाता है. (I21c91, b/203851459) - RxJava 3 के लिए RxWorker में अब
getForegroundInfo
वापस लाने वालाSingle
है. इसका इस्तेमालgetForegroundInfoAsync
के बजाय किया जा सकता है, जोListenableFuture
दिखाता है. (I1ca8a) - RxWorker में अब
setForeground
वापस लाने वालाCompletable
है, जिसका इस्तेमालsetForegroundInfoAsync
की जगह किया जा सकता है.setForegroundInfoAsync
,ListenableFuture
को वापस लाता है. (I992a3, b/203851459)
गड़बड़ियां ठीक की गईं
suspendCancellableCoroutine
का इस्तेमाल करते समय,CoroutineScope
में रद्द किए गए टिकटों की जानकारीListenableFuture
को भेजें. (I77e63)
वर्शन 2.7
वर्शन 2.7.1
17 नवंबर, 2021
androidx.work:work-*:2.7.1
रिलीज़ हो गया है. वर्शन 2.7.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
suspendCancellableCoroutine
का इस्तेमाल करने पर,CoroutineScope
में किए गए रद्द करने के अनुरोधों कोListenableFuture
में भी लागू किया जाता है. (I77e63)- जब काम से जुड़े ऐसे अनुरोधों को तेज़ी से पूरा करने के तौर पर मार्क किया जाता है जिन्हें पूरा होने में समय लगता है, तो तुरंत एक अपवाद थ्रो किया जाता है. bef1762
वर्शन 2.7.0
13 अक्टूबर, 2021
androidx.work:work-*:2.7.0
रिलीज़ हो गया है. वर्शन 2.7.0 में ये बदलाव शामिल हैं.
2.6.0 के बाद हुए ज़रूरी बदलाव
WorkManager ने एक नया
WorkRequest.Builder.setExpedited(...)
एपीआई लॉन्च किया है. इससे Android 12 में फ़ोरग्राउंड सर्विस से जुड़ी पाबंदियों को लागू करने में मदद मिलती है.setExpedited(...)
का इस्तेमाल करने पर, WorkManager, Android 12 और इसके बाद के वर्शन वाले डिवाइसों पर JobScheduler में मौजूद expedited jobs को काम सौंपता है. साथ ही, Android के पिछले वर्शन पर फ़ॉरग्राउंड सेवा को काम सौंपकर, यह सुविधा को पहले के वर्शन के साथ काम करने की अनुमति देता है.
वर्शन 2.7.0-rc01
29 सितंबर, 2021
androidx.work:work-*:2.7.0-rc01
रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.
यह वर्शन, androidx.work:work-*:2.7.0-beta01
के जैसा ही है.
वर्शन 2.7.0-beta01
1 सितंबर, 2021
androidx.work:work-*:2.7.0-beta01
रिलीज़ हो गया है. वर्शन 2.7.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- WorkManager को शुरू करते समय, एक से ज़्यादा प्रोसेस में SQLite के इस्तेमाल से जुड़ी समस्या को कम किया गया है.
एपीआई में हुए बदलाव
- Android 12 (S) के लिए, प्लैटफ़ॉर्म के एपीआई स्थिर हैं. इसलिए,
@ExperimentalExpeditedWork
एपीआई हटा दिए गए हैं. (aosp/1792806)
गड़बड़ियां ठीक की गईं
- तेज़ी से काम करने वाले उन वर्कर के लिए बेहतर गड़बड़ी का मैसेज उपलब्ध कराएं जिन्होंने
getForegroundInfoAsync()
लागू नहीं किया है. (aosp/1809376)
वर्शन 2.7.0-alpha05
21 जुलाई, 2021
androidx.work:work-*:2.7.0-alpha05
रिलीज़ हो गया है. वर्शन 2.7.0-alpha05 में ये बदलाव शामिल हैं.
इस रिलीज़ में, WorkManager 2.6.0-beta02
रिलीज़ की गड़बड़ियां भी ठीक की गई हैं.
वर्शन 2.7.0-alpha04
2 जून, 2021
androidx.work:work-*:2.7.0-alpha04
रिलीज़ हो गया है.
इस रिलीज़ में, 2.6.0-beta01 रिलीज़ में किए गए बदलाव भी शामिल हैं.
एपीआई में हुए बदलाव
ListenableWorker.setForegroundAsync()
का अब इस्तेमाल किया जा सकता है.- हमारा सुझाव है कि जब भी हो सके,
WorkRequest.Builder.setExpedited(...)
एपीआई का इस्तेमाल करें. जब ऐप्लिकेशन पर फ़ोरग्राउंड सेवा से जुड़ी पाबंदियां लागू नहीं होती हैं, तब डेवलपर बेहतर तरीके से सहायता पाने के लिएListenableWorker.setForegroundAsync()
एपीआई का इस्तेमाल कर सकते हैं. - अगर ऐप्लिकेशन पर फ़ोरग्राउंड सेवा से जुड़ी पाबंदियां लागू होने पर
ListenableWorker.setForegroundAsync()
को कॉल किया जाता है, तो इससे ForegroundServiceStartNotAllowedException जनरेट होगा.
गड़बड़ियां ठीक की गईं
- जल्द से जल्द पूरे किए जाने वाले कामों को फिर से शेड्यूल करने पर, उन्हें जल्द से जल्द पूरा नहीं किया जाता. ये नियमित जॉब बन जाती हैं.
वर्शन 2.7.0-alpha03
21 अप्रैल, 2021
androidx.work:work-*:2.7.0-alpha03
रिलीज़ हो गया है. वर्शन 2.7.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkManager
2.6.0-alpha02
से: इससे ऐसे वर्कर के लिए सहायता मिलती है जो किसी भी प्रोसेस में चल सकते हैं. (Iaf200)WorkManager
2.6.0-alpha02
:RemoteCoroutineWorker
जोड़ा गया है. यहRemoteListenableWorker
का एक ऐसा वर्शन है जो रिमोट प्रोसेस से बाइंड हो सकता है. (I30578)
एपीआई में हुए बदलाव
- WorkManager
2.6.0-alpha02
:TEMPORARILY_UNMETERED
नेटवर्क की पाबंदी के लिए सहायता जोड़ी गई. (I08d5e) - WorkManager
2.6.0-alpha02
:setProgressAsync()
के लिए, मल्टी-प्रोसेस वर्कर की सुविधा उपलब्ध है. (Ib6d08) - WorkManager
2.6.0-alpha02
से:WorkManagerInitializer
को सार्वजनिक करें, ताकि अन्यandroidx.startup.Initializer
इन्हें डिपेंडेंसी के तौर पर इस्तेमाल कर सकें. (I5ab11)
वर्शन 2.7.0-alpha02
10 मार्च, 2021
androidx.work:work-*:2.7.0-alpha02
रिलीज़ हो गया है. वर्शन 2.7.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android 12 को टारगेट करते समय क्रैश की समस्या को ठीक करने के लिए,
PendingIntent
की म्यूटेबिलिटी के बारे में साफ़ तौर पर बताएं. (b/180884673)
वर्शन 2.7.0-alpha01
18 फ़रवरी, 2021
androidx.work:work-*:2.7.0-alpha01
रिलीज़ हो गया है. वर्शन 2.7.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkManager, Android 12 में फ़ोरग्राउंड सेवा से जुड़ी पाबंदियों को ध्यान में रखने के लिए, एक नया
WorkRequest.Builder.setExpedited(...)
एपीआई पेश करता है.ऐप्लिकेशन अब बैकग्राउंड में होने पर, फ़ोरग्राउंड सेवा लॉन्च नहीं कर सकते. इसलिए, लंबे समय तक चलने वाले ऐसे काम को बेहतर तरीके से सपोर्ट करने के लिए ऐप्लिकेशन,
WorkRequest
को तेज़ी से पूरा होने वाला काम के तौर पर मार्क कर सकते हैं. पहले, यह काम फ़ोरग्राउंड सेवा के लाइफ़साइकल से जुड़ा होता था.यह एपीआई,
setForegroundAsync(...)
/setForeground(...)
एपीआई की जगह लेगा. इन एपीआई का इस्तेमाल अब बंद कर दिया गया है.setExpedited(...)
का इस्तेमाल करने पर, WorkManager, Android 12 और इसके बाद के वर्शन मेंJobScheduler
को तेज़ी से पूरा होने वाले कामों को सौंपता है. वहीं, Android के पिछले वर्शन पर, फ़ोरग्राउंड सेवाओं को सौंपकर, यह सुविधा उपलब्ध कराता है,
एपीआई में हुए बदलाव
- तेज़
WorkRequest
की सुविधा जोड़ी गई.
वर्शन 2.6.0
वर्शन 2.6.0
1 सितंबर, 2021
androidx.work:work-*:2.6.0
रिलीज़ हो गया है. वर्शन 2.6.0 में ये बदलाव शामिल हैं.
2.5.0 के बाद हुए ज़रूरी बदलाव
WorkManager को शुरू करने के लिए, अब
androidx.startup
का इस्तेमाल किया जाता है. अगर आपने पहलेtools:node="remove"
का इस्तेमाल किया था, तो आपको नीचे दिए गए तरीके का इस्तेमाल करना होगा.tools:node="remove"
का इस्तेमाल, WorkManager को शुरू करने के लिए किया जाता है.ContentProvider
<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" />
ऐसे वर्कर के लिए सहायता जोड़ी गई है जो किसी भी प्रोसेस में चल सकते हैं. (Iaf200)
RemoteCoroutineWorker
जोड़ा गया है. यह RemoteListenableWorker को लागू करने का तरीका है. इसे रिमोट प्रोसेस से बाइंड किया जा सकता है. (I30578)
वर्शन 2.6.0-rc01
4 अगस्त, 2021
androidx.work:work-*:2.6.0-rc01
रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये बदलाव शामिल हैं.
यह वर्शन, androidx.work:work-*:2.6.0-beta02
के जैसा ही है.
वर्शन 2.6.0-beta02
21 जुलाई, 2021
androidx.work:work-*:2.6.0-beta02
रिलीज़ हो गया है. वर्शन 2.6.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
RemoteWorkManager
अबRemoteWorkManagerService
से सही तरीके से अनबाइंड हो जाता है. इससेRemoteWorkManagerService
को सही तरीके से क्लीन अप करने में मदद मिलती है. aosp/1730694RemoteListenableWorker
अबRemoteWorkerService
से सही तरीके से अनबाइंड हो जाता है. इससेRemoteWorkerService
को सही तरीके से साफ़ करने की अनुमति मिलती है. aosp/1743817ForceStopRunnable
अब सिर्फ़ मुख्य ऐप्लिकेशन प्रोसेस में चलता है. यह एक ऑप्टिमाइज़ेशन है. इससे, एक से ज़्यादा प्रोसेस का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, संसाधन से जुड़ी समस्या नहीं होती. aosp/1749180, aosp/1761729
वर्शन 2.6.0-beta01
2 जून, 2021
androidx.work:work-*:2.6.0-beta01
रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये बदलाव शामिल हैं.
इस रिलीज़ में, दस्तावेज़ से जुड़े कुछ मामूली सुधार किए गए हैं. यह रिलीज़, 2.6.0-alpha02 से काफ़ी मिलती-जुलती है.
वर्शन 2.6.0-alpha02
21 अप्रैल, 2021
androidx.work:work-*:2.6.0-alpha02
रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
इस वर्शन में, ऐसे वर्कर के लिए सहायता जोड़ी गई है जो किसी भी प्रोसेस में चल सकते हैं. (Iaf200)
RemoteCoroutineWorker
जोड़ा गया है. यहRemoteListenableWorker
को लागू करने का तरीका है. इसे रिमोट प्रोसेस से बाइंड किया जा सकता है. (I30578)
एपीआई में हुए बदलाव
TEMPORARILY_UNMETERED
नेटवर्क की पाबंदी के लिए सहायता जोड़ी गई. (I08d5e)setProgressAsync()
के लिए, मल्टी-प्रोसेस वर्कर की सुविधा उपलब्ध है. (Ib6d08)WorkManagerInitializer
को सार्वजनिक बनाएं, ताकि अन्यandroidx.startup.Initializer
इन्हें डिपेंडेंसी के तौर पर इस्तेमाल कर सकें. (I5ab11)
वर्शन 2.6.0-alpha01
24 मार्च, 2021
androidx.work:work-*:2.6.0-alpha01
रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkManager
अब WorkManager को शुरू करने के लिए,androidx.startup
का इस्तेमाल करता है. पहले, यह कामandroidx.work.impl.WorkManagerInitializer
करता था. (aosp/1608813)अगर आपने
tools:node="remove"
का इस्तेमाल किया है, तो प्रोसेस लाइफ़साइकल को शुरू करने के लिएContentProvider
का इस्तेमाल किया जा रहा है. ऐसे में, आपको यह तरीका अपनाना होगा.<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>
(या)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
एपीआई में हुए बदलाव
- एक
Result.getOutputData()
एपीआई जोड़ें, जो ListenableWorker काoutputData
दिखाता है. (Ie51e3)
गड़बड़ियां ठीक की गईं
- ओईएम की गड़बड़ी को ठीक करने का तरीका जोड़ा गया है. इस गड़बड़ी की वजह से,
AlarmManager
एपीआई का इस्तेमाल करते समयSecurityException
दिखता है. (aosp/1587518)
वर्शन 2.5.0
वर्शन 2.5.0
27 जनवरी, 2021
androidx.work:work-*:2.5.0
रिलीज़ हो गया है. वर्शन 2.5.0 में ये बदलाव शामिल हैं.
2.4.0 के बाद के मुख्य बदलाव
- एक नया
:work:work-multiprocess
आर्टफ़ैक्ट, उन ऐप्लिकेशन के लिए जो कई प्रोसेस का इस्तेमाल करते हैं. इससे परफ़ॉर्मेंस बेहतर होती है, क्योंकि काम के अनुरोधों को शेड्यूल करने की प्रोसेस को एक ही प्रोसेस में शामिल कर दिया जाता है.work-multiprocess
का इस्तेमाल करने के लिए, इस पर निर्भरता तय करें:implementation "androidx.work:work-multiprocess:2.5.0"
- Configuration.Builder.setDefaultProcessName(String) का इस्तेमाल करके, मुख्य प्रोसेस तय करें.
work-multiprocess
का इस्तेमाल करते समय, आपकोWorkRequest
को मैनेज करने के लिए RemoteWorkManager का भी इस्तेमाल करना होगा. RemoteWorkManager हमेशा तय की गई प्रोसेस तक पहुंचता है. प्रोसेस में शामिल शेड्यूलर भी तय की गई प्रोसेस में चलता है.
- कभी-कभी,
ActivityManager
किसी जॉब को शुरू करने के लिए,JobService
इंस्टेंस को इंस्टैंशिएट नहीं कर पाता. इस वजह से, प्लैटफ़ॉर्म में मौजूद गड़बड़ी की वजह से, बैकग्राउंड में चल रहा टास्क बंद हो जाता है.WorkManager
अब यह पक्का करता है कि जब रीकॉन्साइलिंग जॉब की मदद सेApplication
को शुरू किया जा रहा हो, तब हरWorkRequest
के लिए बैकिंग जॉब मौजूद हों. इससे, नौकरी के भरोसेमंद तरीके से पूरा होने की संभावना बढ़ जाती है. (b/172475041, aosp/1489577) WorkManager
, डेटाबेस के साइज़ को बढ़ने से रोकता है. इसके लिए, यह उस बफ़र अवधि को कम करता है जिसके दौरानWorkRequest
पूरे होने के बादWorkRequest
को ट्रैक किया जाता है. पहले इसकी अवधि7
दिन थी. इसे घटाकर1
दिन + keepResultsForAtLeast की अवधि कर दिया गया है. (aosp/1419708)- जांच को आसान बनाने के लिए,
TestListenableWorkerBuilder
अबListenableWorker
को बढ़ाने वाली रीफ़ाइड क्लास के साथ काम करता है. (aosp/1443299, b/169787349) - Android Studio Arctic Fox का इस्तेमाल करते समय, अब WorkManager इंस्पेक्टर उपलब्ध है.
वर्शन 2.5.0-rc01
13 जनवरी, 2021
androidx.work:work-*:2.5.0-rc01
रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें
getWorkInfosLiveData
पर आधारित एपीआई का इस्तेमाल करते समय, इकाइयों के अपडेट होने के बादgetWorkInfosLiveData
को सही तरीके से अमान्य नहीं किया जा रहा था.WorkQuery
(aosp/1540566, b/173769028) - एक गड़बड़ी को ठीक किया गया है. इसमें कुछ मामलों में, डेटाबेस के लेन-देन को 'सफल' के तौर पर मार्क नहीं किया जा रहा था. इससे कुछ Motorola डिवाइसों पर समस्याएं आती हैं. (aosp/1535368, b/175944460)
- किसी बंद हो चुकी प्रोसेस से अनबाइंड करने की कोशिश करते समय,
NoSuchElementException
s को अनदेखा करने से जुड़ी गड़बड़ी को ठीक किया गया है. (aosp/1530589) ConstraintTrackingWorker
को बेहतर बनाएं, ताकि सिर्फ़ उसListenableWorker
को रोका जा सके जिसे पहले से नहीं रोका गया है. (aosp/1496844, b/172946965)- androidx.work लाइब्रेरी को Java 8 को टारगेट करने के लिए अपडेट करें (Ibd2f2)
वर्शन 2.5.0-beta02
2 दिसंबर, 2020
androidx.work:work-*:2.5.0-beta02
रिलीज़ हो गया है. वर्शन 2.5.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.work:work-multiprocess
में मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें, WorkManager किसी प्रोसेस से बाइंड करने की कोशिश करते समय, कॉलिंग थ्रेड को अनजाने में ब्लॉक कर देता था. (aosp/1475538)PeriodicWorkRequest
के सही तरीके से मिलान न होने की गड़बड़ी को ठीक किया गया है. (b/172475041, aosp/1489577)setForeground*
एपीआई का इस्तेमाल करते समय, फ़ोरग्राउंड सेवा को बंद करने पर प्लैटफ़ॉर्म में आने वाली गड़बड़ी को ठीक करने का तरीका जोड़ा गया. (b/170924044, aosp/1489901)
वर्शन 2.5.0-beta01
28 अक्टूबर, 2020
androidx.work:work-*:2.5.0-beta01
रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkManager
, प्रोसेस में मौजूद शेड्यूलर से पिक अप किए जा सकने वालेWorkRequest
की संख्या को अपने-आप कम कर देता है. अनुरोधों को अब भी फ़र्स्ट इन फ़र्स्ट आउट (पहले आओ, पहले पाओ) के क्रम में पूरा किया जाता है. (aosp/1455228)WorkManager
, ऐप्लिकेशन के डेटास्टोर की स्थिति खराब होने पर उसे ठीक करने की कोशिश करता है. (aosp/1463103)
गड़बड़ियां ठीक की गईं
- अगर
ListenableWorker
में रुकावट आती है, तो उन्हें तुरंतENQUEUED
के तौर पर मार्क करें, ताकि उन्हें बाद में फिर से शेड्यूल किया जा सके. (aosp/1455618, b/170273988)
वर्शन 2.5.0-alpha03
14 अक्टूबर, 2020
androidx.work:work-*:2.5.0-alpha03
रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
TestListenableWorkerBuilder
औरTestWorkerBuilder
, रॉ टाइप का इस्तेमाल नहीं करते हैं. (I883ad, b/169787349)
गड़बड़ियां ठीक की गईं
- डिफ़ॉल्ट ऐप्लिकेशन प्रोसेस का नाम तय करने के लिए,
ApplicationInfo
का इस्तेमाल करें. (b/168716641, aosp/1429950) RemoteWorkManager
औरRemoteWorkContinuation
के लिए, दिखने से जुड़े नियमों को ठीक करें. इन एपीआई को अब@Restricted
के तौर पर मार्क नहीं किया गया है. (aosp/1432091):work:work-multiprocess
के लिए ProGuard के नियमों से जुड़ी समस्याएं ठीक करें. (aosp/1432091)- फ़ोरग्राउंड सेवा से जुड़े लंबे समय तक चलने वाले काम के लिए, सूचनाओं के लाइफ़साइकल को बेहतर बनाया गया है. (b/168502234, aosp/1431331)
वर्शन 2.5.0-alpha02
16 सितंबर, 2020
androidx.work:work-*:2.5.0-alpha02
रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkInfo
s से क्वेरी करने के लिए, WorkQuery में कोई एपीआई जोड़ें.id
(aosp/1412372, b/157335295)- WorkManager, अब ऐसे ऐप्लिकेशन को बेहतर तरीके से सपोर्ट करता है जो नए आर्टफ़ैक्ट (
androidx.work:work-multiprocess:*
) के साथ कई प्रोसेस का इस्तेमाल करते हैं. यह नया आर्टफ़ैक्ट, बड़े ऐप्लिकेशन में आने वाली कुछ समस्याओं को हल करने में मदद करता है. जैसे:- आम तौर पर, WorkManager को हर ऐप्लिकेशन प्रोसेस में शुरू करना होता है. यह सही नहीं है, क्योंकि इससे SQLite में डेटा को लेकर विवाद बढ़ जाता है. इससे अन्य समस्याएं भी होती हैं. WorkManager में अब नए एपीआई उपलब्ध हैं. इनका इस्तेमाल करके,
Configuration#setDefaultProcessName(processName)
का इस्तेमाल करके किसी ऐप्लिकेशन प्रोसेस को प्राइमरी के तौर पर सेट किया जा सकता है.processName
, प्रोसेस का पूरी तरह क्वालिफ़ाइड नाम है.यहpackageName:processName
जैसा दिखता है. उदाहरण के लिए,com.example:remote
. - नए एपीआई का सेट:
RemoteWorkManager
औरRemoteWorkContinuation
सेenqueue
,cancel
औरquery
वर्क अनुरोध. इन एपीआई मेंLiveData
वैरिएंट शामिल नहीं हैं, ताकि कई प्रोसेस में SQLite के इस्तेमाल से जुड़ी समस्या से बचा जा सके.enqueue
,cancel
, औरquery
को किए गए सभी कॉल, एआईडीएल का इस्तेमाल करकेprimary
ऐप्लिकेशन प्रोसेस को फ़ॉरवर्ड किए जाते हैं. साथ ही, ये कॉलListenableFuture
को फ़ॉरवर्ड किए जाते हैं. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- आम तौर पर, WorkManager को हर ऐप्लिकेशन प्रोसेस में शुरू करना होता है. यह सही नहीं है, क्योंकि इससे SQLite में डेटा को लेकर विवाद बढ़ जाता है. इससे अन्य समस्याएं भी होती हैं. WorkManager में अब नए एपीआई उपलब्ध हैं. इनका इस्तेमाल करके,
एपीआई में हुए बदलाव
- WorkManager अब उन पूरे हो चुके
WorkRequest
s को ज़्यादा तेज़ी से हटाता है जिनकी कोई भी डिपेंडेंसी पूरी नहीं हुई है. बफ़र अवधि को7
दिनों से बदलकर1
दिन कर दिया गया है. (aosp/1419708)
गड़बड़ियां ठीक की गईं
- WorkManager अब नौकरियों को पहले से ही सिंक कर देता है, ताकि
WorkManager
के शुरू होने परWorkRequest
औरJobScheduler
जॉब सिंक हो जाएं. (aosp/1412794, b/166292069)
वर्शन 2.5.0-alpha01
19 अगस्त, 2020
androidx.work:work-*:2.5.0-alpha01
रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- इंटरनल एपीआई में बदलाव किए गए हैं. इससे हम आने वाले समय में
WorkManager
के साथ बेहतर टूलिंग उपलब्ध करा पाएंगे. ज़्यादा अपडेट पाने के लिए हमारे साथ बने रहें.
गड़बड़ियां ठीक की गईं
- कुछ डिवाइसों पर नेटवर्क की स्थिति को ट्रैक करते समय,
SecurityException
को मैनेज करें. (aosp/1396969)
बाहरी योगदान
ArrayCreatingInputMerger
के लिए दस्तावेज़ से जुड़ी समस्या को Zac Sweers ने ठीक किया (github/43).
वर्शन 2.4.0
वर्शन 2.4.0
22 जुलाई, 2020
androidx.work:work-*:2.4.0
रिलीज़ हो गया है. वर्शन 2.4.0 में ये बदलाव शामिल हैं.
2.3.0 के बाद के मुख्य बदलाव
WorkManager
में प्रोसेस असाइन करने की सुविधा अब ज़्यादा बेहतर हो गई है. पहले, प्रोसेस में मौजूदScheduler
सिर्फ़ ऐसे काम को पूरा करने के बारे में सोचता था जिसमें देरी न हुई हो और जो कंस्ट्रेंट के मुताबिक हो. अब, प्रोसेस में मौजूद शेड्यूलर,WorkRequest
s को ट्रैक करता है. इन्हें आने वाले समय में लागू किया जा सकता है. इनमें PeriodicWorkRequests भी शामिल हैं. प्रोसेस में मौजूदScheduler
भी शेड्यूल करने की सीमाओं का पालन नहीं करता. हालांकि, यह अब भी WorkManager के ज़रिए इस्तेमाल किए जा रहेScheduler
के साइज़ तक सीमित है.Executor
इसका मतलब है कि ऐप्लिकेशन अब ज़्यादा WorkRequest को पूरा कर सकता है, जब ऐप्लिकेशन फ़ोरग्राउंड में हो. फ़ोरग्राउंड में देर से होने वाले काम को मैनेज करने के लिए,WorkManager
एक नया कॉन्फ़िगर किया जा सकने वालाRunnableScheduler
भी लॉन्च करता है. (aosp/1185778)- WorkManager अब RxJava 3 के साथ काम करता है. RxJava 3 का इस्तेमाल करने के लिए, आपको यह डिपेंडेंसी शामिल करनी चाहिए:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) WorkQuery
का इस्तेमाल करके,WorkInfo
के लिए क्वेरी करने की सुविधा जोड़ी गई. यह तब काम आता है, जब डेवलपर को कई एट्रिब्यूट के कॉम्बिनेशन के हिसाब सेWorkInfo
क्वेरी करनी होती है. ज़्यादा जानकारी के लिए,WorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
याWorkQuery.Builder.fromUniqueWorkNames(...)
देखें. (aosp/1253230, b/143847546)WorkManager
से गड़बड़ी की जानकारी का अनुरोध करने की सुविधा जोड़ें. इसके लिए, इनका इस्तेमाल करें:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
इससे कई तरह की काम की जानकारी मिलती है. जैसे:
- पिछले 24 घंटों में पूरे किए गए WorkRequest.
- फ़िलहाल, चल रहे WorkRequests.
- शेड्यूल की गई WorkRequests. (aosp/1235501)
ExistingWorkPolicy.APPEND_OR_REPLACE
जोड़ें. यहAPPEND
जैसा ही होता है, लेकिन यह ऐसी चेन को बदलता है जिसने ज़रूरी शर्तें पूरी नहीं की हैं या जिन्हें रद्द कर दिया गया है. (b/134613984, aosp/1199640)कस्टम
RunnableScheduler
जोड़ने की सुविधा उपलब्ध कराएं, ताकि आने वाले समय में पूरे किए जाने वाले WorkRequest को ट्रैक किया जा सके. इसका इस्तेमाल, प्रोसेस में मौजूद शेड्यूलर करता है. (aosp/1203944)DelegatingWorkerFactory
का इस्तेमाल करते समय, डेलिगेट करने के लिए फ़ैक्ट्रियां डाइनैमिक तौर पर जोड़ने की सुविधा जोड़ी गई. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
की पाबंदियों के लिए ट्रैकिंग को प्लैटफ़ॉर्म के साथ ज़्यादा सटीक तरीके से अलाइन किया गया है. (aosp/1312583)प्रोसेस में मौजूद शेड्यूलर अब प्रोसेस का नाम तय करने के लिए, बेहतर एपीआई का इस्तेमाल करता है. यह उन ऐप्लिकेशन के लिए फ़ायदेमंद है जो एक से ज़्यादा प्रोसेस का इस्तेमाल करते हैं. (aosp/1324732)
लिंट के नए नियम, जो इन बातों को लागू करते हैं:
setForegroundAsync()
एपीआई का इस्तेमाल करते समय, सहीforegroundServiceType
का इस्तेमाल करना. (b/147873061, aosp/1215915)- JobScheduler आईडी तय करना, ताकि WorkManager सीधे तौर पर JobService API का इस्तेमाल करते समय इनका इस्तेमाल कर सके. aosp/1223567
- एक नया लिंट नियम जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि डिफ़ॉल्ट
WorkerFactory
का इस्तेमाल करते समय,ListenableWorker
लागू करने के तरीके अबpublic
हैं. (aosp/1291262)
setForegroundAsync()
को किए गए ऐसे कॉल जोListenableWorker
के पूरा होने से पहले पूरे नहीं होते हैं उन्हें अबListenableFuture
के साथIllegalStateException
के ज़रिए सिग्नल दिया जाएगा. (aosp/1262743)उस गड़बड़ी को ठीक किया गया है जिसमें फ़ोरग्राउंड
Worker
में रुकावट आने के बाद,ForegroundService
बंद नहीं होता है. (b/155579898, aosp/1302153)उस बग को ठीक किया गया है जिसमें
WorkManager
, फ़ोरग्राउंड सेवा से जुड़ेWorker
के कई इंस्टेंस को एक्ज़ीक्यूट करने की कोशिश करता है (b/156310133, aosp/1309853)
वर्शन 2.4.0-rc01
24 जून, 2020
androidx.work:work-*:2.4.0-rc01
रिलीज़ हो गया है. वर्शन 2.4.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- प्रोसेस में मौजूद शेड्यूलर अब प्रोसेस का नाम तय करने के लिए, बेहतर एपीआई का इस्तेमाल करता है. यह उन ऐप्लिकेशन के लिए फ़ायदेमंद है जो एक से ज़्यादा प्रोसेस का इस्तेमाल करते हैं. (aosp/1324732)
वर्शन 2.4.0-beta01
20 मई, 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
, और androidx.work:work-testing:2.4.0-beta01
रिलीज़ किए गए हैं. वर्शन 2.4.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें फ़ोरग्राउंड
Worker
में रुकावट आने के बाद,ForegroundService
बंद नहीं होता है. (b/155579898, aosp/1302153) - उस बग को ठीक किया गया है जिसमें
WorkManager
, फ़ोरग्राउंड सेवा (b/156310133, aosp/1309853) से जुड़ेWorker
के कई इंस्टेंस को एक्ज़ीक्यूट करने की कोशिश करता है DelegatingWorkerFactory
का इस्तेमाल करते समय, डेलिगेट करने के लिए फ़ैक्ट्रियां डाइनैमिक तौर पर जोड़ने की सुविधा जोड़ी गई. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
की पाबंदियों के लिए ट्रैकिंग को प्लैटफ़ॉर्म के साथ ज़्यादा सटीक तरीके से अलाइन किया गया है. (aosp/1312583)
वर्शन 2.4.0-alpha03
29 अप्रैल, 2020
androidx.work:work-*:2.4.0-alpha03
रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- WorkManager अब RxJava 3 के साथ काम करता है. RxJava 3 का इस्तेमाल करने के लिए, आपको यह डिपेंडेंसी शामिल करनी चाहिए:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - एक नया लिंट नियम जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि डिफ़ॉल्ट
WorkerFactory
का इस्तेमाल करते समय,ListenableWorker
लागू करने के तरीके अबpublic
हैं. (aosp/1291262)
एपीआई में हुए बदलाव
ListenableWorker
का एक्ज़ीक्यूशन पूरा होने के बाद,setProgressAsync()
को कॉल करने पर,ListenableFuture
के ज़रिएException
को सूचना दी जाएगी. (aosp/1285494)WorkQuery.Builder
को अबfinal
के तौर पर मार्क कर दिया गया है. (aosp/1275037)WorkQuery.Builder
फ़ैक्ट्री मेथडwithStates
,withTags
, औरwithUniqueWorkNames
का नाम बदलकर,fromStates
,fromTags
, औरfromUniqueWorkNames
कर दिया गया है. (aosp/1280287)
गड़बड़ियां ठीक की गईं
- किसी डिवाइस की नेटवर्क स्थिति को ट्रैक करते समय,
SecurityException
को अनदेखा करें. (b/153246136, aosp/1280813)
वर्शन 2.4.0-alpha02
1 अप्रैल, 2020
androidx.work:work-*:2.4.0-alpha02
रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक नया Lint नियम जोड़ा गया है. यह नियम तब चेतावनी देता है, जब
WorkRequest
के लिएConstraints.setRequiresCharging(...)
औरConstraints.setRequiresDeviceIdle(...)
दोनों की ज़रूरत होती है. कुछ डिवाइस कभी चार्ज नहीं होते और एक ही समय पर निष्क्रिय रहते हैं. इसलिए, इस तरह के अनुरोधों को उम्मीद से कम बार चलाया जाएगा. (aosp/1253840)
एपीआई में हुए बदलाव
WorkQuery
का इस्तेमाल करके,WorkInfo
के लिए क्वेरी करने की सुविधा जोड़ी गई. यह तब काम आता है, जब डेवलपर को कई एट्रिब्यूट के कॉम्बिनेशन के हिसाब सेWorkInfo
क्वेरी करनी होती है. ज़्यादा जानकारी के लिए,WorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
याWorkQuery.Builder withUniqueWorkNames(...)
देखें. (aosp/1253230, b/143847546)setForegroundAsync()
को किए गए ऐसे कॉल जोListenableWorker
के पूरा होने से पहले पूरे नहीं होते हैं उन्हें अबListenableFuture
के साथIllegalStateException
के ज़रिए सिग्नल दिया जाएगा. (aosp/1262743)
गड़बड़ियां ठीक की गईं
- लिंट के उस नियम को ठीक किया गया है जो
PeriodicWorkRequest
के लिए, अमान्य इंटरवल की अवधि की जांच करता है. (aosp/1254846, b/152606442)
वर्शन 2.4.0-alpha01
4 मार्च, 2020
androidx.work:work-*:2.4.0-alpha01
रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkManager
में प्रोसेस असाइन करने की सुविधा अब ज़्यादा बेहतर हो गई है. इससे पहले, प्रोसेस में मौजूद शेड्यूलर सिर्फ़ ऐसे काम को पूरा करने के बारे में सोचता था जिसमें देर नहीं हुई है और जिसकी शर्तें पूरी हो गई हैं. अब प्रोसेस में मौजूद शेड्यूलर,WorkRequest
को ट्रैक करता है. इन्हें आने वाले समय में लागू किया जा सकता है. इनमेंPeriodicWorkRequest
भी शामिल हैं. प्रोसेस में मौजूद शेड्यूलर, शेड्यूल करने की सीमाओं का भी पालन नहीं करता है. हालांकि, यह अब भी WorkManager के इस्तेमाल किए जा रहेExecutor
के साइज़ तक सीमित है. इसका मतलब है कि ऐप्लिकेशन अब स्क्रीन पर दिखने के दौरान, कई औरWorkRequest
s को लागू कर सकता है. (aosp/1185778)adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
का इस्तेमाल करके, WorkManager से परफ़ॉर्मेंस से जुड़ी जानकारी का अनुरोध करने की सुविधा जोड़ी गई. इससे कई तरह की काम की जानकारी मिलती है. जैसे:- पिछले 24 घंटों में पूरे किए गए WorkRequest.
- फ़िलहाल, चल रहे WorkRequests.
- शेड्यूल की गई WorkRequests. (aosp/1235501)
लिंट के नए नियम, जो इन बातों को लागू करते हैं:
setForegroundAsync()
एपीआई का इस्तेमाल करते समय, सहीforegroundServiceType
का इस्तेमाल करना. (b/147873061, aosp/1215915)JobScheduler
आईडी तय करना, जिनका इस्तेमालJobScheduler
को सीधे तौर परJobService
एपीआई का इस्तेमाल करते समय करना चाहिए.WorkManager
(aosp/1223567)
एपीआई में हुए बदलाव
ExistingWorkPolicy.APPEND_OR_REPLACE
जोड़ें. यहAPPEND
जैसा ही होता है, लेकिन यह ऐसी चेन को बदलता है जिसने ज़रूरी शर्तें पूरी नहीं की हैं या जिन्हें रद्द कर दिया गया है. (b/134613984, aosp/1199640)WorkRequest
को ट्रैक करने के लिए, कस्टमRunnableScheduler
जोड़ने की सुविधा उपलब्ध कराएं. इनWorkRequest
को आने वाले समय में लागू किया जाना है. इसका इस्तेमाल, प्रोसेस में मौजूद शेड्यूलर करता है. (aosp/1203944)
गड़बड़ियां ठीक की गईं
RxWorker
मेंsetProgress()
को बंद कर दिया गया है, क्योंकि पहले यहSingle<Void>
दिखाता था, जो कि एक असंभव टाइप है. एक नया एपीआईsetCompletableProgress()
जोड़ा गया है, जोCompletable
दिखाता है. साथ ही, नए Lint नियम जोड़े गए हैं, जो नए एपीआई पर माइग्रेट करने में मदद करते हैं. (b/150080946, aosp/1242665)
वर्शन 2.3.4
वर्शन 2.3.4
18 मार्च, 2020
androidx.work:work-*:2.3.4
रिलीज़ हो गया है. वर्शन 2.3.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी गड़बड़ी को ठीक किया है जिसकी वजह से, 10 मिनट की समयसीमा खत्म होने के बाद, लंबे समय तक चलने वाले
Worker
के कई इंस्टेंस चल रहे थे. (aosp/1247484, b/150553353) - WorkManager के लिंट
IssueRegistry
से जुड़ी समस्या ठीक की गई. Slack के @ZacSweers का योगदान देने के लिए धन्यवाद. (aosp/1217923)
वर्शन 2.3.3
वर्शन 2.3.3
4 मार्च, 2020
androidx.work:work-*:2.3.3
रिलीज़ हो गया है. वर्शन 2.3.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें
Worker
में रुकावट आने पर, उसे सही तरीके से फिर से शेड्यूल नहीं किया जाता था. (b/150325687, aosp/1246571)
वर्शन 2.3.2
वर्शन 2.3.2
19 फ़रवरी, 2020
androidx.work:work-*:2.3.2
रिलीज़ हो गए हैं. वर्शन 2.3.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस वर्शन में, उस समस्या को ठीक किया गया है जिसमें कुछ मामलों में WorkManager, JobScheduler में 100 जॉब की सीमा से ज़्यादा जॉब शेड्यूल कर देता था. (aosp/1226859, b/149092520)
- ConstraintControllers में रेस कंडीशन की समस्या को ठीक किया गया है. (aosp/1220100)
- ज़्यादा समय तक चलने वाले वर्कर के लिए, फ़ोरग्राउंड सेवा के लाइफ़साइकल को मैनेज करने की सुविधा को बेहतर बनाया गया है. (aosp/1226295)
- कर्मचारी के रद्द होने पर, लंबे समय से काम कर रहे कर्मचारियों के लिए सूचनाएं रद्द करने की सुविधा को बेहतर बनाया गया है. (aosp/1228346)
वर्शन 2.3.1
वर्शन 2.3.1
5 फ़रवरी, 2020
androidx.work:work-*:2.3.1
रिलीज़ हो गया है. वर्शन 2.3.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस अपडेट की मदद से, लंबे समय तक चलने वाले
Worker
s के लिएNotification
s के लाइफ़साइकल को बेहतर तरीके से मैनेज किया जा सकेगा. येWorker
s तब चलते हैं, जब फ़ोरग्राउंडService
चालू होता है. (aosp/1218539, b/147249312) WorkManager
अबandroidx.sqlite:sqlite-framework:2.1.0
के स्टेबल वर्शन पर निर्भर करता है. (aosp/1217729)- लिंट के नियम जोड़े गए हैं, ताकि यह पक्का किया जा सके कि
ForegroundInfo
मेंforegroundServiceType
का इस्तेमाल करते समय,AndroidManifest.xml
मेंforegroundServiceType
तय किया गया हो. (aosp/1214207, b/147873061)
वर्शन 2.3.0
वर्शन 2.3.0
22 जनवरी, 2020
androidx.work:work-*:2.3.0
को 2.3.0-rc01
के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.3.0 में ये बदलाव शामिल हैं.
2.2.0 के बाद हुए अहम बदलाव
ListenableWorker#setForegroundAsync()
की मदद से, लंबे समय तक चलने वाले या ज़रूरी काम के लिए सहायता.ListenableWorker#setProgressAsync()
के ज़रिए वर्कर की प्रोग्रेस को ट्रैक करने की सुविधा.- WorkManager अब लाइब्रेरी के हिस्से के तौर पर, लिंट के अतिरिक्त नियमों को पैकेज करता है. इससे बग का पता जल्दी लगाने में मदद मिलती है.
वर्शन 2.3.0-rc01
8 जनवरी, 2020
androidx.work:work-*:2.3.0-rc01
रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये बदलाव शामिल हैं.
यह रिलीज़, 2.3.0-beta02
के जैसी ही है
गड़बड़ियां ठीक की गईं
work-testing
आर्टफ़ैक्ट अबwork-runtime-ktx
परapi
निर्भरता को तय करता है. (aosp/1194410)
वर्शन 2.3.0-beta02
18 दिसंबर, 2019
androidx.work:work-*:2.3.0-beta02
रिलीज़ हो गया है. वर्शन 2.3.0-beta02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- SQLite से जुड़ी ऐसी गड़बड़ियों के लिए बेहतर मैसेज जोड़ा गया है जिन्हें ठीक नहीं किया जा सकता. (aosp/1185777)
- एक लिंट नियम जोड़ा गया है. इससे यह पक्का किया जाता है कि मांग पर शुरू होने की सुविधा का इस्तेमाल करते समय, कॉन्टेंट उपलब्ध कराने वाली कंपनी
androidx.work.impl.WorkManagerInitializer
कोAndroidManifest.xml
से हटा दिया जाए. (aosp/1167007) enqueueUniquePeriodicWork()
के बजायPeriodicWorkRequest
के लिएenqueue()
का इस्तेमाल करने पर, लिंट की चेतावनी जोड़ी गई. (aosp/1166032)
एपीआई में हुए बदलाव
ForegroundInfo
में अब आपकोnotificationId
की जानकारी देनी होगी, ताकिListenableWorker.setForegroundAsync()
का इस्तेमाल किया जा सके. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. इससे एक साथ कई लंबे समय तक चलने वालेWorker
चलाए जा सकते हैं.WorkManager
, दिए गएNotification
के लाइफ़टाइम को भी बेहतर तरीके से मैनेज करता है. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
गड़बड़ियां ठीक की गईं
- AlarmManager को लागू करने के दौरान हुई गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, अलार्म को सही तरीके से हटाया नहीं जा रहा था. (aosp/1156444)
- एक गड़बड़ी को ठीक किया गया है. इसमें
WorkRequest
की खाली सूची की वजह से, गलतWorkContinuation
चेन बन जाती थी. (b/142835274, aosp/1157051)
डिपेंडेंसी में बदलाव
- WorkManager अब Room 2.2.2 का इस्तेमाल करता है.
वर्शन 2.3.0-beta01
20 नवंबर, 2019
androidx.work:work-*:2.3.0-beta01
रिलीज़ हो गया है. वर्शन 2.3.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक नया लिंट नियम जोड़ा गया है. इससे डेवलपर को होने वाली गड़बड़ियों को रोका जा सकेगा. ये गड़बड़ियां, मांग पर शुरू होने की सुविधा का इस्तेमाल करते समय,
androidx.work.Configuration.Provider
को गलत तरीके से लागू करने की वजह से होती हैं. aosp/1164559
वर्शन 2.3.0-alpha03
23 अक्टूबर, 2019
androidx.work:work-*:2.3.0-alpha03
रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkManager.createCancelPendingIntent()
एपीआई जोड़ा गया है. इससेWorkRequest
को रद्द करना आसान हो जाता है. इसके लिए,AndroidManifest.xml
में किसी अन्य कॉम्पोनेंट को रजिस्टर करने की ज़रूरत नहीं होती. इस एपीआई की मदद से,Notification
सेWorkRequest
रद्द करना आसान हो जाता है. हमें उम्मीद है कि इसे 2.3.0 वर्शन में, नए फ़ोरग्राउंड एपीआई के साथ जोड़ा जाएगा.- WorkManager अब
androidx.room:*:2.2.0
स्टेबल वर्शन पर निर्भर करता है.
एपीआई में हुए बदलाव
ForegroundInfo.getNotificationType()
का नाम बदलकरForegroundInfo.getForegroundServiceType()
कर दिया गया है, ताकि यह प्लैटफ़ॉर्म के एपीआई के साथ ज़्यादा मेल खाए. (b/142729893, aosp/1143316)
गड़बड़ियां ठीक की गईं
- हमने एक गड़बड़ी को ठीक किया है. यह गड़बड़ी, लेन-देन के बाहर
setTransactionSuccessful()
को गैर-ज़रूरी कॉल करने की वजह से होती है. ऐसा कभी-कभार होने वाले माइग्रेशन के लिए होता है. (b/142580433, aosp/1141737)
वर्शन 2.3.0-alpha02
9 अक्टूबर, 2019
androidx.work:work-*:2.3.0-alpha02
रिलीज़ हो गया है. वर्शन 2.3.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- WorkManager अब लंबे समय तक चलने वाले या ज़रूरी कामों को पूरा करने में मदद करता है. ये ऐसे काम होते हैं जिन्हें ओएस को चालू रखना चाहिए. ज़्यादा जानकारी के लिए,
ListenableWorker#setForegroundAsync()
(या Kotlin के लिएCoroutineWorker#setForeground()
) देखें. (aosp/1133636)
एपीआई में हुए बदलाव
Data
में मौजूदcontainsKey
एपीआई का नाम बदलकरhasKeyWithValueOfType
कर दिया गया है.ktx
लाइब्रेरी में मौजूद इससे मिलते-जुलते एक्सटेंशन के तरीके का नाम भी बदल दिया गया है. (b/141916545)
गड़बड़ियां ठीक की गईं
- जब
WorkRequest
s को कतार में लगाने की संख्या, शेड्यूल करने की सीमाओं के करीब पहुंच जाती है, तो WorkManager काम को सही तरीके से शेड्यूल करता है. (aosp/1105766) - अगर काम पहले से पूरा नहीं हुआ है, तो WorkManager सिर्फ़
ListenableWorker#onStopped()
को कॉल करता है. (b/140055777) - अब WorkManager, वर्कर के रुकने या उसके फ़ाइनल स्टेट पर पहुंचने पर, प्रोग्रेस की जानकारी हटा देता है. (aosp/1114572)
Data
को अब ज़्यादा काम केtoString()
के तौर पर दिखाया गया है. (b/140945323)Data
के लिए अबequals()
बेहतर तरीका उपलब्ध है. यहArray
टाइप के लिएdeepEquals
को भी सपोर्ट करता है. (b/140922528)- WorkManager अब अपने इंटरनल डेटाबेस और प्राथमिकता वाली फ़ाइलों को, नो बैकअप डायरेक्ट्री में सेव करता है. (b/114808216)
वर्शन 2.3.0-alpha01
22 अगस्त, 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
ListenableWorker
अबsetProgressAsync()
API की मदद से, प्रोग्रेस सेट कर सकते हैं. साथ ही,CoroutineWorker
मेंsuspend
-ingsetProgress
API औरRxWorker
मेंsetProgress
जोड़ा गया है, जोSingle<Void>
दिखाता है. इन नए एपीआई की मदद से, वर्करWorkInfo
के ज़रिए काम की प्रोग्रेस की जानकारी दे सकते हैं. इसके लिए,getProgress
एपीआई का इस्तेमाल किया जाता है. (b/79481554)Data
मेंcontainsKey()
एपीआई है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है किWorker
में इनपुट किए गए डेटा में, उम्मीद के मुताबिक टाइप वाली कुंजियां हैं. (b/117136838)- अब
Data
कोData.toByteArray()
औरData.fromByteArray()
का इस्तेमाल करके क्रम से लगाया जा सकता है. ध्यान दें किData
के साथ वर्शनिंग की कोई गारंटी नहीं होती. इसलिए, आपको इसे सेव नहीं करना चाहिए या इसका इस्तेमाल ऐप्लिकेशन के बीच आईपीसी के लिए नहीं करना चाहिए. इनका इस्तेमाल सिर्फ़ एक ही ऐप्लिकेशन की कई प्रोसेस के बीच सुरक्षित तरीके से किया जा सकता है. Configuration.setInputMergerFactory
के ज़रिएInputMergerFactory
तय करने की सुविधा जोड़ी गई. (b/133273159)
एपीआई में हुए बदलाव
- अगर
WorkerFactory
,ListenableWorker
का ऐसा इंस्टेंस दिखाता है जिसे पहले ही शुरू किया जा चुका है, तो WorkManager,IllegalStateException
का इंस्टेंस दिखाएगा. (b/139554406) ListenableWorker
मेंListenableFuture
रद्द करने औरonStopped()
कॉलबैक से जुड़े दस्तावेज़ों को अपडेट किया गया है. (b/138413671)
गड़बड़ियां ठीक की गईं
- प्रोसेस में मौजूद शेड्यूलर अब
idle
की पाबंदी वालेWorkRequest
को अनदेखा करता है. अब इन अनुरोधों को सिर्फ़JobScheduler
तब पिक अप करता है, जब डिवाइसidle
हो. (aosp/1089779) TestScheduler
अब टेस्ट में, अपने इंटरनल टास्क एक्ज़ीक्यूटर के लिए तय किए गएExecutor
का सही तरीके से इस्तेमाल करता है. (aosp/1090749)
वर्शन 2.2.0
वर्शन 2.2.0
15 अगस्त, 2019
androidx.work:work-*:2.2.0
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
यह रिलीज़, androidx.work:work-*:2.2.0-rc01
के जैसी ही है.
2.1.0 से 2.2.0 में हुए अहम बदलाव
androidx.work:work-gcm:2.2.0
एक नया मेवन आर्टफ़ैक्ट है. यह GCMNetworkManager को शेड्यूलर के तौर पर इस्तेमाल करने की सुविधा देता है. यह सुविधा, Google Play services के एपीआई लेवल <= 22 के लिए उपलब्ध है. यह एक ज़रूरी डिपेंडेंसी है. इससे पुराने एपीआई वर्शन पर, बैकग्राउंड प्रोसेसिंग को ज़्यादा भरोसेमंद और बेहतर तरीके से करने में मदद मिलती है. अगर आपका ऐप्लिकेशन Google Play services का इस्तेमाल करता है, तो GCMNetworkManager की सुविधा अपने-आप पाने के लिए, इस डिपेंडेंसी को अपनी gradle फ़ाइल में जोड़ें. अगर Play services उपलब्ध नहीं है, तो WorkManager पुराने डिवाइसों पर AlarmManager का इस्तेमाल करता रहेगा.
वर्शन 2.2.0-rc01
30 जुलाई, 2019
androidx.work:work-*:2.2.0-rc01
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- AlarmManager को लागू करने के दौरान हुई गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, सेवा समय से पहले बंद हो जाती थी. साथ ही, कुछ मामलों में
RejectedExecutionException
की समस्या भी होती थी. (aosp/1092374) (b/138238197). - कुछ डिवाइसों पर
JobScheduler
एपीआई का इस्तेमाल करते समय,NullPointerException
की समस्या को हल करने का तरीका जोड़ा गया. (aosp/1091020) (b/138364061), (b/138441699)
वर्शन 2.2.0-beta02
19 जुलाई, 2019
androidx.work:work-*:2.2.0-beta02
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
2.2.0-beta01
में, अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटाया गया.
वर्शन 2.2.0-beta01
17 जुलाई, 2019
androidx.work:work-*:2.2.0-beta01
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
androidx.work:work-gcm:2.2.0-beta01
एक नया मेवन आर्टफ़ैक्ट है. यह GCMNetworkManager को शेड्यूलर के तौर पर इस्तेमाल करने की सुविधा देता है. यह सुविधा, Google Play services के एपीआई लेवल <= 22 के लिए उपलब्ध है. यह ज़रूरी नहीं है. इससे पुराने एपीआई वर्शन पर, बैकग्राउंड में ज़्यादा भरोसेमंद तरीके से प्रोसेस करने में मदद मिलती है. अगर आपका ऐप्लिकेशन Google Play services का इस्तेमाल करता है, तो GCMNetworkManager की सुविधा अपने-आप पाने के लिए, इस डिपेंडेंसी को अपनी gradle फ़ाइल में जोड़ें. अगर Play services उपलब्ध नहीं है, तो WorkManager पुराने डिवाइसों पर AlarmManager का इस्तेमाल करता रहेगा.
गड़बड़ियां ठीक की गईं
- Nvidia Shield K1 टैबलेट पर नेटवर्क की स्थिति को ट्रैक करते समय,
IllegalArgumentException
की समस्या को ठीक किया गया. (aosp/1010188)
वर्शन 2.1.0
वर्शन 2.1.0
11 जुलाई, 2019
androidx.work:work-*:2.1.0
रिलीज़ हो गया है. यह रिलीज़, androidx.work:work-*:2.1.0-rc01
के जैसी ही है.
2.0.1 के बाद हुए अहम बदलाव
work-runtime-ktx
के लिए, अब Java 8 की ज़रूरत होती है. अगर आपको कोई समस्या आती है, तो अपनेbuild.gradle
में यह जानकारी जोड़ें:kotlinOptions { jvmTarget = "1.8" }
- WorkManager के लिए, मांग पर शुरू होने की सुविधा जोड़ी गई है. इससे WorkManager सिर्फ़ तब शुरू होगा, जब इसे रेफ़रंस किया जाएगा. b/127497100 मांग पर शुरू होने की सुविधा के लिए अपना प्रोजेक्ट सेट अप करने के लिए:
- अपने-आप शुरू होने वाली सुविधा बंद करें.
- अपने कस्टम
Application
ऑब्जेक्ट परConfiguration.Provider
लागू करें. WorkManager.getInstance()
के सभी रेफ़रंस कोWorkManager.getInstance(Context)
में बदलें. इस बदलाव के तहत, हमनेWorkManager.getInstance()
को बंद कर दिया है. नएWorkManager.getInstance(Context)
को कॉल करना हमेशा सुरक्षित होता है. भले ही, आपको ऑन-डिमांड इनिशियलाइज़ेशन नहीं करना हो.
PeriodicWorkRequest
अब शुरुआती देरी के साथ काम करते हैं.PeriodicWorkRequest.Builder
परsetInitialDelay
तरीके का इस्तेमाल करके, शुरुआती देरी सेट की जा सकती है. b/111404867DelegatingWorkerFactory
का इस्तेमाल करके, एक या उससे ज़्यादा रजिस्टर किए गएWorkerFactory
को डेलिगेट करने की सुविधा जोड़ी गई. b/131435993- WorkManager,
Configuration.Builder.setTaskExecutor
का इस्तेमाल करके अपने सभी इंटरनल बुक-कीपिंग के लिए इस्तेमाल किए गएExecutor
को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई है. work-testing
आर्टफ़ैक्ट मेंTestWorkerBuilder
औरTestListenableWorkerBuilder
का इस्तेमाल करके, यूनिट टेस्ट की जा सकने वालीWorker
औरListenableWorker
क्लास बनाने की सुविधा जोड़ी गई.- ध्यान दें कि
work-testing
अब Kotlin को डिपेंडेंसी के तौर पर पुल करता है. साथ ही, इसमें डिफ़ॉल्ट रूप से कई Kotlin एक्सटेंशन शामिल होते हैं.
- ध्यान दें कि
WorkInfo
में रन अटेम्प्ट की संख्या जोड़ी गई. b/127290461Data
टाइप अब बाइट और बाइट ऐरे को सेव और वापस पा सकते हैं. इससेData
ऑब्जेक्ट के साइज़ में कोई बदलाव नहीं होता.- WorkManager अब
Room 2.1.0
पर निर्भर करता है. इससे डेटाबेस से जुड़ी कुछ समस्याएं ठीक हो जानी चाहिए.
वर्शन 2.1.0-rc01
27 जून, 2019
androidx.work:work-*:2.1.0-rc01
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, बैकअप प्रोसेस के दौरान
JobScheduler
के साथ काम करने वाले ऐप्लिकेशन क्रैश हो जाते थे b/135858602.
वर्शन 2.1.0-beta02
20 जून, 2019
androidx.work:work-*:2.1.0-beta02
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
TestListenableWorkerBuilder
अबListenableWorker
के इंस्टेंस बनाते समय, सहीWorkerFactory
का इस्तेमाल करता है. b/135275844- प्रोसेस बंद होने की वजह से,
WorkRequest
के लिए एक्ज़ीक्यूशन विंडो में बदलाव होने की गड़बड़ी को ठीक किया गया है. b/135272196
वर्शन 2.1.0-beta01
13 जून, 2019
androidx.work:work-*:2.1.0-beta01
रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- WorkManager अब
Room 2.1.0
पर निर्भर करता है. इससे डेटाबेस से जुड़ी कुछ समस्याएं ठीक हो जानी चाहिए. - मुख्य थ्रेड पर स्टार्टअप डिस्क के कुछ I/O हटाए गए.
- बाधाओं को ट्रैक करने के दौरान संभावित डेडलॉक की समस्या को ठीक किया गया. b/134361006
- WorkManager को असाइन किए गए अमान्य जॉब को पहले से ही रद्द कर दिया गया है. b/134058261
- डिवाइस के ठीक से काम न करने पर, JobScheduler API के लिए कुछ डिफ़ेंसिव कॉल जोड़े गए हैं.
वर्शन 2.1.0-alpha03
5 जून, 2019
androidx.work:*:2.1.0-alpha03
रिलीज़ हो गया है.
गड़बड़ियां ठीक की गईं
PeriodicWorkRequest
के लिए बेहतर दस्तावेज़.WorkManagerTestInitHelper
अब टेस्ट के लिए सही बैकग्राउंड एक्ज़ीक्यूटर का इस्तेमाल करता है.- कुछ डिवाइसों पर बड़े लेन-देन करते समय, SQLite से जुड़ी समस्याओं को ठीक किया गया है. (b/130182503)
- WorkManager की डिपेंडेंसी अब ज़्यादा जानकारी देती हैं. (b/133169148).
- WorkManager का इस्तेमाल करके जॉब शेड्यूल करते समय,
JobScheduler
को लागू करने में ओईएम से जुड़े खास बग को ठीक किया गया. - AlarmManager पर आधारित शेड्यूलर में सुधार किए गए हैं. इससे सेवा के लाइफ़टाइम से जुड़ी उन समस्याओं को ठीक किया गया है जिनकी वजह से पहले कभी-कभी क्रैश की समस्या होती थी. (b/133313734)
वर्शन 2.1.0-alpha02
16 मई, 2019
WorkManager 2.1.0-alpha02 रिलीज़ हो गया है. इस वर्शन में कई नए एपीआई शामिल हैं.
एपीआई में हुए बदलाव
PeriodicWorkRequest
अब शुरुआती देरी के साथ काम करते हैं.PeriodicWorkRequest.Builder
परsetInitialDelay
तरीके का इस्तेमाल करके, शुरुआती देरी सेट की जा सकती है. b/111404867DelegatingWorkerFactory
का इस्तेमाल करके, एक या उससे ज़्यादा रजिस्टर किए गएWorkerFactory
को डेलिगेट करने की सुविधा जोड़ी गई. b/131435993WorkManager,
Configuration.Builder.setTaskExecutor
का इस्तेमाल करके अपने सभी इंटरनल बुक-कीपिंग के लिए इस्तेमाल किए गएExecutor
को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई है.WorkRequest.keepResultsForAtLeast
(b/130638001), मांग पर शुरू होने की सुविधा, औरPeriodicWorkRequest.Builder
(b/131711394) के बारे में दस्तावेज़ को बेहतर बनाया गया है.
वर्शन 2.1.0-alpha01
24 अप्रैल, 2019
WorkManager 2.1.0-alpha01 रिलीज़ हो गया है. इस वर्शन में कई नए एपीआई शामिल हैं. कृपया ध्यान दें कि इस वर्शन से, नई सुविधाएं उपलब्ध होंगी. हालांकि, इन्हें 1.x रिलीज़ में वापस नहीं लाया जाएगा. हमारा सुझाव है कि आप 2.x पर स्विच करें.
एपीआई में हुए बदलाव
- WorkManager के लिए, मांग पर शुरू होने की सुविधा जोड़ी गई है. इससे WorkManager सिर्फ़ तब शुरू होगा, जब इसे रेफ़रंस किया जाएगा. b/127497100 मांग पर शुरू होने की सुविधा के लिए अपना प्रोजेक्ट सेट अप करने के लिए:
- अपने-आप शुरू होने वाली सुविधा बंद करें.
- अपने कस्टम
Application
ऑब्जेक्ट परConfiguration.Provider
लागू करें. WorkManager.getInstance()
के सभी रेफ़रंस कोWorkManager.getInstance(Context)
में बदलें. इस बदलाव के तहत, हमनेWorkManager.getInstance()
को बंद कर दिया है. नएWorkManager.getInstance(Context)
को कॉल करना हमेशा सुरक्षित होता है. भले ही, आपको ऑन-डिमांड इनिशियलाइज़ेशन नहीं करना हो.
work-testing
आर्टफ़ैक्ट मेंTestWorkerBuilder
औरTestListenableWorkerBuilder
का इस्तेमाल करके, यूनिट टेस्ट की जा सकने वालीWorker
औरListenableWorker
क्लास बनाने की सुविधा जोड़ी गई.- ध्यान दें कि
work-testing
अब Kotlin को डिपेंडेंसी के तौर पर पुल करता है. हालांकि, इसमें डिफ़ॉल्ट रूप से कई Kotlin एक्सटेंशन भी शामिल होते हैं.
- ध्यान दें कि
WorkInfo
में रन अटेम्प्ट की संख्या जोड़ी गई. b/127290461Data
टाइप अब बाइट और बाइट ऐरे को सेव और वापस पा सकते हैं. इससेData
ऑब्जेक्ट के साइज़ में कोई बदलाव नहीं होता.CoroutineWorker.coroutineContext
अब काम नहीं करता. इस फ़ील्ड को गलत तरीके सेCoroutineDispatcher
के तौर पर टाइप किया गया था. अब आपको इसकी ज़रूरत नहीं है, क्योंकि निलंबन वाले फ़ंक्शन के मुख्य हिस्से में जाकर, अपनी पसंद का coroutineContext चुना जा सकता है.RxWorker.createWork()
औरRxWorker.getBackgroundScheduler()
को अब@NonNull
रिटर्न टाइप के साथ एनोटेट किया गया है.
वर्शन 2.0.1
वर्शन 2.0.1
9 अप्रैल, 2019
WorkManager 2.0.1 रिलीज़ हो गया है. यह रिलीज़, 2.0.1-rc01 के जैसी ही है.
वर्शन 2.0.1-rc01
3 अप्रैल, 2019
WorkManager 2.0.1-rc01 रिलीज़ हो गया है. इस वर्शन में कुछ गड़बड़ियां ठीक की गई हैं. लेगसी 1.x वर्शन के उपयोगकर्ताओं को, इनमें से कुछ बदलाव 1.0.1-rc01 में भी दिखेंगे.
गड़बड़ियां ठीक की गईं
- Robolectric टेस्ट अब WorkManager के साथ ठीक से काम करते हैं. b/122553577
- जॉबशेड्यूलर से पहले के एपीआई पर, कंस्ट्रेंट ट्रैकिंग की सुविधा बंद न होने की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. b/129226383
- काम की लंबी चेन से जुड़ी
StackOverflowError
समस्या को ठीक किया गया. b/129091233 PeriodicWorkRequest
के लिए अपडेट किया गया दस्तावेज़. इसमें बताया गया है कि एपीआई 23 पर फ़्लेक्स टाइम काम नहीं करता.- Kotlin के दस्तावेज़ में मौजूद कुछ ऐसे लिंक ठीक किए गए हैं जो काम नहीं कर रहे थे.
वर्शन 2.0.0
वर्शन 2.0.0
20 मार्च, 2019
WorkManager 2.0.0 रिलीज़ हो गया है. यह वर्शन, 2.0.0-rc01 जैसा ही है. यह AndroidX पर निर्भर रहने वाला, 1.0.0 स्टेबल वर्शन का AndroidX वर्शन है. हमारा सुझाव है कि आप लेगसी 1.x वर्शन के बजाय, इस वर्शन को टारगेट करें. सभी चालू डेवलपमेंट 2.x को टारगेट करेंगे. साथ ही, 1.x को सिर्फ़ सीमित समय के लिए गंभीर बग ठीक करने की सुविधा मिलेगी.
वर्शन 2.0.0-rc01
7 मार्च, 2019
WorkManager 2.0.0-rc01 रिलीज़ हो गया है. यह वर्शन, 1.0.0 स्टेबल वर्शन जैसा ही है, लेकिन इसमें AndroidX डिपेंडेंसी हैं. जब यह 2.0.0 स्टेबल वर्शन पर पहुंच जाए, तब आपको इसे शामिल करना चाहिए. साथ ही, लेगसी 1.x वर्शन में सिर्फ़ कुछ ज़रूरी गड़बड़ियां ठीक की जाएंगी. सभी चालू डेवलपमेंट 2.x को टारगेट करेंगे.
AndroidX से पहले की डिपेंडेंसी
रेफ़रंस दस्तावेज़: Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
वर्शन 1.0.1
वर्शन 1.0.1
9 अप्रैल, 2019
WorkManager 1.0.1 रिलीज़ हो गया है. यह रिलीज़, 1.0.1-rc01 के जैसी है.
कृपया ध्यान दें कि हम उपयोगकर्ताओं को WorkManager 2.x पर अपडेट करने का सुझाव देते हैं. ऐसा इसलिए, क्योंकि आने वाले समय में 1.x ब्रांच के लिए बहुत कम अपडेट उपलब्ध होंगे. 1.x लाइब्रेरी के लिए नए एपीआई भी रिलीज़ नहीं किए जाएंगे.
वर्शन 1.0.1-rc01
2 अप्रैल, 2019
WorkManager 1.0.1-rc01 रिलीज़ हो गया है. इस वर्शन में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- Robolectric टेस्ट अब WorkManager के साथ ठीक से काम करते हैं. b/122553577
- जॉबशेड्यूलर से पहले के एपीआई पर, कंस्ट्रेंट ट्रैकिंग की सुविधा बंद न होने की वजह से ऐप्लिकेशन क्रैश होने की समस्या को ठीक किया गया है. b/129226383
- काम की लंबी चेन से जुड़ी
StackOverflowError
समस्या को ठीक किया गया. b/129091233
वर्शन 1.0.0
वर्शन 1.0.0
05 मार्च, 2019
यह WorkManager का 1.0.0 स्टेबल रिलीज़ है. WorkManager का यह वर्शन, 1.0.0-rc02 वर्शन जैसा ही है.
वर्शन 1.0.0-rc02
21 फ़रवरी, 2019
यह WorkManager के 1.0.0 स्टेबल रिलीज़ के लिए दूसरा रिलीज़ कैंडिडेट है. इस रिलीज़ में दो गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
Worker
अब ऐप्लिकेशन क्रैश होने के बाद,Worker
s को सही तरीके से शेड्यूल किया जाता है. b/124546316Worker
s जो बिना जांच किए गएException
को थ्रो करते हैं उन्हें अबFAILED
के तौर पर सही तरीके से मार्क किया गया है. साथ ही, अब वे ऐप्लिकेशन की प्रोसेस को क्रैश नहीं करते हैं.
वर्शन 1.0.0-rc01
14 फ़रवरी, 2019
यह WorkManager के 1.0.0 स्टेबल वर्शन के लिए रिलीज़ कैंडिडेट है. इस रिलीज़ में एक गड़बड़ी ठीक की गई है.
गड़बड़ियां ठीक की गईं
- AlarmManager पर आधारित लागू करने की सुविधा अब PeriodicWorkRequests के लिए,
flex
विंडो का सही तरीके से पालन करती है. b/124274584
वर्शन 1.0.0-beta05
6 फ़रवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
JobScheduler.getPendingJob(...)
का इस्तेमाल API 23 पर किया गया था. b/123893059 - Android 5.1 (एपीआई लेवल 22) या इससे पहले के वर्शन पर चल रहे डिवाइसों पर,
NullPointerException
को ठीक किया गया. b/123835104
वर्शन 1.0.0-beta04
4 फ़रवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- AlarmManager के आधार पर लागू करने के लिए, PeriodicWork को शेड्यूल करने की सुविधा को बेहतर बनाया गया है.
- उस समस्या को ठीक किया गया है जिसमें AlarmManager पर आधारित सुविधा का इस्तेमाल करते समय, WorkManager सही तरीके से पाबंदियों को ट्रैक नहीं कर पाता था. b/123379508
- AlarmManager पर आधारित सुविधा का इस्तेमाल करते समय, WorkManager के प्रोसेस बंद होने पर काम को फिर से शुरू करने में होने वाली समस्या को ठीक किया गया है. b/123329850
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से, AlarmManager पर आधारित सुविधा का इस्तेमाल करते समय, WorkManager में वेकलॉक लीक हो जाते थे.
वर्शन 1.0.0-beta03
25 जनवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- हमने
1.0.0-beta02
में एक रिग्रेशन पेश किया है. इसकी वजह से, कुछ मामलों में काम ठीक से नहीं हो रहा है. b/123211993 - उस समस्या को ठीक किया गया है जिसमें बैकऑफ़ टाइमिंग का सही तरीके से पालन नहीं किया जा रहा था. b/122881597
- Android 5.1 (एपीआई
या) या इससे पहले के वर्शन पर चल रहे डिवाइसों पर मौजूद
ConcurrentModificationException
को ठीक किया गया है. यह1.0.0-beta02
में किए गए सुधार का ही एक हिस्सा है. b/121345393 - हमने अपने मेनिफ़ेस्ट में मौजूद कुछ कॉम्पोनेंट के लिए
exported=false
जोड़ा है. इन कॉम्पोनेंट में यह एनोटेशन मौजूद नहीं था. - पैकेज-लेवल के दस्तावेज़ में, इस बारे में जानकारी शामिल की गई है कि WorkManager, ओएस के साथ कैसे इंटरैक्ट करता है.
वर्शन 1.0.0-beta02
15 जनवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- एक ऐसे मामले को ठीक किया गया है जिसमें Android 6.0 (एपीआई लेवल 23) पर चलने वाले डिवाइसों पर, तय समय पर होने वाला काम हर इंटरवल में एक से ज़्यादा बार चल सकता था. b/121998363
- Android 5.1 (एपीआई लेवल 22) या इससे पहले के वर्शन पर चल रहे डिवाइसों पर
ConcurrentModificationException
को ठीक किया गया. b/121345393 - Android 5.1 (एपीआई लेवल 22) या इससे पहले के वर्शन पर चल रहे डिवाइसों पर, ज़रूरी शर्तें पूरी न होने पर भी काम के गलत तरीके से लागू होने की समस्या ठीक की गई है. b/122578012
- कुछ खास मामलों में, काम को तेज़ी से पूरा करने के लिए ऑप्टिमाइज़ किया गया. b/122358129
LiveData
के कई इंस्टेंस के बीच रेस की संभावित स्थितियों को ठीक करने के लिए बदलाव किया गया है. इनका इस्तेमाल WorkManager करता है.1.1.1-rc01
के बजायRoom
डिपेंडेंसी1.1.1
का इस्तेमाल किया गया है; ये वर्शन एक जैसे हैं. b/122578011
वर्शन 1.0.0-beta01
19 दिसंबर, 2018
इस रिलीज़ में एपीआई में कोई बदलाव नहीं किया गया है. आने वाले समय में, WorkManager के एपीआई में कोई बदलाव नहीं किया जाएगा. हालांकि, अगर कोई गंभीर समस्या आती है, तो अगले वर्शन तक एपीआई में बदलाव किया जा सकता है. इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- माता-पिता के तौर पर किए गए काम के लिए, पहले रद्द किए गए बच्चों के टास्क अब नहीं चलेंगे. b/120811767
- लॉगिंग क्लास को सही तरीके से शुरू किया गया हो. ये मुख्य रूप से टेस्ट के दौरान दिखती हैं.
वर्शन 1.0.0-alpha13
12 दिसंबर, 2018
इस रिलीज़ में, एपीआई में एक छोटा सा बदलाव किया गया है. यह बदलाव, Kotlin का इस्तेमाल करने वाले कुछ लोगों के लिए मददगार होगा.
एपीआई में हुए बदलाव
androidx.work.Result
कोListenableWorker
की इनर क्लास के तौर पर ले जाया गया है. इससे रिफ़ैक्टरिंग के दौरान, Kotlin की टॉप-लेवलResult
क्लास के साथ होने वाले टकराव को रोका जा सकता है. यह एपीआई में किया गया एक बड़ा बदलाव है. b/120564418
एपीआई में हुए बड़े बदलाव
androidx.work.Result
कोListenableWorker
की इनर क्लास के तौर पर ले जाया गया है.
वर्शन 1.0.0-alpha12
5 दिसंबर, 2018
इस रिलीज़ में, एपीआई में कुछ ऐसे बदलाव किए गए हैं जिनसे मौजूदा कोड पर असर पड़ सकता है. कृपया नीचे दिया गया एपीआई में किए गए ऐसे बदलाव जिनसे मौजूदा कोड पर असर पड़ सकता है सेक्शन देखें. इस वर्शन को हमारे पहले बीटा वर्शन के तौर पर रिलीज़ किया जा सकता है. alpha12
में, दस्तावेज़ से जुड़े अपडेट की पूरी जानकारी भी शामिल है.
एपीआई में हुए बदलाव
work-rxjava2
नाम के नए आर्टफ़ैक्ट मेंRxWorker
की सुविधा जोड़ी गई है. यह एकListenableWorker
है, जिसमेंSingle<Payload>
की ज़रूरत होती है.- Firebase JobDispatcher के लिए सहायता हटा दी गई है, क्योंकि इसे बंद किया जा रहा है. इसका मतलब है कि बीटा वर्शन लॉन्च होने के बाद,
work-firebase
आर्टफ़ैक्ट को अपडेट नहीं किया जाएगा. हम आने वाले समय में, कोई दूसरा विकल्प जोड़ने पर विचार करेंगे. Payload
कोResult
में मर्ज किया गया.Result
अब एक "सील्ड क्लास" है. इसमें तीन कॉन्क्रीट इंप्लीमेंटेशन हैं. इन्हेंResult.success()
(याResult.success(Data)
),Result.failure()
(याResult.failure(Data)
), औरResult.retry()
के ज़रिए हासिल किया जा सकता है. अब आपकेListenableFuture
का नतीजाPayload
के बजायResult
दिखता है.Worker
के पास, आउटपुटData
के लिए गेटर और सेटर के तरीके नहीं हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.- कॉन्टेंट यूआरआई को धीरे-धीरे ट्रिगर करने की सुविधा को बेहतर तरीके से काम करने में मदद करने के लिए,
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
औरConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
और उनके वैरिएंट जोड़े गए हैं. b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
वैरिएंट जोड़ा गया. इस तरीके के लिए API 26 ज़रूरी है.Operation.await()
औरListenableFuture.await()
Kotlin एक्सटेंशन के तरीके जोड़े गए.Operation.getException()
का नाम बदलकरOperation.getThrowable()
कर दिया गया. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.ContentUriTriggers
क्लास और इसे रेफ़र करने वाले तरीके, अब सार्वजनिक तौर पर इस्तेमाल नहीं किए जा सकते. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.- एपीआई को बेहतर बनाने के लिए,
WorkManager
,WorkContinuation
, औरOneTimeWorkRequest
में मौजूद बाकी सभी varargs तरीकों को हटा दिया गया है. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा varargs कोArrays.asList(...)
के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. WorkContinuation.combine(OneTimeWorkRequest, *)
वैरिएंट हटा दिए गए. वे एक ऐसा एपीआई पेश कर रहे थे जिसे समझना मुश्किल था. मौजूदाcombine
तरीके ज़्यादा आसानी से समझ में आते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.
गड़बड़ियां ठीक की गईं
- मार्शमैलो से पहले के वर्शन में, पहले से चल रहे टास्क की प्रोसेस बंद होने पर, उसे फिर से शुरू करना अब ज़्यादा भरोसेमंद है.
LiveData
कोobserveForever
के ज़रिए ट्रैक किया जाता है. इसे WorkManager के ज़रिए ट्रैक किया जाता है. यह Room लाइब्रेरी में मौजूद समस्या को ठीक करने के लिए, बैकपोर्ट किया गया एक वर्शन है. b/74477406- अगर क्रम से लगाए गए ऑब्जेक्ट का साइज़ तय सीमा से ज़्यादा है, तो
Data.Builder.build()
अब एक अपवाद दिखाता है. पहले, ऐसा सिर्फ़ बैकग्राउंड थ्रेड पर होता था, जहां इसे ठीक से मैनेज नहीं किया जा सकता था. - इसके अलावा, काम बंद होने और रद्द होने के बीच अंतर किया गया है.
getWorkInfoById()
,ListenableWorker.onStopped()
के दौरानCANCELLED
State
के साथWorkInfo
दिखाएगा. ListenableWorker
में,null
Result
को गड़बड़ियों के तौर पर माना जाता है. b/120362353- API 24 पर चलने वाले Shield Tablet के लिए, अनुमान के आधार पर गड़बड़ी ठीक की गई है. इससे कभी-कभी
IllegalArgumentException
की समस्या होती थी. b/119484416
एपीआई में हुए बड़े बदलाव
- Firebase JobDispatcher के लिए सहायता हटा दी गई है, क्योंकि इसे बंद किया जा रहा है. इसका मतलब है कि बीटा वर्शन लॉन्च होने के बाद,
work-firebase
आर्टफ़ैक्ट को अपडेट नहीं किया जाएगा. हम आने वाले समय में, कोई दूसरा विकल्प जोड़ने पर विचार करेंगे. Payload
कोResult
में मर्ज किया गया.Result
अब एक "सील्ड क्लास" है. इसमें तीन कॉन्क्रीट इंप्लीमेंटेशन हैं. इन्हेंResult.success()
(याResult.success(Data)
),Result.failure()
(याResult.failure(Data)
), औरResult.retry()
के ज़रिए हासिल किया जा सकता है. अब आपकेListenableFuture
का नतीजाPayload
के बजायResult
दिखता है.Worker
के पास, आउटपुटData
के लिए गेटर और सेटर के तरीके नहीं हैं.Operation.await()
औरListenableFuture.await()
Kotlin एक्सटेंशन के तरीके जोड़े गए.Operation.getException()
का नाम बदलकरOperation.getThrowable()
कर दिया गया.ContentUriTriggers
क्लास और इसे रेफ़र करने वाले तरीके, अब सार्वजनिक तौर पर इस्तेमाल नहीं किए जा सकते.- एपीआई को बेहतर बनाने के लिए,
WorkManager
,WorkContinuation
, औरOneTimeWorkRequest
में मौजूद बाकी सभी varargs तरीकों को हटा दिया गया है. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा varargs कोArrays.asList(...)
के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं. WorkContinuation.combine(OneTimeWorkRequest, *)
वैरिएंट हटा दिए गए. वे एक ऐसा एपीआई पेश कर रहे थे जिसे समझना मुश्किल था. मौजूदाcombine
तरीके ज़्यादा आसानी से समझ में आते हैं.
वर्शन 1.0.0-alpha11
8 नवंबर, 2018
इस रिलीज़ में कई बदलाव किए गए हैं. ये beta
को स्टेबल एपीआई बन जाएंगे.
इस रिलीज़ में, एपीआई में नुकसान पहुंचा सकने वाले बदलाव किए गए हैं. कृपया यहां दिया गया एपीआई में नुकसान पहुंचा सकने वाले बदलाव सेक्शन देखें.
एपीआई में हुए बदलाव
work-runtime-ktx
ने नयाCoroutineWorker
लॉन्च किया है.WorkStatus
का नाम बदलकरWorkInfo
कर दिया गया है.getStatus
तरीके के सभी वैरिएंट के नाम बदलकर,getWorkInfo
तरीके के वैरिएंट कर दिए गए हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.ListenableWorker.onStopped()
अब एक बूलियन आर्ग्युमेंट स्वीकार करता है. यह बताता है किWorkRequest
रद्द किया गया था या नहीं.WorkManager
अब इस तरह का अंतर नहीं करता. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.androidx.work.test
पैकेज का नाम बदलकरandroidx.work.testing
पैकेज कर दिया गया है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.Constraints
पर मौजूद सेटर अब सार्वजनिक एपीआई का हिस्सा नहीं हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.WorkerParameters.getTriggeredContentUris()
औरWorkerParameters.getTriggeredContentAuthorities()
ने पहले ऐरे दिखाए थे. अब ये तरीके, कलेक्शन दिखाते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.ListenableWorker.onStartWork()
का नाम बदलकरListenableWorker.startWork()
कर दिया गया है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.WorkStatus
के लिए कंस्ट्रक्टर अब सार्वजनिक एपीआई का हिस्सा नहीं है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.Configuration.getMaxJobSchedulerID()
औरConfiguration.getMinJobSchedulerID()
का नाम बदलकर,Configuration.getMinJobSchedulerId()
औरConfiguration.getMaxJobSchedulerId()
कर दिया गया है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.- एपीआई के इस्तेमाल को आसान बनाने के लिए, सार्वजनिक एपीआई में कई
@NonNull
एनोटेशन जोड़े गए हैं. WorkContinuation
बनाए बिना, यूनीकOneTimeWorkRequest
को कतार में लगाने के लिए,WorkManager.enqueueUniqueWork()
एपीआई जोड़ें.WorkManager
पर मौजूदenqueue
औरcancel
तरीकों के सभी वैरिएंट, अब नयाOperation
टाइप दिखाते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.enqueue
के सभी वैरिएंट, अबWorkRequest
के लिए varargs स्वीकार नहीं करते. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. इसके बजाय, Collections का इस्तेमाल करें. मौजूदा कोड में बदलाव करने के लिए,Arrays.asList()
का इस्तेमाल किया जा सकता है. हमने ऐसा एपीआई के इस्तेमाल को कम करने और तरीकों की संख्या को कम करने के लिए किया है.- अब एक प्रोसेस में एक से ज़्यादा बार
initialize
WorkManager
करने पर,IllegalStateException
दिखेगा. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.
गड़बड़ियां ठीक की गईं
work-runtime-ktx
आर्टफ़ैक्ट में मौजूदWorkRequest.Builder
अबListenableWorker
का इस्तेमाल करते हैं. b/117666259 को ठीक किया गया- पक्का करें कि
PeriodicWork
के लिए, अगला रन टाइम आने वाले समय का हो. b/118204399 को ठीक किया गया - ऐप्लिकेशन के स्टार्टअप पर WorkManager का इस्तेमाल करते समय, डिस्क I/O को हटाएं. b/117796731 में मौजूद गड़बड़ी को ठीक किया गया
WorkConstraintsTracker
में रेस कंडीशन की समस्या ठीक की गई. android-workmanager/issues/56 में मौजूद समस्या को ठीक किया गया है
एपीआई में हुए बड़े बदलाव
WorkStatus
का नाम बदलकरWorkInfo
कर दिया गया है.getStatus
तरीके के सभी वैरिएंट के नाम बदलकर,getWorkInfo
तरीके के वैरिएंट कर दिए गए हैं.ListenableWorker.onStopped()
अब एक बूलियन आर्ग्युमेंट स्वीकार करता है. यह बताता है किWorkRequest
रद्द किया गया था या नहीं.WorkManager
अब इस तरह का अंतर नहीं करता.androidx.work.test
पैकेज का नाम बदलकरandroidx.work.testing
पैकेज कर दिया गया है.Constraints
पर मौजूद सेटर अब सार्वजनिक एपीआई का हिस्सा नहीं हैं.WorkerParameters.getTriggeredContentUris()
औरWorkerParameters.getTriggeredContentAuthorities()
ने पहले ऐरे दिखाए थे. अब ये तरीके, कलेक्शन दिखाते हैं.ListenableWorker.onStartWork()
का नाम बदलकरListenableWorker.startWork()
कर दिया गया है.WorkStatus
के लिए कंस्ट्रक्टर अब सार्वजनिक एपीआई का हिस्सा नहीं है.Configuration.getMaxJobSchedulerID()
औरConfiguration.getMinJobSchedulerID()
का नाम बदलकर,Configuration.getMinJobSchedulerId()
औरConfiguration.getMaxJobSchedulerId()
कर दिया गया है.WorkManager
पर मौजूदenqueue
औरcancel
तरीकों के सभी वैरिएंट, अब नयाOperation
टाइप दिखाते हैं.enqueue
के सभी वैरिएंट, अबWorkRequest
के लिए varargs स्वीकार नहीं करते.- अब एक प्रोसेस में एक से ज़्यादा बार
initialize
WorkManager
करने पर,IllegalStateException
दिखेगा.
वर्शन 1.0.0-alpha10
11 अक्टूबर, 2018
इस रिलीज़ में, डेवलपर के कंट्रोल में एसिंक्रोनस तरीके से काम करने की सुविधा उपलब्ध है. इस रिलीज़ में, एपीआई में नुकसान पहुंचा सकने वाले बदलाव किए गए हैं. कृपया यहां दिया गया एपीआई में नुकसान पहुंचा सकने वाले बदलाव सेक्शन देखें.
हमारा अनुमान है कि WorkManager, ऐल्फ़ा पीरियड के आखिरी चरणों में पहुंच रहा है. हमारा मानना है कि बीटा वर्शन में एपीआई ठीक से काम करेगा. इसलिए, कृपया हमारी समस्या ट्रैकर पर जाकर, अपने सुझाव/राय दें या शिकायत करें.
एपीआई में हुए बदलाव
- पहले से मौजूद सभी
deprecated
तरीकों और क्लास को हटा दिया गया है. खास तौर पर, डिफ़ॉल्टWorker
कंस्ट्रक्टर को. यह एपीआई में किया गया ऐसा बदलाव है जिससे इंटिग्रेशन पर असर पड़ सकता है. NonBlockingWorker
का नाम बदलकरListenableWorker
कर दिया गया है. यह अब सार्वजनिक तौर पर दिखने वाली क्लास है और इस्तेमाल के लिए तैयार है.ListenableWorker
एक ऐब्स्ट्रैक्ट मेथडListenableFuture<Payload> onStartWork()
का ऐक्सेस देता है. इसे मुख्य थ्रेड पर कॉल किया जाता है. एसिंक्रोनस तरीके से काम शुरू करने और उसे प्रोसेस करने का फ़ैसला आपका होता है. जब यह प्रोसेस पूरी हो जाए, तब आपकोListenableFuture
को सही तरीके से अपडेट करना होगा.ListenableFuture
के रेफ़रंस इंप्लिमेंटेशन,alpha02
मेंFutures
पैकेज में दिए गए हैं.WorkManager
सेक्शन के नीचे देखें.Worker
,ListenableWorker
को बढ़ाता है और अब भी पहले की तरह काम करता है. इसमें एक ऐब्स्ट्रैक्टResult doWork()
तरीका इस्तेमाल किया जाता है.Worker
से कुछ तरीकों और सदस्यों कोListenableWorker
में शफ़ल किया गया.- हम जल्द ही
ListenableWorker
के लिए रेफ़रंस इंप्लीमेंटेशन उपलब्ध कराएंगे. ये Kotlin कोरूटीन (स्टेबल वर्शन रिलीज़ होने के बाद) और RxJava2 का इस्तेमाल करते हैं.
- इंटरफ़ेस
WorkerFactory
और कॉन्क्रीट इंप्लीमेंटेशनDefaultWorkerFactory
कोWorkerFactory
नाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है. इस सुविधा को लागू करने से यह पक्का होता है कि उपयोगकर्ता के बनाए गए किसी भीWorkerFactory
इंस्टेंस के लिए, डिफ़ॉल्ट रिफ़्लेक्शन-आधारित व्यवहार को आखिरी विकल्प के तौर पर इस्तेमाल किया जाए. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. WorkManager.synchronous()
,WorkContinuation.synchronous()
, और इनसे जुड़े सभी तरीके हटा दिए गए हैं. एपीआई में कई तरीकों के लिए,ListenableFuture<Void>
को रिटर्न टाइप के तौर पर जोड़ा गया है. यह एपीआई में किया गया ऐसा बदलाव है जिससे इंटिग्रेशन पर असर पड़ सकता है.- अब
ListenableFuture
का इस्तेमाल करके, डेटा को एक साथ पाया और देखा जा सकता है. उदाहरण के लिए,WorkManager.enqueue()
से पहलेvoid
मिलता था. अब इससेListenableFuture<Void>
मिलता है. ऑपरेशन पूरा होने के बाद, कोड चलाने के लिएListenableFuture.addListener(Runnable, Executor)
याListenableFuture.get()
को कॉल किया जा सकता है. - ध्यान दें कि इन
ListenableFuture
से यह पता नहीं चलता कि ऑपरेशन पूरा हुआ या नहीं. इनसे सिर्फ़ यह पता चलता है कि ऑपरेशन पूरा हो गया है. हालांकि, यह जानकारी पाने के लिए, आपको अब भी WorkManager के तरीकों को चेन करना होगा. - हम इन ऑब्जेक्ट पर
cancel()
कॉल को अनदेखा करते हैं, क्योंकि ये भ्रमित करने वाले होते हैं और इनके बारे में तर्क देना मुश्किल होता है (क्या आपको ऑपरेशन या उसके नतीजे को रद्द करना है?). यहFuture
के समझौते के तहत आता है. - सिंक्रोनस
getStatus*
तरीकों के साथ समानता बनाए रखने के लिए, हमनेListenableFuture
वैरिएंट उपलब्ध कराए हैं. साथ ही,LiveData
दिखाने वाले मौजूदा वैरिएंट के नाम बदले हैं, ताकि नाम में "LiveData" शामिल हो (उदाहरण के लिए,getStatusesByIdLiveData(UUID)
). यह एपीआई में किया गया एक बड़ा बदलाव है.
- अब
गड़बड़ियां ठीक की गईं
- डुप्लीकेट
androidx-annotations.pro
फ़ाइलों से जुड़ी, alpha09 वर्शन की समस्या को ठीक किया गया है. अपनी Gradle फ़ाइल सेexclude 'META-INF/proguard/androidx-annotations.pro'
को मिटाकर, पिछली रिलीज़ के नोट से वर्कअराउंड हटाया जा सकता है. - proguard कॉन्फ़िगरेशन जोड़े गए, ताकि नए
Worker
कंस्ट्रक्टर को बनाए रखा जा सके. b/116296569 - रेस कंडीशन में
NullPointerException
को ठीक किया गया है, जहां कामREPLACE
d था. b/116253486 और b/116677275 WorkContinuation.combine()
अब दो या उससे ज़्यादा के बजाय, एक या उससे ज़्यादाWorkContinuation
स्वीकार करता है. b/117266752
एपीआई में हुए बड़े बदलाव
- पहले से मौजूद सभी
deprecated
तरीकों और क्लास को हटा दिया गया है. खास तौर पर, डिफ़ॉल्टWorker
कंस्ट्रक्टर को. - इंटरफ़ेस
WorkerFactory
और कॉन्क्रीट इंप्लीमेंटेशनDefaultWorkerFactory
कोWorkerFactory
नाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है. WorkManager.synchronous()
औरWorkContinuation.synchronous()
को हटाया गया.WorkManager.getStatus*()
तरीके अबListenableFuture
दिखाते हैं.WorkManager.getStatus*LiveData()
रिटर्नLiveData
s.
वर्शन 1.0.0-alpha09
19 सितंबर, 2018
आम समस्या
अगर आपको यह समस्या आ रही है: "OS independent path 'META-INF/proguard/androidx-annotations.pro' वाली एक से ज़्यादा फ़ाइलें मिलीं", तो कृपया इस समस्या को हल करने के लिए, यहां दिया गया कोड अपनी gradle फ़ाइल में डालें. हम alpha10 में इस समस्या को ठीक कर रहे हैं:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
गड़बड़ियां ठीक की गईं
- "100 नौकरियां" वाली गड़बड़ी को ठीक करने के लिए, एक और सुधार किया गया. b/115560696
- रेस कंडीशन की वजह से, फ़ॉरेन की कंस्ट्रेंट से जुड़ी गड़बड़ियों को ठीक करने के लिए कुछ सुधार किए गए हैं. b/114705286
ConstraintTrackingWorker.onStopped(boolean)
,Worker
को कॉल डेलिगेट करता है. b/114125093- Firebase JobDispatcher के लिए, बैकऑफ़ में कम से कम देरी होने की सही स्थिति लागू करें. b/113304626
- लाइब्रेरी के अंदर थ्रेडिंग को बेहतर बनाया गया है.
LiveData
को अंदरूनी तौर पर डिडुप करने से जुड़ी संभावित समस्या को ठीक किया गया है.
एपीआई में हुए बदलाव
- अब रनटाइम के दौरान, अपने
Worker
इंस्टेंस बनाए जा सकते हैं. इसके लिए,WorkManager.Configuration
के हिस्से के तौर परWorkerFactory
तय करें. फ़ॉलबैक फ़ैक्ट्रीDefaultWorkerFactory
है. यह WorkManager के पिछले वर्शन के जैसा ही काम करती है.Worker
औरNonBlockingWorker
के लिए डिफ़ॉल्ट कंस्ट्रक्टर को अब बंद कर दिया गया है. कृपया नए कंस्ट्रक्टर (Worker(Context, WorkerParameters)
) का इस्तेमाल करें औरsuper(Context, WorkerParameters)
को कॉल करें. WorkManager के आने वाले वर्शन में, डिफ़ॉल्ट कंस्ट्रक्टर को हटा दिया जाएगा.
- हमने नए
ListenableFuture
आर्टफ़ैक्ट का इस्तेमाल शुरू कर दिया है. यह Guava पर निर्भर नहीं करता. हम आने वाली रिलीज़ में, एपीआई के लिए ListenableFutures को लॉन्च करेंगे. इस बदलाव से,NonBlockingWorker
को वापस दिखाने में मदद मिलेगी. TestDriver.setInitialDelayMet(UUID)
औरTestDriver.setPeriodDelayMet(UUID)
के ज़रिए,TestDriver
में तय समय पर काम शुरू करने की सुविधा जोड़ी गई. b/113360060
नुकसान पहुंचा सकने वाले बदलाव
- डिफ़ॉल्ट
Worker
औरNonBlockingWorker
कंस्ट्रक्टर के इस्तेमाल पर रोक लगा दी गई है. कृपया जल्द से जल्द नए कंस्ट्रक्टर पर माइग्रेट करें. आने वाले वर्शन में, डिफ़ॉल्ट कंस्ट्रक्टर को हटा दिया जाएगा.
वर्शन 1.0.0-alpha08
27 अगस्त, 2018
गड़बड़ियां ठीक की गईं
- WorkManager कॉम्पोनेंट को सीधे तौर पर डायरेक्ट बूट अनअवेयर के तौर पर लेबल किया गया है, ताकि वे डायरेक्ट बूट के दौरान चालू न हों. आने वाले समय में, हम WorkManager का ऐसा वर्शन उपलब्ध कराएंगे जो डायरेक्ट बूट के बारे में जानकारी रखता हो. b/112665532
- उस समस्या को ठीक किया गया है जिसकी वजह से फिर से कोशिश करने पर भी काम नहीं हो रहा था. b/112604021
- बार-बार होने वाले काम को बार-बार नहीं किया जा रहा था. इस समस्या को ठीक कर दिया गया है. यह समस्या ऊपर बताई गई समस्या से जुड़ी है. b/112859683
- ऐप्लिकेशन प्रोसेस पहले से चल रही होने पर, बैकऑफ़ नीतियों का पालन किया जाता है.
Data
में अपवाद के मैसेज को ठीक किया गया है, ताकि यह पता चल सके कि सीमा 10 केबी है.Configuration.setMaxSchedulerLimit(int)
की ज़्यादा से ज़्यादा वैल्यू को 50 से कम किया गया है, ताकिJobScheduler
प्रोसेसिंग पूरी होने में लगने वाले कुछ समय को ध्यान में रखा जा सके. b/112817355
वर्शन 1.0.0-alpha07
16 अगस्त, 2018
गड़बड़ियां ठीक की गईं
- नेगेटिव सीमा वाली संभावित एसक्यूएल क्वेरी को ठीक किया गया है. इससे, नतीजों की संख्या तय नहीं की जा सकती थी.
- अब पूरा हो चुका काम, अन्य शेड्यूलर में उस काम की सभी लंबित कॉपी को सही तरीके से रद्द कर देता है. इस वजह से,
JobScheduler
नौकरियों की सीमा पार हो गई. b/111569265 ConstraintTracker
मेंConcurrentModificationException
को ठीक किया गया. b/112272753Data.getBooleanArray(String)
औरData.getIntArray(String)
के रिटर्न टाइप एनोटेशन को@NonNull
के बजाय@Nullable
में बदल दिया गया है. b/112275229
एपीआई में हुए बदलाव
Worker
ने अब एक नई क्लास,NonBlockingWorker
शुरू की है. इससे मौजूदा इस्तेमाल पर कोई असर नहीं पड़ता. आने वाले समय में,NonBlockingWorker
कस्टम थ्रेडिंग की सुविधा के लिए पूरी तरह से काम करने वाली इकाई बन जाएगी.Data.getBooleanArray(String)
औरData.getIntArray(String)
के रिटर्न टाइप एनोटेशन को@NonNull
के बजाय@Nullable
में बदल दिया गया है. b/112275229- Kotlin एक्सटेंशन:
Map.toWorkData()
को बंद कर दिया गया है और मौजूदा एपीआई के साथ ज़्यादा एक जैसा बनाने के लिए, टॉप-लेवलworkDataOf(vararg Pair<String, Any?>)
जोड़ा गया है.
वर्शन 1.0.0-alpha06
1 अगस्त 2018
गड़बड़ियां ठीक की गईं
- काम शेड्यूल करते समय, डेटाबेस लॉक होने से रोकना. b/111801342
- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, डोज़ मोड में होने पर
PeriodicWork
शेड्यूल के मुताबिक नहीं चलता था. b/111469837 - ट्रैकिंग की शर्तों के दौरान होने वाली रेस कंडीशन को ठीक किया गया है. इसकी वजह से
WorkManager
क्रैश हो जाता था. googlecodelabs/android-workmanager/issues/56 WorkRequest.Builder#build()
का इस्तेमाल करते समय, यूनीकWorkRequest
बनाएं. b/111408337RescheduleReceiver
का इस्तेमाल सिर्फ़ तब चालू करें, जब ऐसेWorkRequest
मौजूद हों जिनके लिए इसकी ज़रूरत हो. b/111765853
वर्शन 1.0.0-alpha05
24 जुलाई, 2018
एपीआई में हुए बदलाव
WorkManager.getInstance()
को अब@Nullable
के बजाय@NonNull
के साथ एनोटेट किया गया है. इसके बजाय, अगर मैन्युअल तरीके से शुरू करने के दौरान सिंग्लेटन को सही तरीके से शुरू नहीं किया जाता है, तो यह तरीकाIllegalStateException
दिखाएगा. यह एपीआई में किया गया ऐसा बदलाव है जिसकी वजह से, एपीआई के साथ इंटिग्रेट किए गए मौजूदा ऐप्लिकेशन काम नहीं करेंगे.- एक नया एपीआई,
Configuration.Builder.setMinimumLoggingLevel(int)
जोड़ा गया है. इससे WorkManager के लॉग लेवल को कंट्रोल किया जा सकता है. डिफ़ॉल्ट रूप से, WorkManagerLog.INFO
और इससे ऊपर के लॉग करता है. Data.getString()
के सिग्नेचर में बदलाव किया गया है, ताकि अब यह डिफ़ॉल्ट वैल्यू न ले (यह डिफ़ॉल्ट रूप सेnull
है). यह एपीआई में हुआ एक बड़ा बदलाव है.- सिर्फ़ अंदरूनी इस्तेमाल के लिए ज़रूरी कुछ तरीकों को
@hide
के तौर पर मार्क किया गया है. इसमेंConstraints
कंस्ट्रक्टर,Data.toByteArray()
, औरData.fromByteArray(byte[])
शामिल हैं. यह एपीआई में किया गया ऐसा बदलाव है जिससे इंटिग्रेशन पर असर पड़ सकता है.
गड़बड़ियां ठीक की गईं
- WorkManager, ऑटो-बैकअप के जाने-पहचाने मामलों में अब काम नहीं करता. इस वजह से, ऐप्लिकेशन क्रैश हो सकता है. b/110564377
JobScheduler
का इस्तेमाल करते समय,PeriodicWorkRequest
के दो बार शेड्यूल होने की समस्या ठीक की गई. b/110798652- डिवाइस के डॉज़ मोड में होने के बाद,
PeriodicWorkRequest
के ठीक से काम न करने की समस्या को ठीक किया गया है. b/111469837 - Firebase JobDispatcher का इस्तेमाल करते समय, शुरुआती देरी से जुड़ी समस्या को ठीक किया गया है. b/111141023
- रेस की कुछ संभावित स्थितियों और समय से जुड़ी समस्याओं को ठीक किया गया है.
- अब इस्तेमाल नहीं किए जा रहे
BroadcastReceiver
को सही तरीके से रिलीज़ किया गया. - ऐप्लिकेशन को ज़बरदस्ती बंद करने के बाद, फिर से शुरू होने पर टास्क को फिर से शेड्यूल करने की परफ़ॉर्मेंस को ऑप्टिमाइज़ किया गया है.
TestScheduler.setAllConstraintsMet(UUID)
को दिए गएWorkRequest
को लाइन में लगाने से पहले या बाद में कॉल किया जा सकता है. b/111238024
नुकसान पहुंचा सकने वाले बदलाव
WorkManager.getInstance()
को अब@Nullable
के बजाय@NonNull
के साथ एनोटेट किया गया है.Data.getString()
के सिग्नेचर में बदलाव किया गया है, ताकि अब यह डिफ़ॉल्ट वैल्यू न ले (यह डिफ़ॉल्ट रूप सेnull
है).- सिर्फ़ अंदरूनी इस्तेमाल के लिए ज़रूरी कुछ तरीकों को
@hide
के तौर पर मार्क किया गया है. इसमेंConstraints
कंस्ट्रक्टर,Data.toByteArray()
, औरData.fromByteArray(byte[])
शामिल हैं.
वर्शन 1.0.0-alpha04
26 जून, 2018
गड़बड़ियां ठीक की गईं
PeriodicWorkRequest
का इस्तेमाल करने पर, अबAlarmManager
को सही तरीके से फिर से शेड्यूल किया जाता है.- ज़बरदस्ती बंद करने या रीबूट करने के बाद, सभी वर्कर को फिर से शेड्यूल करते समय होने वाली संभावित एएनआर की समस्या को ठीक किया गया है. b/110507716
- WorkManager के अलग-अलग एपीआई में, नल वैल्यू की अनुमति देने वाले एनोटेशन जोड़े गए. b/110344065
- Worker के एक्ज़ीक्यूशन के दौरान होने वाले ऐसे अपवाद लॉग करें जिनकी पहचान नहीं हुई है. b/109900862
- अगर आपको WorkManager के पुराने वर्शन पर वापस जाना है, तो डेटाबेस को मिटाकर माइग्रेट करने की अनुमति दी गई है. b/74633270
- डुप्लीकेट इंप्लिसिट टैग बनाते समय, माइग्रेशन क्रैश होने की समस्या ठीक की गई. यह समस्या बहुत कम होती है. यह सिर्फ़ तब होती है, जब आपने खुद ही एक जैसा इंप्लिसिट टैग फ़ॉर्मैट इस्तेमाल किया हो.
वर्शन 1.0.0-alpha03
19 जून, 2018
गड़बड़ियां ठीक की गईं
AlarmManager
पर आधारित लागू करने के तरीके में रेस कंडीशन की समस्या को ठीक किया गया है. b/80346526.डिवाइस को फिर से चालू करने के बाद,
JobScheduler
का इस्तेमाल करते समय डुप्लीकेट जॉब की समस्या ठीक की गई.कॉन्टेंट यूआरआई ट्रिगर करने वाली नौकरियां, अब रीबूट करने पर भी बनी रहती हैं. b/80234744
दस्तावेज़ से जुड़े अपडेट. b/109827628, b/109758949, b/80230748
WorkRequest
को फिर से कतार में लगाते समय होने वाली क्रैश की समस्या को ठीक किया गया है. b/109572353.work-runtime-ktx
डिपेंडेंसी का इस्तेमाल करते समय, Kotlin कंपाइलर की चेतावनियों को ठीक किया गया.WorkManager अब
Room
के1.1.1-rc1
वर्शन का इस्तेमाल करता है.
एपीआई में हुए बदलाव
WorkContinuation.getStatuses()
के सिंक्रोनस वर्शनgetStatusesSync()
को जोड़ा गया.Worker
में, उपयोगकर्ता की ओर से रद्द किए गए अनुरोध और ओएस की ओर से अस्थायी तौर पर रोके गए अनुरोध के बीच अंतर करने की सुविधा है. अगर किसी तरह के स्टॉप का अनुरोध किया गया है, तोWorker.isStopped()
,true
दिखाता है. अगर काम को साफ़ तौर पर रद्द कर दिया गया है, तोWorker.isCancelled()
true
दिखाता है. b/79632247- एपीआई 28 पर JobParameters#getNetwork() के लिए सहायता जोड़ी गई. इसे
Worker.getNetwork()
के ज़रिए दिखाया जाता है. Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
जोड़ा गया है, ताकि यह तय किया जा सके किJobScheduler
याAlarmManager
को कितनी नौकरियां भेजी जा सकती हैं. इससेWorkManager
को आपके सभी उपलब्धJobScheduler
स्लॉट लेने से रोकने में मदद मिलती है.Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
जोड़ा गया. इससेJobScheduler
जॉब आईडी की ऐसी रेंज तय करने में मदद मिलती है जिसेWorkManager
इस्तेमाल कर सकता है. b/79996760Worker.getRunAttemptCount()
, किसी दिए गएWorker
के लिए मौजूदा रन की संख्या दिखाता है. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
की मदद से, यूनीकPeriodicWorkRequest
को कतार में लगाया जा सकता है. b/79600647WorkManager.cancelAllWork()
सभीWorker
को रद्द कर देता है.WorkManager
पर निर्भर रहने वाली लाइब्रेरी, यह क्वेरी कर सकती हैं कि इस तरीके को आखिरी बार कब कॉल किया गया था. इसके लिए, वेWorkManager.getLastCancelAllTimeMillis()
का इस्तेमाल कर सकती हैं, ताकि अंदरूनी स्थिति को और बेहतर तरीके से साफ़ किया जा सके.- पूरे हो चुके जॉब को इंटरनल डेटाबेस से हटाने के लिए,
WorkManager.pruneWork()
जोड़ा गया. b/79950952, b/109710758
व्यवहार में बदलाव
- सभी
WorkRequest
के लिए, एक इंप्लिसिट टैग जोड़ा गया है. यहWorker
के लिए पूरी तरह से क्वालिफ़ाइड क्लास का नाम है. इससे,tag
के बिना याid
उपलब्ध न होने पर,WorkRequest
हटाने की सुविधा मिलती है. b/109572351
नुकसान पहुंचा सकने वाले बदलाव
Worker.WorkerResult
का नाम बदलकरWorker.Result
कर दिया गया.Worker.onStopped
में अब एक अतिरिक्तisCancelled
पैरामीटर है. इसेtrue
पर तब सेट किया जाता है, जबWorker
को साफ़ तौर पर रद्द कर दिया गया हो.
वर्शन 1.0.0-alpha02
24 मई, 2018
गड़बड़ियां ठीक की गईं
State.isFinished()
कोNullPointerException
ठीक किया गया. b/79550068- उस समस्या को ठीक कर दिया गया है जिसकी वजह से
Worker
कोApplication.onCreate()
पर फिर से शेड्यूल किया जा रहा था. b/79660657 - उस समस्या को ठीक कर दिया गया है जिसकी वजह से, ओएस की अनुमति से ज़्यादा काम शेड्यूल किया जा सकता था. b/79497378
Worker
से जुड़े वेक लॉक को हटाने की प्रोसेस को बैकग्राउंड थ्रेड में ले जाया गया.AlarmManager
लागू करने के बाद, जब सभी काम पूरे हो जाते हैं, तब यह सुविधा सही तरीके से काम करती है.- सफ़ाई करने वाली एसक्यूएल क्वेरी से जुड़ी समस्या ठीक की गई. इससे अंग्रेज़ी के अलावा अन्य भाषाओं में उपलब्ध स्थानीय सेटिंग पर असर पड़ रहा था. b/80065360
Data
में,float
के लिए सहायता जोड़ी गई. b/79443878Data.Builder.putAll()
अबBuilder
का एक इंस्टेंस दिखाता है. b/79699162- दस्तावेज़ में ज़्यादा javadoc और सुधार किए गए हैं. b/79691663
एपीआई में हुए बदलाव
Worker
s को बंद किए जाने पर प्रतिक्रिया दी जा सकती है.Worker.isStopped()
का इस्तेमाल यह देखने के लिए किया जा सकता है किWorker
को रोक दिया गया है या नहीं.Worker.onStopped()
का इस्तेमाल, डेटा को कुछ हद तक साफ़ करने के लिए किया जा सकता है.Worker.getTags()
API,Worker
से जुड़े टैग काSet
दिखाता है.- ऐसे एपीआई के लिए
javax.time.Duration
ओवरलोड जोड़े गए हैं जो अवधि औरTimeUnit
का कॉम्बिनेशन लेते हैं. इसकी सुरक्षा@RequiresApi(26)
करता है. WorkManager
एक्सटेंशन कोandroidx.work.ktx
पैकेज सेandroidx.work
पैकेज में ले जाया गया है. पुराने एक्सटेंशन अब सेवा में नहीं हैं. इन्हें आने वाले समय में हटा दिया जाएगा.Configuration.withExecutor()
का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,Configuration.setExecutor()
का इस्तेमाल करें.
वर्शन 1.0.0-alpha01
8 मई, 2018
WorkManager, बैकग्राउंड में होने वाले ऐसे काम को शेड्यूल और एक्ज़ीक्यूट करने की प्रोसेस को आसान बनाता है जिसे पूरा करना ज़रूरी है और जो डिवाइस की स्थिति के हिसाब से काम करता है. यह शुरुआती रिलीज़ 1.0.0-alpha01
है.