WorkManager
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 22 अक्टूबर, 2025 | 2.11.0 | - | - | - |
डिपेंडेंसी का एलान करना
WorkManager पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी:
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def work_version = "2.11.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.11.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 2.11
वर्शन 2.11.0
22 अक्टूबर, 2025
androidx.work:work-*:2.11.0 रिलीज़ हो गया है. वर्शन 2.11.0 में ये बदलाव शामिल हैं.
2.10.0 के बाद हुए अहम बदलाव:
minSdkको एपीआई लेवल 21 से एपीआई लेवल 23 पर अपडेट कर दिया गया है.WorkManagerके कॉन्फ़िगरेशन बिल्डर में, एपीआईsetRemoteSessionTimeoutMillisजोड़ा गया है. इससे यह कॉन्फ़िगर किया जा सकेगा किRemoteWorkManagerसेशन, आखिरी बार इस्तेमाल किए जाने के बाद कितने समय तक चालू रहेगा.
वर्शन 2.11.0-rc01
08 अक्टूबर, 2025
androidx.work:work-*:2.11.0-rc01 रिलीज़ हो गया है. वर्शन 2.11.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.11.0-beta01
24 सितंबर, 2025
androidx.work:work-*:2.11.0-beta01 रिलीज़ हो गया है. वर्शन 2.11.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
WorkManagerTestDriverमेंstopRunningWorkWithReasonजोड़ें. (Ie53b2, b/439955564)
गड़बड़ियां ठीक की गईं
- फ़ोरग्राउंड सेवा के रुकने की समस्या ठीक की गई. ऐसा तब होता था, जब कोई कमांड प्रोसेस नहीं हुई होती थी (Iae822, b/432069314)
- रिमोट कोराटीन वर्कर के रिमोट सेवा से अनबाइंड न होने की समस्या ठीक की गई (I842f2, b/247113322)
वर्शन 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.5
24 सितंबर, 2025
androidx.work:work-*:2.10.5 रिलीज़ हो गया है. वर्शन 2.10.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़ोरग्राउंड सेवा के रुकने की समस्या ठीक की गई. ऐसा तब होता था, जब कोई कमांड प्रोसेस नहीं हुई होती थी (Iae822, b/432069314)
वर्शन 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इससे यह तय किया जा सकता है कि वर्कर को किस नेटवर्क पर चलाना है. WorkManager2.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में कॉन्फ़िगर किए जा सकने वाले@RestrictToTracerके ज़रिए, ट्रेस स्पैन को भेजने की सुविधा जोड़ी गई. (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)- शेड्यूल करने से जुड़ी गड़बड़ियों को रोकने की सुविधा जोड़ी गई है. इसके लिए, setSchedulingExceptionHandler के ज़रिए
Consumer<Throwable>उपलब्ध कराएं) - 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()एपीआई जोड़ा गया है. इससे डेवलपर को वह कॉन्फ़िगरेशन मिल पाएगा जिससे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के जैसा ही है, लेकिन यह कम दखल देने वाला है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता है. साथ ही, यह एनक्यू करने के समय को बनाए रखता है. शुरुआती देरी और अवधि की गणना, अपडेट करने के समय के बजाय, एनक्यू करने के मूल समय से की जाती है.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()एपीआई जोड़ा गया है. इससे डेवलपर को वह कॉन्फ़िगरेशन मिल पाएगा जिससे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 में तेज़ी से पूरे होने वाले कामों को डेलिगेट करता है. साथ ही, 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)
- किसी बंद हो चुकी प्रोसेस से अनबाइंड करने की कोशिश करते समय,
NoSuchElementExceptions को अनदेखा करने से जुड़ी गड़बड़ी को ठीक किया गया है. (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 में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkInfos से क्वेरी करने के लिए, 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 अब उन पूरे हो चुके
WorkRequests को ज़्यादा तेज़ी से हटाता है जिनकी कोई भी डिपेंडेंसी पूरी नहीं हुई है. बफ़र अवधि को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को ट्रैक करता है. इन्हें आने वाले समय में लागू किया जा सकता है. इनमें 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जोड़ने की सुविधा उपलब्ध कराएं, ताकि आने वाले समय में पूरे किए जाने वाले WorkRequests को ट्रैक किया जा सके. इसका इस्तेमाल, प्रोसेस में मौजूद शेड्यूलर करता है. (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के साइज़ तक सीमित है. इसका मतलब है कि ऐप्लिकेशन अब स्क्रीन पर दिखने के दौरान, कई औरWorkRequests को लागू कर सकता है. (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इससे लंबे समय तक चलने वाले
Workers केNotificationके लाइफ़साइकल को बेहतर तरीके से मैनेज किया जा सकता है. येWorkers तब चलते हैं, जब फ़ोरग्राउंड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)
गड़बड़ियां ठीक की गईं
- जब
WorkRequests को कतार में लगाने की संख्या, शेड्यूल करने की सीमाओं के करीब पहुंच जाती है, तब 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-ingsetProgressAPI और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अब ऐप्लिकेशन क्रैश होने के बाद,Workers को सही तरीके से शेड्यूल किया जाता है. b/124546316Workers जो बिना जांच किए गए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()के दौरानCANCELLEDStateके साथWorkInfoदिखाएगा. ListenableWorkerमें,nullResultको गड़बड़ियों के तौर पर माना जाता है. 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()का इस्तेमाल किया जा सकता है. हमने ऐसा एपीआई के इस्तेमाल को कम करने और तरीकों की संख्या को कम करने के लिए किया है.- अब एक प्रोसेस में एक से ज़्यादा बार
initializeWorkManagerकरने पर,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 स्वीकार नहीं करते.- अब एक प्रोसेस में एक से ज़्यादा बार
initializeWorkManagerकरने पर,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को ठीक किया गया है, जहां कामREPLACEd था. b/116253486 और b/116677275 WorkContinuation.combine()अब दो या उससे ज़्यादा के बजाय, एक या उससे ज़्यादाWorkContinuationस्वीकार करता है. b/117266752
एपीआई में हुए बड़े बदलाव
- पहले से मौजूद सभी
deprecatedतरीकों और क्लास को हटा दिया गया है. खास तौर पर, डिफ़ॉल्टWorkerकंस्ट्रक्टर को. - इंटरफ़ेस
WorkerFactoryऔर कॉन्क्रीट इंप्लीमेंटेशनDefaultWorkerFactoryकोWorkerFactoryनाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है. WorkManager.synchronous()औरWorkContinuation.synchronous()को हटाया गया.WorkManager.getStatus*()तरीके अबListenableFutureदिखाते हैं.WorkManager.getStatus*LiveData()रिटर्नLiveDatas.
वर्शन 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
एपीआई में हुए बदलाव
Workers को बंद किए जाने पर प्रतिक्रिया दी जा सकती है.Worker.isStopped()का इस्तेमाल यह देखने के लिए किया जा सकता है किWorkerको रोक दिया गया है या नहीं.Worker.onStopped()का इस्तेमाल, डेटा को कुछ हद तक साफ़ करने के लिए किया जा सकता है.Worker.getTags()API,Workerसे जुड़े टैग काSetदिखाता है.- ऐसे एपीआई के लिए
javax.time.Durationओवरलोड जोड़े गए हैं जो अवधि और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 है.