WorkManager
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा वर्शन |
---|---|---|---|---|
30 जुलाई, 2025 | 2.10.3 | - | - | - |
डिपेंडेंसी का एलान करना
WorkManager पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी:
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def work_version = "2.10.3" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.10.3" // (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.10
वर्शन 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
को एक्ज़ीक्यूट किया जाता है.- डेवलपर,
Constraints.setRequiredNetworkRequest
तरीके का इस्तेमाल करके, वर्कर के लिएNetworkRequest
को कंस्ट्रेंट के तौर पर सेट कर सकते हैं. इससे यह तय किया जा सकता है कि वर्कर को किस नेटवर्क पर चलाना है. WorkManager
2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है. साथ ही, इसमें SDK 35 के साथ काम करने के लिए कई बदलाव किए गए हैं.
वर्शन 2.10.0-rc01
24 अक्टूबर, 2024
androidx.work:work-*:2.10.0-rc01
रिलीज़ हो गया है. वर्शन 2.10.0-rc01 में ये कमिट शामिल हैं.
वर्शन 2.10.0-beta01
2 अक्टूबर, 2024
androidx.work:work-*:2.10.0-beta01
रिलीज़ हो गया है. वर्शन 2.10.0-beta01 में ये कमिट शामिल हैं.
वर्शन 2.10.0-alpha04
18 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha04
रिलीज़ हो गया है. वर्शन 2.10.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोरग्राउंड सेवा के टाइप के आधार पर, एक्ज़ीक्यूशन टाइम आउट की वजह से फ़ोरग्राउंड वर्कर के बंद होने पर, बंद होने की वजह
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
जोड़ें. (Ibd0af)
वर्शन 2.10.0-alpha03
4 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha03
रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkManager
से नौकरियों में ट्रेस टैग जोड़े गए हैं. इससे ‘adb shell dumpsys jobscheduler’ को समझना बहुत आसान हो जाता है, क्योंकि इसमें एक्ज़ीक्यूट किए जा रहे वर्कर का नाम शामिल होगा.WorkManager
के मुख्य हिस्सों के आस-पास ट्रेस सेक्शन भी जोड़े जाते हैं.
एपीआई में हुए बदलाव
- WorkManager 2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है.
- ‘कम समय तक चलने वाली सेवा’ और ‘डेटा सिंक’ टाइप वाले फ़ोरग्राउंड वर्कर की समयसीमा खत्म ��ोने और
WorkManager
केstopSelf()
को कॉल न करने पर एएनआर की समस्या को ठीक किया गया. यह सुधार सिर्फ़ उन डिवाइसों पर लागू होता है जिन पर एपीआई 34 और 35 क��� ��स��तेमाल क����ा ��ात��� है. इन डिवाइसों पर फ़ोरग्राउंड सेवा के टाइप पेश किए गए थे. (ca06b2, b/364508145) - नए
WorkerParameters
एपीआई, जिनकी मदद सेWorkerFactory
का इस्तेमाल करते समय,Worker
को बाइंड करने वाली रिमोट प्रोसेस को स्विच किया जा सकता है. (Ibdc8a, Ie8a90, I7373f)
गड़बड़ियां ठीक की गईं
WorkManager
की वजह से होने वाले क्रैश को ठीक किया गया है.ऐसा तब होता है, जब लंबे समय तक चलने वाले वर्कर (जैसे, फ़ोरग्राउंड वर्कर) को फिर से शुरू करने की कोशिश की जाती है. ऐसा तब होता है, जब काम के फ़ोरग्राउंड टाइप के लिए Android 14 की ज़रूरी अनुमतियां रद्द कर दी गई हों. (b/333957914)- नए प्लैटफ़ॉर्म एपीआई को ऐक्सेस करने के लिए, मैन्युअल तरीके से आउटलाइन बनाने की सुविधा हटा दी गई है. ऐसा इसलिए, क्योंकि AGP 7.3 या इसके बाद के वर्शन (जैसे, R8 का वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग के ज़रिए यह काम अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (जैसे, D8 का वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह काम अपने-आप हो जाता है. AGP का इस्तेमाल न करने वाले क्लाइंट को, D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (Ia60e0, b/345472586)
वर्शन 2.10.0-alpha02
17 अप्रैल, 2024
androidx.work:work-*:2.10.0-alpha02
रिलीज़ हो गया है. वर्शन 2.10.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
WorkManager
में क��न्��़िगर किए जा सकने वाले@RestrictTo
Tracer
के ज़रिए, ट्रेस स्पैन को भेजने की सुविधा जोड़ी गई. (I17d7f, b/260214125)Configuration.workerCoroutineContext
को डिस्पैचर के कंट्रोल के लिए जोड़ा गया था. यहांCoroutineWorker
को एक्ज़ीक्यूट किया जाता है. इससेWorkManager
मेंDispatchers.Default
का इस्तेमाल पूरी तरह से बंद करने में मदद मिलती है. (Icd1b7)- Workers के लिए कस्टम अपवाद हैंडलर जोड़ें (Ib1b74, b/261190695)
- अब
Class
के बजायKClass
का इस्तेमाल करकेOneTimeWorkRequest.Builder
औरPeriodicWorkRequest.Builder
बनाए जा सकते हैं: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 में ये कमिट शामिल हैं.
नई सुविधाएं
- डेवलपर,
Constraints.setRequiredNetworkRequest
तरीके का इस्तेमाल करके, वर्कर के लिएNetworkRequest
को कंस्ट्रेंट के तौर पर सेट कर सकते हैं. इससे यह त�� किया जा सकता है कि वर्कर को किस नेटवर्क पर चलाना है.
एपीआई में हुए बदलाव
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
के बारे में ज़्यादा जानने के लिए, javadocs देखें.
एपीआई में हुए बदलाव
WorkManager.updateWork
को जोड़ा गया है, ताकि काम को अपडेट किया जा सके. इससे, काम को मूल रूप से कतार में लगाने का समय और उसे एक साथ कई कामों से जोड़ने की सुविधा बनी रहेगी.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
को जोड़ा गया. इस नीति की मदद से, समय-समय पर किए जाने वाले काम को नाम के हिसाब से अपडेट किया जा सकता है. यह मौजूदाREPLACE
के जैसा ही है, लेकिन यह कम दखल देने वाला है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता है. साथ ही, यह enqueue समय को बनाए रखता है. शुरुआती देरी और अवधि की गणना, अपडेट किए गए समय के बजाय, enqueue किए गए ओरिजनल समय से की जाती है.REPLACE
को इसलिए बंद कर दिया गया, ताकिREPLACE
औरUPDATE
के बीच भ्रम की स्थिति कम हो सके. अगर आपको अब भीREPLACE
के पिछले सिमैंटिक का इस्तेमाल करना है, तोCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. यहREPLACE
के जैसा ही है. (I985ed, b/219446409)- शेड्यूलिंग से जुड़ी गड़बड़ियों को रोकने की सुविधा जोड़ी गई है. इसके लिए,
Consumer<Throwable>
को setSchedulingExceptionHandler के ज़रिए उपलब्ध कराया गया है) - WorkManager को शुरू करते समय कोई समस्या हुई है या नहीं, यह पता लगाने के लिए setInitializationExceptionHandler के ज़रिए
Consumer<Throwable>
देने की सुविधा ��ोड़ी गई. OneTimeWorkRequest
औरPeriodicWorkRequest
के लिए इनलाइन हेल्पर कोandroidx.work:work-runtime-ktx
सेandroidx.work:work-runtime
पर ले जाया गया (I0010f, b/209145335)WorkQuery
को सीधे तौर पर बनाने के लिए, हेल्पर तरीकेWorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
जोड़े गए. (b/199919736) (If48f2, b/199919736)getForegroundInfo
कोWorker
में जोड़ा गया. (Ic1ead)RxWorker
में अब RxJava 2 और RxJava 3, दोनों के लिएsetForeground
है. यहCompletable
दिखाता है. इसका इस्तेमालsetForegroundInfoAsync
के बजाय किया जा सकता है.setForegroundInfoAsync
,ListenableFuture
दिखाता है- RxJava 2 और RxJava 3, दोनों के लिए
RxWorker
मेंgetForegroundInfo
,Single
दिखाता है. इसका इस्तेमालgetForegroundInfoAsync
के बजाय किया जा सकता है, जोListenableFuture
दिखाता है. (b/203851459) - अब
Constraints.Builder
का इस्तेमाल करने के बजाय, सीधे तौर पर कंस्ट्रेंट बनाए जा सकते हैं. इससे Kotlin का इस्तेमाल करने वाले लोगों को आसानी होगी. (Idc390, b/137568653) - यह जांच करने की सुविधा जोड़ी गई है कि
WorkManager
शुरू किया गया है या नहीं. इसके अलावा, लाइब्रेरी डेवलपर के लिए एक नयाgetConfiguration()
एपीआई जोड़ा गया है. इससे डेवलपर को वह कॉन्फ़िगरेशन मिल पाएगा जिससेWorkManager
को शुरू किया गया था. (I6eff3, b/212300336)
गड़बड़ियां ठीक की गईं
- ग्रीडी शेड्यूलर से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, लोड होने पर वर्कर तुरंत काम नहीं कर पाते थे. (I9686b, b/248111307)
- उन एपीआई में
@RequiresPermission
जोड़ा गया है जिनके लिए, SDK 33 और उसके बाद के वर्शन परPOST_NOTIFICATIONS
अनुमति देना ज़रूरी है. (Ie542e, b/238790278) suspendCancellableCoroutine
का इस्तेमाल करते समय,CoroutineScope
में रद्द किए गए टिकट की जानकारी कोListenableFuture
में भ��जें.
वर्शन 2.8.0-rc01
7 दिसंबर, 2022
androidx.work:work-*:2.8.0-rc01
रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये कमिट शामिल हैं.
नई सुविधाएं
- इस रिलीज़ में कोई नई सुविधा नहीं है. यह मुख्य रूप से वर्शन में बदलाव है
वर्शन 2.8.0-beta02
9 नवंबर, 2022
androidx.work:work-*:2.8.0-beta02
रिलीज़ हो गया है. वर्शन 2.8.0-beta02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
equals
मेंequals
तरीके को ठीक किया गया है. पहले, इसमें नई जनरेशन की जानकारी को ध्यान में नहीं रखा जाता था.WorkInfo
(4977cc)
वर्शन 2.8.0-beta01
5 अक्टूबर, 2022
androidx.work:work-*:2.8.0-beta01
रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- ग्रीडी शेड्यूलर से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, लोड होने पर वर्कर तुरंत काम नहीं कर पाते थे. (I9686b, b/248111307)
वर्शन 2.8.0-alpha04
7 सितंबर, 2022
androidx.work:work-*:2.8.0-alpha04
रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
WorkerInfo.getGeneration()
औरWorkerParameters.getGeneration()
को जोड़ा गया है, जो किसी वर्कर के जनरेशन की जानकारी देते हैं. अगर किसी वर्कर कोExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल करकेWorkManager.updateWork
याWorkManager.enqueueUniquePeriodicWork
के ज़रिए अपडेट किया गया है, तो उसके कई जनरेशन होते हैं. ध्यान दें कि अगर वर्कर फ़िलहाल चल रहा है, तो ऐसा हो सकता है कि यह तरीका, फ़िलहाल चल रहे वर्कर से नई जनरेशन को वापस लाए. ऐसा तब होता है, जब वर्कर के चलने के दौरान कोई अपडेट हुआ हो. (I665c5, b/219446409) (I128a9, b/219446409)InitializationExceptionHandler
जोड़ा गया है. यह एक अपवाद हैंडलर है. इसका इस्तेमाल यह पता लगाने के लिए किया जा सकता है किWorkManager
को शुरू करते समय कोई समस्या हुई थी या नहीं. (I061de)
वर्शन 2.8.0-alpha03
10 अगस्त, 2022
androidx.work:work-*:2.8.0-alpha03
रिलीज़ हो गया है. वर्शन 2.8.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkRequests
को बिना किसी रुकावट के अपडेट करने की सुविधा जोड़ी गई है. इससे, ओरिजनल एनक्यू ��ाइम, चेनिंग वगैरह को सुरक्षित रखा जा सकता है. ज़्यादा जानकारी के लिए,WorkManager.updateWork
औरExistingPeriodicWorkPolicy.UPDATE
देखें.
एपीआई में हुए बदलाव
WorkManager.updateWork
को जोड़ा गया है, ताकि काम को अपडेट किया जा सके. इससे, काम को मूल रूप से कतार में लगाने का समय और उसे एक साथ कई कामों से जोड़ने की सुविधा बनी रहेगी.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
को जोड़ा गया. इस नीति की मदद से, समय-समय पर किए जाने वाले काम को नाम के हिसाब से अपडेट किया जा सकता है. यह मौजूदाREPLACE
के जैसा ही है, लेकिन यह कम रुकावट डालने वाला है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता है. साथ ही, यह enqueue समय को बनाए रखता है. शुरुआती देरी और अवधि की गणना, अपडेट के समय के बजाय, enqueue के मूल समय से की जाती है.REPLACE
को इसलिए बंद कर दिया गया, ताकिREPLACE
औरUPDATE
के बीच अंतर करने में आसानी हो. अगर आपको अब भीREPLACE
के पिछले सिमैंटिक का इस्तेमाल करना है, तोCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. यहREPLACE
के जैसा ही है. (I985ed, b/219446409)SchedulingExceptionHandler
तय करके, शेड्यूल करने से जुड़े अपवादों को रोकने की सुविधा जोड़ें. (I033eb)OneTimeWorkRequest
औरPeriodicWorkRequest
के लिए इनलाइन हेल्पर कोandroidx.work:work-runtime-ktx
सेandroidx.work:work-runtime
पर ले जाया गया (I0010f, b/209145335)
गड़बड़ियां ठीक की गईं
- ऐसे एपीआई में
@RequiresPermission
जोड़ा गया है जिनके लिए, SDK 33 और उसके बाद के वर्शन पर POST_NOTIFICATIONS की अनुमति देना ज़रूरी है. (Ie542e, b/238790278)
वर्शन 2.8.0-alpha02
6 अप्रैल, 2022
androidx.work:work-*:2.8.0-alpha02
रिलीज़ हो गया है. वर्शन 2.8.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- अब सीधे तौर पर कंस्ट्रेंट बनाए जा सकते हैं. इसके लिए, बिल्डर का इस्तेमाल करने की ज़रूरत नहीं है. यह Kotlin उपयोगकर्ताओं के लिए आसान है. (Idc390, b/137568653)
- यह जांच करने की सुविधा जोड़ी गई है कि
WorkManager
शुरू किया गया है या नहीं. इसके अलावा, लाइब्रेरी डेवलपर के लिए एक नयाgetConfiguration()
एपीआई जोड़ा गया है. इससे डेवलपर को वह कॉन्फ़िगरेशन मिल पाएगा जिससेWorkManager
को शुरू किया गया था. (I6eff3, b/212300336)
वर्शन 2.8.0-alpha01
12 जनवरी, 2022
androidx.work:work-*:2.8.0-alpha01
रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- WorkQuery को सीधे तौर पर बनाने के लिए, हेल्पर मेथड
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
जोड़े गए. (If48f2, b/199919736) - आने वाले समय में रिलीज़ होने वाले SDK टूल के लिए, BuildCompat के एक्सपेरिमेंटल तरीके जोड़े गए हैं (Iafd82, b/207528937)
Worker
मेंgetForegroundInfo
जोड़ें. (Ic1ead)- आईडी से सीधे WorkQuery बनाने के लिए, हेल्पर तरीके
WorkQuery.fromIds
��ोड़े ��ए. (Ie5bdf, b/199919736) - RxWorker में अब
setForeground
वापस लाने की सुविधाCompletable
है. इसका इस्तेमाल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
की जगह किया जा सकता है, जो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"
का इस्तेमाल किया था, तो आपको नीचे दिए गए तरीके का इस्तेमाल करना होगा.ContentProvider
का इस्तेमाल WorkManager को शुरू करने के लिए किया जाता है.<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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें
WorkQuery
पर आधारित एपीआई का इस्तेमाल करते समय, इकाइयों के अपडेट होने के बादgetWorkInfosLiveData
को सही तरीके से अमान्य नहीं किया जा रहा था. (aosp/1540566, b/173769028) - एक गड़बड़ी को ठीक किया गया है. इसमें कुछ मामलों में, डेटाबेस के लेन-देन को 'सफल' के तौर पर मार्क नहीं किया जा रहा था. इससे कुछ Motorola डिवाइसों पर समस्��ाएं आती हैं. (aosp/1535368, b/175944460)
- किसी बंद हो चुकी प्रोसेस से अनबाइंड करने की कोशिश करते समय,
NoSuchElementException
s को अनदेखा करने से जुड़ी गड़बड़ी को ठीक किया गया है. (aosp/1530589) ConstraintTrackingWorker
को बेहतर बनाएं, ताकि सिर्फ़ उसConstraintTrackingWorker
को रोका जा सके जिसे पहले से नहीं रोका गया है.ListenableWorker
(aosp/1496844, b/172946965)- androidx.work लाइब्रेरी को Java 8 को टारगेट करने के लिए अपडेट करें (Ibd2f2)
वर्शन 2.5.0-beta02
2 दिसंबर, 2020
androidx.work:work-*:2.5.0-beta02
रिलीज़ हो गया है. वर्शन 2.5.0-beta02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
androidx.work:work-multiprocess
में मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें, WorkManager किसी प्रोसेस से बाइंड करने की कोशिश करते समय, कॉलिंग थ्रेड को अनजाने में ब्लॉक कर देता था. (aosp/1475538)PeriodicWorkRequest
के सही तरीके से मिलान न होने की गड़बड़ी को ठीक किया गया है. (b/172475041, aosp/1489577)setForeground*
एपीआई का इस्तेमाल करते समय, फ़ोरग्राउंड सेवा को बंद करने पर प्लैटफ़ॉर्म में आने वाली गड़बड़ी को ठीक करने का तरीका जोड़ा गया. (b/170924044, aosp/1489901)
वर्शन 2.5.0-beta01
28 अक्टूबर, 2020
androidx.work:work-*:2.5.0-beta01
रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkManager
, प्रोसेस में मौजूद शेड्यूलर से पिक अप किए जा सकने वालेWorkRequest
की संख्या को अपने-आप कम कर देता है. अनुरोधों को अब भी फ़र्स्ट इन फ़र्स्ट आउट (पहले आओ, पहले पाओ) के क्रम में पूरा किया जाता है. (aosp/1455228)WorkManager
, ऐप्लिकेशन के डेटास्टोर की स्थिति खराब होने पर उसे ठीक करने की कोशिश करता है. (aosp/1463103)
गड़बड़ियां ठीक की गईं
- अगर
ListenableWorker
में रुकावट आती है, तो उन्हें तुरंतENQUEUED
के तौर पर मार्क करें, ताकि उन्हें बाद में फिर से शेड्यूल किया जा सके. (aosp/1455618, b/170273988)
वर्शन 2.5.0-alpha03
14 अक्टूबर, 2020
androidx.work:work-*:2.5.0-alpha03
रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
TestListenableWorkerBuilder
औरTestWorkerBuilder
, रॉ टाइप का इस्तेमाल नहीं करते हैं. (I883ad, b/169787349)
गड़बड़ियां ठीक की गईं
- डिफ़ॉल्ट ऐप्लिकेशन प्रोसेस का नाम तय करने के लिए,
ApplicationInfo
का इस्तेमाल करें. (b/168716641, aosp/1429950) RemoteWorkManager
औरRemoteWorkContinuation
के लिए, दिखने से जुड़े नियमों को ठीक करें. इन एपीआई को अब@Restricted
के तौर पर मार्क नहीं किया गया है. (aosp/1432091):work:work-multiprocess
के लिए ProGuard के नियमों से जुड़ी समस्याएं ठीक करें. (aosp/1432091)- फ़ोरग्राउंड सेवा से जुड़े लंबे समय तक चलने वाले काम के लिए, सूचनाओं के लाइफ़साइकल को बेहतर बनाया गया है. (b/168502234, aosp/1431331)
वर्शन 2.5.0-alpha02
16 सितंबर, 2020
androidx.work:work-*:2.5.0-alpha02
रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkInfo
s से क्वेरी करने के लिए, WorkQuery में कोई एपीआई जोड़ें.id
(aosp/1412372, b/157335295)- WorkManager, अब ऐसे ऐप्लिकेशन को बेहतर तरीके से सपोर्ट करता है जो नए आर्टफ़ैक्ट (
androidx.work:work-multiprocess:*
) के साथ कई प्रोसेस का इस्तेमाल करते हैं. यह नया आर्टफ़ैक्ट, बड़े ऐप्लिकेशन को होने वाली कुछ समस्याओं को हल करने में मदद करता है. जैसे:- आम तौर पर, WorkManager को हर ऐप्लिकेशन प्रोसेस में शुरू करना होता है. यह सही नहीं है, क्योंकि इससे SQLite में डेटा को लेकर विवाद बढ़ जाता है. इससे अन्य समस्याएं भी होती हैं. WorkManager में अब नए एपीआई उपलब्ध हैं. इनका इस्तेमाल करके,
Configuration#setDefaultProcessName(processName)
का इस्तेमाल करके किसी ऐप्लिकेशन प्रोसेस को प्राइमरी के तौर पर सेट किया जा सकता है.processName
, प्रोसेस का पूरी तरह क्वालिफ़ाइड नाम है.यहpackageName:processName
जैसा दिखता है. उदाहरण के लिए,com.example:remote
. - नए एपीआई का सेट:
RemoteWorkManager
औरRemoteWorkContinuation
सेenqueue
,cancel
औरquery
वर्क अनुरोध. इन एपीआई मेंLiveData
वैरिएंट शामिल नहीं हैं, ताकि कई प्रोसेस में SQLite के इस्तेमाल से जुड़ी समस्या से बचा जा सके.enqueue
,cancel
, औरquery
को किए गए सभी कॉल, एआईडीएल का इस्तेमाल करकेprimary
ऐप्लिकेशन प्रोसेस को फ़ॉरवर्ड किए जाते हैं. साथ ही, ये कॉलListenableFuture
को फ़ॉरवर्ड किए जाते हैं. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- आम तौर पर, WorkManager को हर ऐप्लिकेशन प्रोसेस में शुरू करना होता है. यह सही नहीं है, क्योंकि इससे SQLite में डेटा को लेकर विवाद बढ़ जाता है. इससे अन्य समस्याएं भी होती हैं. WorkManager में अब नए एपीआई उपलब्ध हैं. इनका इस्तेमाल करके,
एपीआई में हुए बदलाव
- WorkManager अब उन पूरे हो चुके
WorkRequest
s को ज़्यादा तेज़ी से हटाता है जिनकी कोई भी डिपेंडेंसी पूरी नहीं हुई है. बफ़र अवधि को7
दिनों से बदलकर1
दिन कर दिया गया है. (aosp/1419708)
गड़बड़ियां ठीक की गईं
- WorkManager अब नौकरियों को पहले से ही सिंक कर देता है, ताकि
WorkManager
के शुरू होने परWorkRequest
औरJobScheduler
जॉब सिंक हो जाएं. (aosp/1412794, b/166292069)
वर्शन 2.5.0-alpha01
19 अगस्त, 2020
androidx.work:work-*:2.5.0-alpha01
रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये कमिट शामिल हैं.
नई सुविधाएं
- इंटरनल एपीआई में बदलाव किए गए हैं. इससे हम आने वाले समय में
WorkManager
के साथ बेहतर टूलिंग उपलब्ध करा पाएंगे. ज़्यादा अपडेट पाने के लिए हमारे साथ बने ���हें.
गड़बड़ियां ठीक की गईं
- कुछ डिवाइसों पर नेटवर्क की स्थिति को ट्रैक करते समय,
SecurityException
को मैनेज करें. (aosp/1396969)
बाहरी योगदान
ArrayCreatingInputMerger
के लिए दस्तावेज़ से जुड़ी समस्या को Zac Sweers ने ठीक किया (github/43).
वर्शन 2.4.0
वर्शन 2.4.0
22 जुलाई, 2020
androidx.work:work-*:2.4.0
रिलीज़ हो गया है. वर्शन 2.4.0 में ये कमिट शामिल हैं.
2.3.0 के बाद के मुख्य बदलाव
WorkManager
में प्रोसेस असाइन करने की सुविधा अब ज़्यादा बेहतर हो गई है. पहले, प्रोसेस में मौजूदScheduler
सिर्फ़ ऐसे काम को पूरा करने के बारे में सोचता था जिसमें देरी न हुई हो और जो कंस्ट्रेंट के मुताबिक हो. अब, प्रोसेस में मौजूद शे��्यूलर,WorkRequest
s को ट्रैक करता है. इन्हें आने वाले समय में लागू किया जा सकता है. इनमें PeriodicWorkRequests भी शामिल हैं. प्रोसेस में मौजूदScheduler
पर भी शेड्यूल करने की सीमाएं लागू नहीं होती हैं. हालांकि, यह अब भी WorkManager के ज़रिए इस्तेमाल किए जा रहे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 घंटों में पूरी की गई WorkRequests.
- फ़िलहाल, चल रहे WorkRequests.
- शेड्यूल की गई WorkRequests. (aosp/1235501)
ExistingWorkPolicy.APPEND_OR_REPLACE
जोड़ें. यहAPPEND
जैस��� ही होता है, लेकिन यह उस चेन को बदलता है जिसने ज़रूरी शर्तें पूरी नहीं की हैं या जिन्हें रद्द कर दिया गया है. (b/134613984, aosp/1199640)कस्टम
RunnableScheduler
जोड़ने की सुविधा उपलब्ध कराएं, ताकि आने वाले समय में पूरे किए जाने वाले WorkRequest को ट्रैक किया जा सके. इसका इस्तेमाल, प्रोसेस में मौजूद शेड्यूलर करता है. (aosp/1203944)DelegatingWorkerFactory
का इस्तेमाल करते समय, फ़ैक्ट���रियों को डाइनैमिक तरीके से जोड़ने की सुविधा जोड़ी गई है, ताकि उन्हें काम सौंपा जा सके. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
की पाबंदियों के लिए ट्रैकिंग को प्लैटफ़ॉर्म के साथ ज़्यादा सटीक तरीके से अलाइन किया गया है. (aosp/1312583)प्रोसेस में मौजूद शेड्यूलर अब प्रोसेस का नाम तय करने के लिए, बेहतर एपीआई का इस्तेमाल करता है. यह उन ऐप्लिकेशन के लिए फ़ायदेमंद है जो एक से ज़्यादा प्रोसेस का इस्तेमाल करते हैं. (aosp/1324732)
लिंट के नए नियम, जो इन बातों को लागू करते हैं:
setForegroundAsync()
एपीआई का इस्तेमाल करते समय, सहीforegroundServiceType
का इस्तेमाल करना. (b/147873061, aosp/1215915)- JobScheduler आईडी तय करना, ताकि WorkManager सीधे तौर पर JobService API का इस्तेमाल करते समय इनका इस्तेमाल कर सके. aosp/1223567
- एक नया लिंट नियम जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि डिफ़ॉल्ट
WorkerFactory
का इस्तेमाल करते समय,ListenableWorker
लागू करने के तरीके अबpublic
हैं. (aosp/1291262)
setForegroundAsync()
को किए गए ऐसे कॉल जोListenableWorker
के पूरा होने से पहले पूरे नहीं होते हैं उन्हें अबListenableFuture
पर दिखाए गएIllegalStateException
के ज़रिए सिग्नल दिया जाएगा. (aosp/1262743)उस गड़बड़ी को ठीक किया गया है जिसमें फ़ोरग्राउंड
Worker
में रुकावट आने के बाद,ForegroundService
बंद नहीं होता है. (b/155579898, aosp/1302153)उस गड़बड़ी को ठीक किया गया है जिसमें
WorkManager
, फ़ोरग्राउंड सेवा से जुड़ेWorker
के कई इंस्टेंस को एक्ज़ीक्यूट करने की कोशिश करता है (b/156310133, aosp/1309853)
वर्शन 2.4.0-rc01
24 जून, 2020
androidx.work:work-*:2.4.0-rc01
रिलीज़ हो गया है. वर्शन 2.4.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- प्रोसेस में मौजूद शेड्यूलर अब प्रोसेस का नाम तय करने के लिए, बेहतर एपीआई का इस्तेमाल करता है. यह उन ऐप्लिकेशन के लिए फ़ायदेमंद है जो एक से ज़्यादा प्रोसेस का इस्तेमाल करते हैं. (aosp/1324732)
वर्शन 2.4.0-beta01
20 मई, 2020
androidx.work:work-gcm:2.4.0-beta01
, androidx.work:work-runtime:2.4.0-beta01
, androidx.work:work-runtime-ktx:2.4.0-beta01
, androidx.work:work-rxjava2:2.4.0-beta01
, और androidx.work:work-testing:2.4.0-beta01
रिलीज़ किए गए हैं. वर्शन 2.4.0-beta01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें फ़ोरग्राउंड
Worker
में रुकावट आने के बाद,ForegroundService
बंद नहीं होता है. (b/155579898, aosp/1302153) - उस गड़बड़ी को ठीक किया गया है जिसमें
WorkManager
, फ़ोरग्राउंड सेवा से जुड़ेWorker
के कई इंस्टेंस को एक्ज़ीक्यूट करने की कोशिश करता है (b/156310133, aosp/1309853) DelegatingWorkerFactory
का इस्तेमाल करते समय, फ़ैक्ट्रियों को डाइनैमिक तरीके से जोड़ने की सुविधा जोड़ी गई है, ताकि उन्हें काम सौंपा जा सके. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
की पाबंदियों के लिए ट्रैकिंग को प्लैटफ़ॉर्म के साथ ज़्यादा सटीक तरीके से अलाइन किया गया है. (aosp/1312583)
वर्शन 2.4.0-alpha03
29 अप्रैल, 2020
androidx.work:work-*:2.4.0-alpha03
रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
- WorkManager अब RxJava 3 के साथ काम करता है. RxJava 3 का इस्तेमाल करने के लिए, आपको यह डिपेंडेंसी शामिल करनी चाहिए:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - एक नया लिंट नियम जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि डिफ़ॉल्ट
WorkerFactory
का इस्तेमाल करते समय,ListenableWorker
लागू करने के तरीके अबpublic
हैं. (aosp/1291262)
एपीआई में हुए बदलाव
ListenableWorker
का एक्ज़ीक्यूशन पूरा होने के बाद,setProgressAsync()
को कॉल करने पर,ListenableFuture
के ज़रिएException
को सूचना दी जाएगी. (aosp/1285494)WorkQuery.Builder
को अबfinal
के तौर पर मार्क कर दिया गया है. (aosp/1275037)WorkQuery.Builder
फ़ैक्ट्री मेथडwithStates
,withTags
, औरwithUniqueWorkNames
के नाम बदलकर,fromStates
,fromTags
, औरfromUniqueWorkNames
कर दिए गए हैं. (aosp/1280287)
गड़बड़ियां ठीक की गईं
- किसी डिवाइस की नेटवर्क स्थिति को ट्रैक करते समय,
SecurityException
को अनदेखा करें. (b/153246136, aosp/1280813)
वर्शन 2.4.0-alpha02
1 अप्रैल, 2020
androidx.work:work-*:2.4.0-alpha02
रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये कमिट शामिल हैं.
नई सुविधाएं
- एक नया Lint नियम जोड़ा गया है. यह नियम तब चेतावनी देता है, जब
WorkRequest
के लिएConstraints.setRequiresCharging(...)
औरConstraints.setRequiresDeviceIdle(...)
दोनों की ज़रूरत होती है. कुछ डिवाइस कभी चार्ज नहीं होते और एक ही समय पर निष्क्रिय रहते हैं. इसलिए, इस तरह के अनुरोधों क�� ����������द से कम बार चलाया जाएगा. (aosp/1253840)
एपीआई में हुए बदलाव
WorkQuery
का इस्तेमाल करके,WorkInfo
के लिए क्वेरी करने की सुविधा जोड़ी गई. यह तब काम आता है, जब डेवलपर को कई एट्रिब्यूट के कॉम्बिनेशन के हिसाब सेWorkInfo
क्वेरी करनी होती है. ज़्यादा जानकारी के लिए,WorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
याWorkQuery.Builder withUniqueWorkNames(...)
देखें. (aosp/1253230, b/143847546)setForegroundAsync()
को किए गए ऐसे कॉल जोListenableWorker
के पूरा होने से पहले पूरे नहीं होते हैं उन्हें अबListenableFuture
पर दिखाए गएIllegalStateException
के ज़रिए सिग्नल दिया जाएगा. (aosp/1262743)
गड़बड़ियां ठीक की गईं
- लिंट के उस नियम को ठीक किया गया है जो
PeriodicWorkRequest
के लिए, अमान्य इंटरवल की अवधि की जांच करता है. (aosp/1254846, b/152606442)
वर्शन 2.4.0-alpha01
4 मार्च, 2020
androidx.work:work-*:2.4.0-alpha01
रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkManager
में प्रोसेस असाइन करने की सुविधा अब ज़्यादा बेहतर हो गई है. इससे पहले, प्रोसेस में मौजूद शेड्यूलर सिर्फ़ ऐसे काम को पूरा करने के बारे में सोचता था जिसमें देर नहीं हुई है और जिसकी शर्तें पूरी हो गई हैं. अब प्रोसेस में मौजूद शेड्यूलर,WorkRequest
को ट्रैक करता है. इन्हें आने वाले समय में लागू किया जा सकता है. इनमेंPeriodicWorkRequest
भी शामिल हैं. प्रोसेस में मौजूद शेड्यूलर, शेड्यूल करने की सीमाओं का भी पालन नहीं करता है. हालांकि, यह अब भी WorkManager के इस्तेमाल किए जा रहेExecutor
के साइज़ तक सीमित है. इसका मतलब है कि अब ऐप्लिकेशन, फ़ोरग्राउंड में होने पर ज़्यादाWorkRequest
s को लागू कर सकता है. (aosp/1185778)adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
का इस्तेमाल करके, WorkManager से परफ़ॉर्मेंस से जुड़ी जानकारी का अनुरोध करने की सुविधा जोड़ी गई. इससे आपको कई तरह की काम की जानकारी मिलती है. जैसे:- पिछले 24 घंटों में पूरी की गई WorkRequests.
- फ़िलहाल, चल रहे WorkRequests.
- शेड्यूल की गई WorkRequests. (aosp/1235501)
लिंट के नए नियम, जो इन बातों को लागू करते हैं:
setForegroundAsync()
एपीआई का इस्तेमाल करते समय, सहीforegroundServiceType
का इस्तेमाल करना. (b/147873061, aosp/1215915)JobScheduler
आईडी तय करना, जिनका इस्तेमालJobScheduler
को सीधे तौर परJobService
एपीआई का इस्तेमाल करते समय करना चाहिए.WorkManager
(aosp/1223567)
एपीआई में हुए बदलाव
ExistingWorkPolicy.APPEND_OR_REPLACE
जोड़ें. यहAPPEND
जैसा ही होता है, लेकिन यह उस चेन को बदलता है जिसने ज़रूरी शर्तें पूरी नहीं की हैं या उन्हें पूरा ��हीं किया जा सका है. (b/134613984, aosp/1199640)WorkRequest
को ट्रैक करने के लिए, कस्टमRunnableScheduler
जोड़ने की सुविधा दें. इनWorkRequest
को आने वाले समय में लागू किया जाना है. इसका इस्तेमाल, प्रोसेस में मौजूद शेड्यूलर करता है. (aosp/1203944)
गड़बड़ियां ठीक की गईं
RxWorker
मेंsetProgress()
को बंद कर दिया गया है, क्योंकि यह पहलेSingle<Void>
दिखाता था, जो कि एक असंभव टाइप है. एक नया एपीआईsetCompletableProgress()
जोड़ा गया है, जोCompletable
दिखाता है. साथ ही, नए Lint नियम जोड़े गए हैं, जो नए एपीआई पर माइग्रेट करने में मदद करते हैं. (b/150080946, aosp/1242665)
वर्शन 2.3.4
वर्शन 2.3.4
18 मार्च, 2020
androidx.work:work-*:2.3.4
रिलीज़ हो गया है. वर्शन 2.3.4 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी गड़बड़ी को ठीक किया है जिसकी वजह से, 10 मिनट की समयसीमा खत्म होने के बाद, लंबे समय तक चलने वाले
Worker
के कई इंस्टेंस चल रहे थे. (aosp/1247484, b/150553353) - WorkManager के लिंट
IssueRegistry
से जुड़ी समस्या ठीक की गई. Slack के @ZacSweers का योगदान देने के लिए धन्यवाद. (aosp/1217923)
वर्शन 2.3.3
वर्शन 2.3.3
4 मार्च, 2020
androidx.work:work-*:2.3.3
रिलीज़ हो गया है. वर्शन 2.3.3 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस गड़बड़ी को ठीक किया गया है जिसमें
Worker
में रुकावट आने पर, उसे सही तरीके से फिर से शेड्यूल नहीं किया जाता था. (b/150325687, aosp/1246571)
वर्शन 2.3.2
वर्शन 2.3.2
19 फ़रवरी, 2020
androidx.work:work-*:2.3.2
रिलीज़ की गई हैं. वर्शन 2.3.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस वर्शन में, उस समस्या को ठीक किया गया है जिसमें कुछ मामलों में WorkManager, JobScheduler में 100 जॉब की सीमा से ज़्यादा जॉब शेड्यूल कर देता था. (aosp/1226859, b/149092520)
- ConstraintControllers में रेस कंडीशन की समस्या को ठीक किया गया है. (aosp/1220100)
- ज़्यादा समय तक चलने वाले वर्कर के लिए, फ़ोरग्राउंड सेवा के लाइफ़साइकल को म��नेज करने की सुविधा को बेहतर बनाया गया है. (aosp/1226295)
- कर्मचारी के रद्द होने पर, लंबे समय तक काम करने वाले कर्मचारियों के लिए सूचनाएं रद्द करने की सुविधा को बेहतर बनाया गया है. (aosp/1228346)
वर्शन 2.3.1
वर्शन 2.3.1
5 फ़रवरी, 2020
androidx.work:work-*:2.3.1
रिलीज़ हो गया है. वर्शन 2.3.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस अपडेट की मदद से, लंबे समय तक चलने वाले
Worker
s के लिएNotification
s के लाइफ़साइकल को बेहतर तरीके से मैनेज किया जा सकेगा. येWorker
s तब चलते हैं, जब फ़ोरग्राउंडService
चालू होता है. (aosp/1218539, b/147249312) WorkManager
अबandroidx.sqlite:sqlite-framework:2.1.0
के स्टेबल वर्शन पर निर्भर करता है. (aosp/1217729)- लिंट के नियम जोड़े गए हैं, ताकि यह पक्का किया जा सके कि
ForegroundInfo
मेंforegroundServiceType
का इस्तेमाल करते समय,AndroidManifest.xml
मेंforegroundServiceType
तय किया गया हो. (aosp/1214207, b/147873061)
वर्शन 2.3.0
वर्शन 2.3.0
22 जनवरी, 2020
androidx.work:work-*:2.3.0
को 2.3.0-rc01
के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.3.0 में ये कमिट शामिल हैं.
2.2.0 के बाद हुए अहम बदलाव
ListenableWorker#setForegroundAsync()
की मदद से, लंबे समय तक चलने वाले या ज़रूरी काम के लिए सहायता.ListenableWorker#setProgressAsync()
के ज़रिए वर्कर की प्रोग्रेस को ट्रैक करने की सुविधा.- WorkManager अब लाइब्रेरी के हिस्से के तौर पर, लिंट के अतिरिक्त नियमों को पैकेज करता है. इससे बग का पता जल्दी लगाने में मदद मिलती है.
वर्शन 2.3.0-rc01
8 जनवरी, 2020
androidx.work:work-*:2.3.0-rc01
रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये कमिट शामिल हैं.
यह रिलीज़, 2.3.0-beta02
के जैसी ही है
गड़बड़ियां ठीक की गईं
work-testing
आर्टफ़ैक्ट अबwork-runtime-ktx
परapi
निर्भरता को तय करता है. (aosp/1194410)
वर्शन 2.3.0-beta02
18 दिसंबर, 2019
androidx.work:work-*:2.3.0-beta02
रिलीज़ हो गया है. वर्शन 2.3.0-beta02 में ये कमिट शामिल हैं.
नई सुविधाएं
- SQLite की उन गड़बड़ियों के लिए बेहतर मैसेज जोड़ा गया है जिन्हें ठीक नहीं किया जा सकता. (aosp/1185777)
- एक लिंट नियम जोड़ा गया है. इससे यह पक्का किया जाता है कि मांग पर शुरू होने की सुविधा का इस्तेमाल करते समय, कॉन्टेंट उपलब्ध कराने वाली कंपनी
androidx.work.impl.WorkManagerInitializer
कोAndroidManifest.xml
से हटा दिया जाए. (aosp/1167007) enqueueUniquePeriodicWork()
के बजायPeriodicWorkRequest
के लिएenqueue()
का इस्तेमाल करने पर, लिंट की चेतावनी जोड़ी गई. (aosp/1166032)
एपीआई में हुए बदलाव
ForegroundInfo
में अब आपकोnotificationId
की जानकारी देनी होगी, ताकिListenableWorker.setForegroundAsync()
का इस्तेमाल किया जा सके. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. इससे एक साथ कई लंबी अवधि केWorker
चलाए जा सकते हैं.WorkManager
, दिए गएNotification
के लाइफ़टाइम को भी बेहतर तरीके से मैनेज करता है. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
गड़बड़ियां ठीक की गईं
- AlarmManager को लागू करने के दौरान हुई गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, अलार्म को सही तरीके से हटाया नहीं जा रहा था. (aosp/1156444)
- एक गड़बड़ी को ठीक किया गया है. इसमें
WorkRequest
की खाली सूची की वजह से, गलतWorkContinuation
चेन बन जाती थी. (b/142835274, aosp/1157051)
डिपेंडेंसी में बदलाव
- WorkManager अब Room 2.2.2 का इस्तेमाल करता है.
वर्शन 2.3.0-beta01
20 नवंबर, 2019
androidx.work:work-*:2.3.0-beta01
रिलीज़ हो गया है. वर्शन 2.3.0-beta01 में ये कमिट शामिल हैं.
नई सुविधाएं
- एक नया लिंट नियम जोड़ा गया है. इससे डेवलपर को, मांग पर शुरू होने की सुविधा का इस्तेमाल करते समय
androidx.work.Configuration.Provider
को गलत तरीके से लागू करने की वजह से होने वाली गड़बड़ियों से बचने में मदद मिलती है. aosp/1164559
वर्शन 2.3.0-alpha03
23 अक्टूबर, 2019
androidx.work:work-*:2.3.0-alpha03
रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkManager.createCancelPendingIntent()
एपीआई जोड़ा गया है. इससेWorkRequest
को रद्द करना आसान हो जाता है. इसके लिए,AndroidManifest.xml
में किसी अन्य कॉम्पोनेंट को रजिस्टर करने की ज़रूरत नहीं होती. इस एपीआई की मदद से,Notification
सेWorkRequest
की सदस्यताएं आसानी से रद्द की जा सकती हैं. हमें उम्मीद है कि इसे 2.3.0 में नए फ़ोरग्राउंड एपीआई के साथ जोड़ा जाएगा.- WorkManager ��ब
androidx.room:*:2.2.0
स्टेबल वर्शन पर निर्भर करता है.
एपीआई में हुए बदलाव
ForegroundInfo.getNotificationType()
का नाम बदलकरForegroundInfo.getForegroundServiceType()
कर दिया गया है, ताकि यह प्लैटफ़ॉर्म के एपीआई के साथ ज़्यादा मेल खाए. (b/142729893, aosp/1143316)
गड़बड़ियां ठीक की गईं
- हमने एक गड़बड़ी को ठीक किया है. यह गड़बड़ी, लेन-देन के बाहर
setTransactionSuccessful()
को गैर-ज़रूरी कॉल करने की वजह से होती है. ऐसा कभी-कभार होने वाले माइग्रेशन के लिए होता है. (b/142580433, aosp/1141737)
वर्शन 2.3.0-alpha02
9 अक्टूबर, 2019
androidx.work:work-*:2.3.0-alpha02
रिलीज़ हो गया है. वर्शन 2.3.0-alpha02 में ये कमिट शामिल हैं.
नई सुविधाएं
- WorkManager अब लंबे समय तक चलने वाले या ज़रूरी कामों को पूरा करने में मदद करता है. ये ऐसे काम होते हैं जिन्हें ओएस को चालू रखना चाहिए. ज़्यादा जानकारी के लिए,
ListenableWorker#setForegroundAsync()
(या Kotlin के लिएCoroutineWorker#setForeground()
) देखें. (aosp/1133636)
एपीआई में हुए बदलाव
Data
में मौजूदcontainsKey
API का नाम बदलकरhasKeyWithValueOfType
कर दिया गया है.ktx
लाइब्रेरी में मौजूद इससे जुड़े एक्सटेंशन के तरीके का नाम भी बदल दिया गया है. (b/141916545)
गड़बड़ियां ठीक की गईं
- जब
WorkRequest
s को शेड्यूल करने की संख्या, शेड्यूल करने की सीमाओं के करीब पहुंच जाती है, तब WorkManager, काम को सही तरीके से शेड्यूल करता है. (aosp/1105766) - अगर काम पहले से पूरा नहीं हुआ है, तो WorkManager सिर्फ़
ListenableWorker#onStopped()
को कॉल करता है. (b/140055777) - अब WorkManager, वर्कर के रुकने या उसके फ़ाइनल स्टेट पर पहुंचने पर, प्रोग्रेस की जानकारी हटा देता है. (aosp/1114572)
Data
को अब ज़्यादा काम केtoString()
के तौर पर दिखाया गया है. (b/140945323)Data
अबequals()
का बेहतर तरीका उपलब्ध है. यहArray
टाइप के लिए,deepEquals
को भी सपोर्ट करता है. (b/140922528)- WorkManager अब अपने इंटरनल डेटाबेस और प्राथमिकता वाली फ़ाइलों को, नो बैकअप डायरेक्ट्री में सेव करता है. (b/114808216)
वर्शन 2.3.0-alpha01
22 अगस्त, 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
ListenableWorker
अबsetProgressAsync()
API की मदद से, प्रोग्रेस सेट कर सकते हैं. साथ ही,CoroutineWorker
मेंsuspend
-ingsetProgress
API औरRxWorker
मेंsetProgress
जोड़ा गया है, जोSingle<Void>
दिखाता है. इन नए एपीआई की मदद से, वर्करWorkInfo
के ज़रिए काम की प्रोग्रेस की जानकारी दे सकते हैं. इसके लिए,getProgress
एपीआई का इस्तेमाल किया जाता है. (b/79481554)Data
मेंcontainsKey()
एपीआई है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है किWorker
में इनपुट किए गए डेटा में, उम्मीद के मुताबिक टाइप वाली कुंजियां हैं. (b/117136838)- अब
Data
कोData.toByteArray()
औरData.fromByteArray()
का इस्तेमाल करके क्रम से लगाया जा सकता है. ध्यान दें किData
के साथ वर्शनिंग की कोई गारंटी नहीं होती. इसलिए, आपको इसे सेव नहीं करना चाहिए या इसका इस्तेमाल ऐप्लिकेशन के बीच आईपीसी के लिए नहीं करना चाहिए. इनका इस्तेमाल सिर्फ़ एक ही ऐप्लिकेशन की कई प्रोसेस के बीच सुरक्षित तरीके से किया जा सकता है. Configuration.setInputMergerFactory
के ज़रिएInputMergerFactory
तय करने की सुविधा जोड़ी गई. (b/133273159)
एपीआई में हुए बदलाव
- अगर
WorkerFactory
,ListenableWorker
का ऐसा इंस्टेंस दिखाता है जिसे पहले ही शुरू किया जा चुका है, तो WorkManager,IllegalStateException
का इंस्टेंस दिखाएगा. (b/139554406) ListenableWorker
मेंListenableFuture
रद्द करने औरonStopped()
कॉलबैक से जुड़े दस्तावेज़ों को अपडेट किया गया है. (b/138413671)
गड़बड़ियां ठीक की गईं
- प्रोसेस में मौजूद शेड्यूलर अब
idle
की पाबंदी वालेWorkRequest
को अनदेखा करता है. अब इन अनुरोधों को सिर्फ़JobScheduler
तब पिक अप करता है, जब डिवाइसidle
हो. (aosp/1089779) TestScheduler
अब टेस्ट में, अपने इंटरनल टास्क एक्ज़ीक्यूटर के लिए तय किए गएExecutor
का सही तरीके से इस्तेमाल करता है. (aosp/1090749)
वर्शन 2.2.0
वर्शन 2.2.0
15 अगस्त, 2019
androidx.work:work-*:2.2.0
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
यह रिलीज़, androidx.work:work-*:2.2.0-rc01
के जैसी ही है.
2.1.0 से 2.2.0 में हुए अहम बदलाव
androidx.work:work-gcm:2.2.0
एक नया Maven आर्टफ़ैक्ट है. यह 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
एक नया Maven आर्टफ़ैक्ट है. यह 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
ग्रूवी
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
वर्शन 1.0.1
वर्शन 1.0.1
9 अप्रैल, 2019
WorkManager 1.0.1 रिलीज़ किया गया. यह रिलीज़, 1.0.1-rc01 के जैसी है.
कृपया ध्यान दें कि हम उपयोगकर्ताओं को WorkManager 2.x पर अपडेट करने का ज़ोरदार सुझाव देते हैं. ऐसा इसलिए, क्योंकि आने वाले समय में 1.x ब्रांच में बहुत कम अपडेट मिलेंगे. 1.x लाइब्रेरी के लिए नए एपीआई भी रिलीज़ नहीं किए जाएंगे.
वर्शन 1.0.1-rc01
2 अप्रैल, 2019
WorkManager 1.0.1-rc01 रिलीज़ किया गया. इस वर्शन में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- Robolectric टेस्ट अब WorkManager के साथ ठीक से काम करते हैं. b/122553577
- जॉबशेड्यूलर से पहले के एपीआई पर, कंस्ट्रेंट ट्रैकिंग की सुविधा बंद न होने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. b/129226383
- काम की लंबी चेन से जुड़ी
StackOverflowError
समस्या को ठीक किया गया. b/129091233
वर्शन 1.0.0
वर्शन 1.0.0
05 मार्च, 2019
यह WorkManager का 1.0.0 स्टेबल वर्शन है. WorkManager का यह वर्शन, 1.0.0-rc02 वर्शन जैसा ही है.
वर्शन 1.0.0-rc02
21 फ़रवरी, 2019
यह WorkManager के 1.0.0 स्टेबल वर्शन के लिए, दूसरा रिलीज़ कैंडिडेट है. इस रिलीज़ में दो गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
Worker
अब ऐप्लिकेशन बंद होने के बाद,Worker
s को सही तरीके से शेड्यूल किया जाता है. b/124546316Worker
s जो बिना जांच किए गएException
को थ्रो करते हैं उन्हें अबFAILED
के तौर पर सही तरीके से मार्क किया गया है. साथ ही, अब वे ऐप्लिकेशन प्रोसेस को क्रैश नहीं करते हैं.
वर्शन 1.0.0-rc01
14 फ़रवरी, 2019
यह WorkManager के 1.0.0 स्टेबल वर्शन के लिए रिलीज़ कैंडिडेट है. इस रिलीज़ में एक गड़बड़ी ठीक की गई है.
गड़बड़ियां ठीक की गईं
- AlarmManager पर आधारित लागू करने की सुविधा, अब PeriodicWorkRequests के लिए
flex
विंडो का सही तरीके से पालन करती है. b/124274584
वर्शन 1.0.0-beta05
6 फ़रवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
JobScheduler.getPendingJob(...)
का इस्तेमाल API 23 पर किया गया था. b/123893059 - Android 5.1 (एपीआई लेवल 22) या इससे पहले के वर्शन पर चल रहे डिव��इसों पर,
NullPointerException
को ठीक किया गया. b/123835104
वर्शन 1.0.0-beta04
4 फ़रवरी, 2019
��स रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- AlarmManager के आधार पर लागू करने के लिए, PeriodicWork को शेड्यूल करने की सुविधा को बेहतर बनाया गया है.
- उस समस्या को ठीक किया गया है जिसमें AlarmManager पर आधारित सुविधा का इस्तेमाल करते समय, WorkManager सही तरीके से पाबंदियों को ट्रैक नहीं कर पाता था. b/123379508
- AlarmManager पर आधारित सुविधा का इस्तेमाल करते समय, प्रोसेस बंद होने पर WorkManager के काम न करने की समस्या को ठीक किया गया है. b/123329850
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से, AlarmManager पर आधारित सुविधा का इस्तेमाल करते समय, WorkManager के वेकलॉक लीक हो जाते थे.
वर्शन 1.0.0-beta03
25 जनवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- हमने
1.0.0-beta02
में एक रिग्रेशन पेश किया है. इसकी वजह से, कुछ मामलों में काम ठीक से नहीं हो रहा है. b/123211993 - उस समस्या को ठीक किया गया है जिसमें बैकऑफ़ टाइमिंग का सही तरीके से पालन नहीं किया जा रहा था. b/122881597
- Android 5.1 (एपीआई
या) या इससे पहले के वर्शन पर चल रहे डिवाइसों पर
ConcurrentModificationException
ठीक किया गया. यह1.0.0-beta02
में किए गए सुधार का ही एक हिस्सा है. b/121345393 - हमने अपने मेनिफ़ेस्ट में मौजूद कुछ कॉम्पोनेंट के लिए
exported=false
जोड़ा है. इन कॉम्पोनेंट में यह एनोटेशन मौजूद नहीं था. - पैकेज-लेवल के दस्तावेज़ में, इस बारे में जानकारी शामिल की गई है कि WorkManager, ओएस के साथ कैसे इंटरैक्ट करता है.
वर्शन 1.0.0-beta02
15 जनवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- एक ऐसे मामले को ठीक किया गया है जिसमें Android 6.0 (एपीआई लेवल 23) पर चलने वाले डिवाइसों पर, तय समय पर होने वाला काम हर इंटरवल में एक से ज़्यादा बार चल सकता था. b/121998363
- Android 5.1 (एपीआई लेवल 22) या इससे पहले के वर्शन पर चल रहे डिवाइसों पर
ConcurrentModificationException
को ठीक किया गया. b/121345393 - Android 5.1 (एपीआई लेवल 22) या इससे पहले के वर्शन पर चल रहे डिवाइसों पर, ज़रूरी शर्तें पूरी न होने पर काम के गलत तरीके से लागू होने की समस्या ठीक की गई है. b/122578012
- कुछ खास मामलों में, काम को तेज़ी से पूरा करने के लिए ऑप्टिमाइज़ किया गया. b/122358129
LiveData
के कई इंस्टेंस के बीच रेस की संभावित स्थितियों को ठीक करने के लिए बदलाव किया गया है. इनका इस्तेमाल WorkManager करता है.1.1.1-rc01
के बजायRoom
डिपेंडेंसी1.1.1
का इस्तेमाल किया गया; ये वर्शन एक जैसे ��ैं. b/122578011
वर्शन 1.0.0-beta01
19 दिसंबर, 2018
इस रिलीज़ में एपीआई में कोई बदलाव नहीं किया गया है. आने वाले समय में, WorkManager के एपीआई में कोई बदलाव नहीं किया जाएगा. हालांकि, अगर कोई गंभीर समस्या आती है, तो अगले वर्शन में बदलाव किया जा सकता है. इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- माता-पिता के तौर पर किए गए काम के लिए, पहले रद्द किए गए बच्चों के टास्क अब नहीं चलेंगे. b/120811767
- लॉगिंग क्लास को सही तरीके से शुरू किया गया हो. ये मुख्य रूप से टेस्ट के दौरान दिखती हैं.
वर्शन 1.0.0-alpha13
12 दिसंबर, 2018
इस रिलीज़ में एपीआई में एक छोटा सा बदलाव किया गया है. यह बदलाव, Kotlin का इस्तेमाल करने वाले कुछ लोगों के लिए मददगार होगा.
एपीआई में हुए बदलाव
androidx.work.Result
कोListenableWorker
की इनर क्लास के तौर पर ले जाया गया है. इससे रिफ़ैक्टरिंग के दौरान, Kotlin की टॉप-लेवलResult
क्लास के साथ होने वाले टकराव को रोका जा सकता है. यह एपीआई में किया गया एक बड़ा बदलाव है. b/120564418
एपीआई में बड़े बदलाव
androidx.work.Result
कोListenableWorker
की इनर क्लास के तौर पर ले जाया गया है.
वर्शन 1.0.0-alpha12
5 दिसंबर, 2018
इस रिलीज़ में, एपीआई में कुछ ऐसे बदलाव किए गए हैं जिनसे मौजूदा कोड पर असर पड़ सकता है. कृपया नीचे दिया गया एपीआई में ऐसे बदलाव जिनसे मौजूदा कोड पर असर पड़ सकता है सेक्शन देखें. इस वर्शन को हमारे पहले बीटा वर्शन के तौर पर रिलीज़ किया जा सकता है. alpha12
में, दस्तावेज़ से जुड़े अपडेट भी शामिल हैं.
एपीआई में हुए बदलाव
work-rxjava2
नाम के नए आर्टफ़ैक्ट मेंRxWorker
की सुविधा जोड़ी गई है. यह एकListenableWorker
है, जिसमेंSingle<Payload>
की ज़रूरत होती है.- Firebase JobDispatcher के लिए सहायता हटा दी गई है, क्योंकि इसे बंद किया जा रहा है. इसका मतलब है कि बीटा वर्शन लॉन्च होने के बाद,
work-firebase
आर्टफ़ैक्ट को अपडेट नहीं किया जाएगा. हम आने वाले समय में, कोई दूसरा विकल्प जोड़ने पर विचार करेंगे. Payload
कोResult
में मर्ज किया गया.Result
अब एक "सील्ड क्लास" है. इसमें तीन कॉन्क्रीट इं��्लीमेंटेशन हैं. इन्हेंResult.success()
(याResult.success(Data)
),Result.failure()
(याResult.failure(Data)
), औरResult.retry()
के ज़रिए हासिल किया जा सकता है. अब आपकेListenableFuture
का नतीजाPayload
के बजायResult
दिखता है.Worker
के पास, आउटपुटData
के लिए getter और setter तरीके नहीं हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.- कॉन्टेंट यूआरआई को धीरे-धीरे ट्रिगर करने की सुविधा को बेहतर तरीके से काम करने में मदद करने के लिए,
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
औरConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
और उनके वैरिएंट जोड़े गए हैं. b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
वैरिएंट जोड़ा गया. इस तरीके के लिए API 26 ज़रूरी है.Operation.await()
औरListenableFuture.await()
Kotlin एक्सटेंशन के तरीके जोड़े गए.Operation.getException()
का नाम बदलकरOperation.getThrowable()
कर दिया गया. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.ContentUriTriggers
क्लास और इसे रेफ़र करने वाले तरीके, अब सार्वजनिक तौर पर इस्तेमाल नहीं किए जा सकते. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.- एपीआई को बेहतर बनाने के लिए,
WorkManager
,WorkContinuation
, औरOneTimeWorkRequest
में मौजूद बाकी सभी varargs तरीकों को हटा दिया गया है. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा varargs कोArrays.asList(...)
के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. WorkContinuation.combine(OneTimeWorkRequest, *)
वैरिएंट हटा दिए गए. वे एक ऐसा एपीआई पेश कर रहे थे जिसे समझना मुश्किल था. मौजूदाcombine
तरीके ज़्यादा आसानी से समझ में आते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.
गड़बड़ियां ठीक की गईं
- मार्शमैलो से पहले के वर्शन में, पहले से चल रहे टास्क की प्रोसेस बंद होने पर, उसे फिर से शुरू करना अब ज़्यादा भरोसेमंद है.
LiveData
कोobserveForever
के ज़रिए ट्रैक किया जाता है. इसे WorkManager के ज़रिए ट्रैक किया जाता है. यह Room ��ाइब्रेरी ��ें मौजूद समस्या को ठीक करने के लिए, बैकपोर्ट किया गया एक वर्शन है. b/74477406- अगर क्रम से लगाए गए ऑब्जेक्ट का साइज़ तय सीमा से ज़्यादा है, तो
Data.Builder.build()
अब एक अपवाद दिखाता है. पहले, ऐसा सिर्फ़ बैकग्राउंड थ्रेड पर होता था, जहां इसे ठीक से मैनेज नहीं किया जा सकता था. - इसके अलावा, काम बंद होने और रद्द होने के बीच अंतर किया गया है.
getWorkInfoById()
,ListenableWorker.onStopped()
के दौरानCANCELLED
State
के साथWorkInfo
दिखाएगा. ListenableWorker
में,null
Result
को गड़बड़ियों के तौर पर दिखाएं. b/120362353- API 24 पर चलने वाले Shield Tablet के लिए, अनुमान के आधार पर गड़बड़ी ठीक की गई है. इससे कभी-कभी
IllegalArgumentException
की समस्या होती थी. b/119484416
एपीआई में बड़े बदलाव
- Firebase JobDispatcher के लिए सहायता हटा दी गई है, क्योंकि इसे बंद किया जा रहा है. इसका मतलब है कि बीटा वर्शन लॉन्च होने के बाद,
work-firebase
आर्टफ़ैक्ट को अपडेट नहीं किया जाएगा. हम आने वाले समय में, कोई दूसरा विकल्प जोड़ने पर विचार करेंगे. Payload
कोResult
में मर्ज किया गया.Result
अब एक "सील्ड क्लास" है. इसमें तीन कॉन्क्रीट इंप्लीमेंटेशन हैं. इन्हेंResult.success()
(याResult.success(Data)
),Result.failure()
(याResult.failure(Data)
), औरResult.retry()
के ज़रिए हासिल किया जा सकता है. अब आपकेListenableFuture
का नतीजाPayload
के बजायResult
दिखता है.Worker
के पास, आउटपुटData
के लिए getter और setter तरीके नहीं हैं.Operation.await()
औरListenableFuture.await()
Kotlin एक्सटेंशन के तरीके जोड़े गए.Operation.getException()
का नाम बदलकरOperation.getThrowable()
कर दिया गया.ContentUriTriggers
क्लास और इसे रेफ़र करने वाले तरीके, अब सार्वजनिक तौर पर इस्तेमाल नहीं किए जा सकते.- एपीआई को बेहतर बनाने के लिए,
WorkManager
,WorkContinuation
, औरOneTimeWorkRequest
में मौजूद बाकी सभी varargs तरीकों को हटा दिया गया है. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा varargs कोArrays.asList(...)
के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं. WorkContinuation.combine(OneTimeWorkRequest, *)
वैरिएंट हटा दिए गए. वे एक ऐसा एपीआई पेश कर रहे थे जिसे समझना मुश्किल था. मौजूदाcombine
तरीके ज़्यादा आसानी से समझ में आते हैं.
वर्शन 1.0.0-alpha11
8 नवंबर, 2018
इस रिलीज़ में कई बदलाव किए गए हैं. ये beta
को स्टेबल एपीआई बन जाएंगे.
इस रिलीज़ में, एपीआई में नुकसान पहुंचा सकने वाले बदलाव किए गए हैं. कृपया यहां दिया गया एपीआई में नुकसान पहुंचा सकने वाले बदलाव सेक्शन देखें.
एपीआई में हुए बदलाव
work-runtime-ktx
ने नयाCoroutineWorker
लॉन्च किया है.WorkStatus
का नाम बदलकरWorkInfo
कर दिया गया है.getStatus
तरीके के सभी मिलते-जुलते वैरिएंट का नाम बदलकर,getWorkInfo
तरीके के मिलते-जुलते वैरिएंट कर दिया गया है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.ListenableWorker.onStopped()
अब एक बूलियन आर्ग्युमेंट स्वीकार करता है. यह बताता है किWorkRequest
रद्द किया गया था या नहीं.WorkManager
अब इस तरह का अंतर नहीं करता है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.androidx.work.test
पैकेज का नाम बदलकरandroidx.work.testing
पैकेज कर दिया गया है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.Constraints
पर मौजूद सेटर अब सार्वजनिक एपीआई का हिस्सा नहीं हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.WorkerParameters.getTriggeredContentUris()
औरWorkerParameters.getTriggeredContentAuthorities()
ने पहले ऐरे दिखाए थे. अब ये तरीके, कलेक्शन दिखाते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.ListenableWorker.onStartWork()
का नाम बदलकरListenableWorker.startWork()
कर दिया गया है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.WorkStatus
के लिए कंस्ट्रक्टर अब सार्वजनिक एपीआई का हिस्सा नहीं है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.Configuration.getMaxJobSchedulerID()
औरConfiguration.getMinJobSchedulerID()
का नाम बदलकर,Configuration.getMinJobSchedulerId()
औरConfiguration.getMaxJobSchedulerId()
कर दिया गया है. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.- एपीआई के इस्तेमाल को आसान बनाने के लिए, सार्वजनिक एपीआई में कई
@NonNull
एनोटेशन जोड़े गए हैं. WorkContinuation
बनाए बिना, यूनीकOneTimeWorkRequest
को कतार में लगाने के लिए,WorkManager.enqueueUniqueWork()
एपीआई जोड़ें.WorkManager
पर मौजूदenqueue
औरcancel
तरीकों के सभी वैरिएंट, अब नयाOperation
टाइप दिखाते हैं. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.enqueue
के सभी वैरिएंट, अबWorkRequest
के लिए varargs स्वीकार नहीं करते. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. इसके बजाय, Collections का इस्तेमाल करें. मौजूदा कोड में बदलाव करने के लिए,Arrays.asList()
का इस्तेमाल किया जा सकता है. हमने ऐसा एपीआई के इस्तेमाल को कम करने और तरीकों की संख्या को कम करने के लिए किया है.- अब एक प्रोसेस में एक से ज़्यादा बार
initialize
WorkManager
करने पर,IllegalStateException
दिखेगा. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा.
गड़बड़ियां ठीक की गईं
work-runtime-ktx
आर्टफ़ैक्ट में मौजूदWorkRequest.Builder
अबListenableWorker
का इस्तेमाल करते हैं. b/117666259 को ठीक किया गया- पक्का करें कि
PeriodicWork
के लिए, अगला रन टाइम आने वाले समय का हो. b/118204399 को ठीक किया गया - ऐप्लिकेशन के स्टार्टअप पर WorkManager का इस्तेमाल करते समय, डिस्क I/O को हटाएं. b/117796731 को ठीक किया गया
WorkConstraintsTracker
में रेस कंडीशन की समस्या ठीक की गई. android-workmanager/issues/56 को ठीक किया गया
एपीआई में बड़े बदलाव
WorkStatus
का नाम बदलकरWorkInfo
कर दिया गया है.getStatus
तरीके के सभी मिलते-जुलते वैरिएंट का नाम बदलकर,getWorkInfo
तरीके के मिलते-जुलते वैरिएंट कर दिया गया है.ListenableWorker.onStopped()
अब एक बूलियन आर्ग्युमेंट स्वीकार करता है. यह बताता है किWorkRequest
रद्द किया गया था या नहीं.WorkManager
अब इस तरह का अंतर नहीं करता है.androidx.work.test
पैकेज का नाम बदलकरandroidx.work.testing
पैकेज कर दिया गया है.Constraints
पर मौजूद सेटर अब सार्वजनिक एपीआई का हिस्सा नहीं हैं.WorkerParameters.getTriggeredContentUris()
औरWorkerParameters.getTriggeredContentAuthorities()
ने पहले ऐरे दिखाए थे. अब ये तरीके, कलेक्शन दिखाते हैं.ListenableWorker.onStartWork()
का नाम बदलकरListenableWorker.startWork()
कर दिया गया है.WorkStatus
के लिए कंस्ट्रक्टर अब सार्वजनिक एपीआई का हिस्सा नहीं है.Configuration.getMaxJobSchedulerID()
औरConfiguration.getMinJobSchedulerID()
का नाम बदलकर,Configuration.getMinJobSchedulerId()
औरConfiguration.getMaxJobSchedulerId()
कर दिया गया है.WorkManager
पर मौजूदenqueue
औरcancel
तरीकों के सभी वैरिएंट, अब नयाOperation
टाइप दिखाते हैं.enqueue
के सभी वैरिएंट, अबWorkRequest
के लिए varargs स्वीकार नहीं करते.- अब एक प्रोसेस में एक से ज़्यादा बार
initialize
WorkManager
करने पर,IllegalStateException
दिखेगा.
वर्शन 1.0.0-alpha10
11 अक्टूबर, 2018
इस रिलीज़ में, डेवलपर के कंट्रोल में एसिंक्रोनस तरीके से काम करने की सुविधा उपलब्ध है. इस रिलीज़ में, एपीआई में नुकसान पहुंचा सकने वाले बदलाव किए गए हैं. कृपया यहां दिया गया एपीआई में नुकसान पहुंचा सकने वाले बदलाव सेक्शन देखें.
हमारा अनुमान है कि WorkManager, ऐल्फ़ा पीरियड के आखिरी चरणों में पहुंच रहा है. हमारा मानना है कि बीटा वर्शन में एपीआई स्टेबल होगा. इसलिए, कृपया हमारी समस्या ट्रैकर पर जाकर, अपने सुझाव/राय दें या शिकायत करें.
एपीआई में हुए बदलाव
- पहले से मौजूद सभी
deprecated
तरीकों और क्लास को हटा दिया गया है. खास तौर पर, डिफ़ॉल्टWorker
कंस्ट्रक्टर को. यह एपीआई में किया गया ऐसा बदलाव है जिससे मौजूदा सिस्टम पर असर पड़ सकता है. NonBlockingWorker
का नाम बदलकरListenableWorker
कर दिया गया है. यह अब सार्वजनिक तौर पर उपलब्ध है और इसका इस्तेमाल किया जा सकता है.ListenableWorker
एक ऐब्स्ट्रैक्ट तरीके का ऐक्सेस देता है,ListenableFuture<Payload> onStartWork()
जिसे मुख्य थ्रेड पर कॉल किया जाता है. एसिंक्रोनस तरीके से काम शुरू करने और उसे प्रोसेस करने का फ़ैसला आपका होता है. जब यह प्रोसेस पूरी हो जाए, तब आपकोListenableFuture
को सही तरीके से अपडेट करना होगा.ListenableFuture
के रेफ़रंस इंप्लिमेंटेशन,alpha02
मेंFutures
पैकेज में दिए गए हैं.WorkManager
सेक्शन के नीचे देखें.Worker
,ListenableWorker
को बढ़ाता है और अब भी पहले की तरह काम करता है. इसमें एक ऐब्स्ट्रैक्टResult doWork()
तरीका होता है.Worker
से कुछ तरीकों और सदस्यों कोListenableWorker
में शफ़ल किया गया.- हम जल्द ही
ListenableWorker
के लिए, रेफ़रंस के तौर पर लागू किए गए उदाहरण उपलब्ध कराएंगे. ये उदाहरण, Kotlin कोरूटीन (स्टेबल वर्शन रिलीज़ होने के बाद) और RxJava2 का इस्तेमाल करते हैं.
- इंटरफ़ेस
WorkerFactory
और कॉन्क्रीट इंप्लीमेंटेशनDefaultWorkerFactory
कोWorkerFactory
नाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है. इस सुविधा को लागू करने से यह पक्का होता है कि उपयोगकर्ता के बनाए गए क��सी भीWorkerFactory
इंस्टेंस के लिए, डिफ़ॉल्ट रिफ़्लेक्शन-आधारित व्यवहार को आखिरी विकल्प के तौर पर कॉल किया जाए. यह एक ऐसा बदलाव है जिससे आपकी मौजूदा सेटिंग पर असर पड़ेगा. WorkManager.synchronous()
,WorkContinuation.synchronous()
, और इनसे जुड़े सभी तरीके हटा दिए गए हैं. एपीआई में कई तरीकों के लिए,ListenableFuture<Void>
को रिटर्न टाइप के तौर पर जोड़ा गया है. यह एपीआई में किया गया ऐसा बदलाव है जिससे मौजूदा सिस्टम पर असर पड़ सकता है.- अब
ListenableFuture
का इस्तेमाल करके, डेटा को एक साथ पाया और देखा जा सकता है. उदाहरण के लिए,WorkManager.enqueue()
से पहलेvoid
मिलता था. अब इससेListenableFuture<Void>
मिलता है. ऑपरेशन पूरा होने के बाद, कोड चलाने के लिएListenableFuture.addListener(Runnable, Executor)
याListenableFuture.get()
को कॉल किया जा सकता है. - ध्यान दें कि इन
ListenableFuture
से यह पता नहीं चलता कि ऑपरेशन पूरा हुआ या नहीं. इनसे सिर्फ़ यह पता चलता है कि ऑपरेशन पूरा हो गया है. हालांकि, यह जानकारी पाने के लिए, आपको अब भी WorkManager के तरीकों को चेन करना होगा. - हम इन ऑब्जेक्ट पर
cancel()
कॉल को अनदेखा करते हैं, क्योंकि ये भ्रमित करने वाले होते हैं और इनके बारे में तर्क देना मुश्किल होता है (क्या आपको ऑपरेशन या उसके नतीजे को रद्द करना है?). यहFuture
के समझौते के तहत आता है. - सिंक्रोनस
getStatus*
तरीकों के साथ समानता बनाए रखने के लिए, हमनेListenableFuture
वैरिएंट उपलब्ध कराए हैं. साथ ही,LiveData
दिखाने वाले मौजूदा वैरिएंट के नाम बदल दिए हैं, ताकि नाम में "LiveData" शामिल हो (उदाहरण के लिए,getStatusesByIdLiveData(UUID)
). यह एपीआई में किया गया एक बड़ा बदलाव है.
- अब
गड़बड़ियां ठीक की गईं
- डुप्लीकेट
androidx-annotations.pro
फ़ाइलों से जुड़ी, alpha09 की जानी-मानी समस्या को ठीक किया गया है. अपनी Gradle फ़ाइल सेexclude 'META-INF/proguard/androidx-annotations.pro'
को मिटाकर, पिछली रिलीज़ के नोट से वर्कअराउंड हटाया जा सकता है. - proguard कॉन्फ़िगरेशन जोड़े गए, ताकि नए
Worker
कंस्ट्रक्टर को बनाए रखा जा सके. b/116296569 - रेस कंडीशन में संभावित
NullPointerException
को ठीक किया गया है, जहां कामREPLACE
d था. b/116253486 और b/116677275 WorkContinuation.combine()
अब दो या उससे ज़्यादा के बजाय, एक या उससे ज़्यादाWorkContinuation
स्वीकार करता है. b/117266752
एपीआई में बड़े बदलाव
- पहले से मौजूद सभी
deprecated
तरीकों और क्लास को हटा दिया गया है. खास तौर पर, डिफ़ॉल्टWorker
कंस्ट्रक्टर को. - इंटरफ़ेस
WorkerFactory
और कॉन्क्रीट इंप्लीमेंटेशनDefaultWorkerFactory
कोWorkerFactory
नाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है. WorkManager.synchronous()
औरWorkContinuation.synchronous()
को हटाया गया.WorkManager.getStatus*()
तरीके अबListenableFuture
दिखाते हैं.WorkManager.getStatus*LiveData()
LiveData
लौटाए गए.
वर्शन 1.0.0-alpha09
19 सितंबर, 2018
आम समस्या
अगर आपको यह समस्या आ रही है: "OS independent path 'META-INF/proguard/androidx-annotations.pro' वाली एक से ज़्यादा फ़ाइलें मिलीं", तो कृपया इस समस्या को हल करने के लिए, यहां दिया गया कोड अपनी gradle फ़ाइल में डालें. हम alpha10 में इस समस्या को ठीक कर रहे हैं:
ग्रूवी
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
के डुप्लीकेट कॉन्टेंट को हटाने से जुड़ी संभावित समस्या को ठीक किया गया है.
एपीआई में हुए बदलाव
- अब रनटाइम के दौरान,
WorkManager.Configuration
के हिस्से के तौर परWorkerFactory
तय करके, अपनेWorker
इंस्टेंस बनाए जा सकते हैं. फ़ॉलबैक फ़ैक्ट्री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 केबी है.JobScheduler
की ज़्यादा से ज़्यादा वैल्यू को 50 से घटाकर 50 कर दिया गया है, ताकिJobScheduler
की प्रोसेसिंग पूरी होने में लगने वाले कुछ समय को ध्यान में रखा जा सके. b/112817355Configuration.setMaxSchedulerLimit(int)
वर्शन 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
का इस्तेमाल करके लागू करने पर, अबPeriodicWorkRequest
को सही तरीके से फिर से शेड्यूल किया जाता है.AlarmManager
- ज़बरदस्ती बंद करने या रीबूट करने के बाद, सभी वर्कर को फिर से शेड्यूल करते समय होने वाली संभावित एएनआर की समस्या को ठीक किया गया है. b/110507716
- WorkManager के अलग-अलग एपीआई में, नल वैल्यू की अनुमति देने वाले एनोटेशन जोड़े गए हैं. b/110344065
- Worker के एक्ज़ीक्यूशन के दौरान होने वाले ऐसे अपवाद लॉग करें जिनकी पहचान नहीं हुई है. b/109900862
- अगर आपको WorkManager के पुराने वर्शन पर वापस जाना है, तो डेटाबेस को मिटाकर माइग्रेट करने की अनुमति दी गई है. b/74633270
- डुप्लीकेट इंप्लिसिट टैग बनाते समय, माइग्रेशन क्रैश होने की समस्या को ठीक किया गया है. यह समस्या बहुत कम होती है. यह सिर्फ़ तब होती है, जब आपने खुद ही एक जैसा इंप्लिसिट टैग फ़ॉर्मैट इस्तेमाल किया हो.
वर्शन 1.0.0-alpha03
19 जून, 2018
गड़बड़ियां ठीक की गईं
AlarmManager
के आधार पर लागू किए गए सिस्टम में रेस कंडीशन की समस्या ठीक की गई. b/80346526.डिवाइस को फिर से चालू करने के बाद,
JobScheduler
का इस्तेमाल करते समय डुप्लीकेट जॉब की समस्या ठीक की गई.कॉन्टेंट यूआरआई ट्रिगर करने वाली नौकरियां, अब रीबूट करने पर भी बनी ��हती हैं. b/80234744
दस्तावेज़ से जुड़े अपडेट. b/109827628, b/109758949, b/80230748
WorkRequest
को फिर से कतार में लगाते समय क्रैश होने की समस्या को ठीक किया गया है. b/109572353.work-runtime-ktx
डिपेंडेंसी का इस्तेमाल करते समय, Kotlin कंपाइलर की चेतावनियों से जुड़ी समस्या ठीक की गई.WorkManager अब
Room
के1.1.1-rc1
वर्शन का इस्तेमाल करता है.
एपीआई में हुए बदलाव
WorkContinuation.getStatuses()
के सिंक्रोनस वर्शनgetStatusesSync()
को जोड़ा गया.Worker
में, उपयोगकर्ता की ओर से रद्द किए गए अनुरोध और ओएस की ओर से अस्थायी तौर पर रोके गए अनुरोध के बीच अंतर करने की सुविधा है. अगर किसी तरह के स्टॉप का ��नुरोध किया गया है, तोWorker.isStopped()
,true
दिखाता है. अगर काम को साफ़ तौर पर रद्द कर दिया गया है, तोWorker.isCancelled()
true
दिखाता है. b/79632247- एपीआई 28 पर JobParameters#getNetwork() के लिए सहायता जोड़ी गई. इसे
Worker.getNetwork()
के ज़रिए दिखाया जाता है. Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
जोड़ा गया है, ताकि यह तय किया जा सके किJobScheduler
याAlarmManager
को कितनी नौकरियां भेजी जा सकती हैं. इससेWorkManager
को आपके सभी उपलब्धJobScheduler
स्लॉट लेने से रोकने में मदद मिलती है.Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
जोड़ा गया. इससेJobScheduler
जॉब आईडी की ऐसी रेंज तय करने में मदद मिलती है जिसेWorkManager
इस्तेमाल कर सकता है. b/79996760Worker.getRunAttemptCount()
, किसी दिए गएWorker
के लिए मौजूदा रन की संख्या दिखाता है. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
की मदद से, यूनीकPeriodicWorkRequest
को कतार में लगाया जा सकता है. b/79600647WorkManager.cancelAllWork()
सभीWorker
को रद्द कर देता है.WorkManager
पर निर्भर रहने वाली लाइब्रेरी, यह क्वेरी कर सकती हैं कि इस त��ीके को आखिरी बार कब कॉल किया गया था. इसके लिए, वेWorkManager.getLastCancelAllTimeMillis()
का इस्तेमाल कर सकती हैं, ताकि अंदरूनी स्थिति को और बेहतर तरीके से साफ़ किया जा सके.- पूरे हो चुके जॉब को इंटरनल डेटाबेस से हटाने के लिए,
WorkManager.pruneWork()
जोड़ा गया. b/79950952, b/109710758
व्यवहार में बदलाव
- सभी
WorkRequest
के लिए, एक इंप्लिसिट टैग जोड़ा गया है. यहWorker
के लिए पूरी तरह से क्वालिफ़ाइड क्लास का नाम है. इससे,tag
के बिना याid
उपलब्ध न होने पर,WorkRequest
हटाने की सुविधा मिलती है. b/109572351
नुकसान पहुंचा सकने वाले बदलाव
Worker.WorkerResult
का नाम बदलकरWorker.Result
कर दिया गया.Worker.onStopped
में अब एक अतिरिक्तisCancelled
पैरामीटर है. इसेtrue
पर तब सेट किया जाता है, जबWorker
को साफ़ तौर पर रद्द कर दिया गया हो.
वर्शन 1.0.0-alpha02
24 मई, 2018
गड़बड़ियां ठीक की गईं
State.isFinished()
कोNullPointerException
ठीक किया गया. b/79550068- उस समस्या को ठीक कर दिया गया है जिसकी वजह से
Worker
कोApplication.onCreate()
पर फिर से शेड्यूल किया जा रहा था. b/79660657 - उस समस्या को ठीक कर दिया गया है जिसमें ओएस की अनुमति से ज़्यादा काम शेड्यूल किया जा सकता था. b/79497378
Worker
से जुड़े वेक लॉक को हटाने की प्रोसेस को बैकग्राउंड थ्रेड में ले जाया गया.AlarmManager
लागू करने की प्रोसेस अब सही तरीके से बंद हो जाती है. ऐसा तब होता है, जब सभी काम पूरे हो जाते हैं.- सफ़ाई करने वाली एसक्यूएल क्वेरी से जुड़ी समस्या ठीक की गई. इससे अंग्रेज़ी के अलावा अन्य भाषाओं में उपलब्ध स्थानीय सेटिंग पर असर पड़ रहा था. b/80065360
Data
मेंfloat
के लिए सहायता जोड़ी गई. b/79443878Data.Builder.putAll()
अबBuilder
का इंस्टेंस दिखाता है. b/79699162- दस्तावेज़ में ज़्यादा javadoc और सुधार किए गए हैं. b/79691663
एपीआई में हुए बदलाव
Worker
s को बंद किए जाने पर प्रतिक्रिया ��िल सकती है.Worker.isStopped()
का इस्तेमाल यह देखने के लिए किया जा सकता है किWorker
को रोक दिया गया है या नहीं.Worker.onStopped()
का इस्तेमाल, डेटा को कुछ हद तक साफ़ करने के लिए किया जा सकता है.Worker.getTags()
API,Worker
से जुड़े टैग काSet
दिखाता है.- ऐसे एपीआई के लिए
javax.time.Duration
ओवरलोड जोड़े गए हैं जो अवधि और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
है.