WorkManager
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
30 अक्टूबर, 2024 | 2.10.0 | - | - | - |
डिपेंडेंसी का एलान करना
WorkManager पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़ना होगा:
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (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 को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं को देखें. किसी मौजूदा समस्या पर अपना वोट जोड़ने के लिए, स्टार बटन पर क्लिक करें.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 2.10
वर्शन 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()
को कॉल न करने पर, ANR होने की समस्या को ठीक करें. यह सुधार सिर्फ़ एपीआई 34 और 35 वाले डिवाइसों पर लागू होता है, जहां फ़ोरग्राउंड सेवा के टाइप को लॉन्च किया गया था. (ca06b2, b/364508145) - नए
WorkerParameters
एपीआई, जिनकी मदद से उस रिमोट प्रोसेस को स्विच किया जा सकता है जिससेWorker
,WorkerFactory
का इस्तेमाल करते समय बंधा होता है. (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)- वर्कर्स के लिए कस्टम अपवाद हैंडलर जोड़ना (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
औरPeriodicWorkRequest.Builder
को अबClass
के बजायKClass
से बनाया जा सकता है:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)WorkManager
क्लास को Kotlin में माइग्रेट किया गया. अबLiveData
,ListenableFuture
याFlow
दिखाने वाले तरीके, वैल्यू के लिए शून्य होने की सही जानकारी देते हैं. अगर उस कोड में, वैल्यू न होने की संभावना के बारे में गलत अनुमान लगाए गए थे, तो क्लाइंट के सोर्स कोड में बदलाव करने पड़ सकते हैं. (If6757)
वर्शन 2.10.0-alpha01
24 जनवरी, 2024
androidx.work:work-*:2.10.0-alpha01
रिलीज़ हो गया है. 2.10.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- डेवलपर,
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
-s की मदद से निगरानी करना.LiveData
के बजाय, अबWorkManager.getWorkInfosFlow
और इससे मिलते-जुलते तरीकों से, फ़्लो की मदद से वर्कर्स की प्रोग्रेस देखी जा सकती है.- अब
WorkManager
, इस बात का संकेत देता है कि किसी कर्मचारी को पहले क्यों रोका गया था.getStopReason()
तरीके से, वर्कफ़्लो के अंदर मौजूद वर्कर्स से याgetStopReason()
तरीके से,WorkInfo
से क्वेरी की जा सकती है. setNextScheduleTimeOverride
की मदद से, समय-समय पर काम करने वाले कर्मचारियों के लिए सटीक शेड्यूल तय करना. इससे, अगले समय-समय पर होने वाले काम के शेड्यूल की डाइनैमिक कैलकुलेशन की जा सकती है. इसका इस्तेमाल, बेहतर सुविधाओं को लागू करने के लिए किया जा सकता है. जैसे, अडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राइ करने का तरीका या उपयोगकर्ता के हर सुबह जागने से पहले, न्यूज़फ़ीड वर्कर्स को बिना किसी रुकावट के चलाना. अगले वर्कर को शेड्यूल करते समय, किसी मौजूदा वर्कर को रद्द होने से बचाने के लिए,ExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल इन तकनीकों के साथ किया जाना चाहिए.- प्रोडक्शन के हिसाब से थ्रेडिंग की सुविधा के साथ, WorkManager की टेस्टिंग.
Configuration
में सेट किए गए एक्ज़ीक्यूटर को बनाए रखने और असली मुख्य थ्रेड का इस्तेमाल करने के लिए,initializeTestWorkManager
मेंExecutorsMode.PRESERVE_EXECUTORS
का इस्तेमाल किया जा सकता है. 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 से जुड़ी अन्य सुविधाएं अब मुख्य वर्क-रनटाइम आर्टफ़ैक्ट में उपलब्ध हैं. (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()
तरीके से, वर्कफ़्लो के अंदर मौजूद किसी वर्कर से याgetStopReason()
तरीके से,WorkInfo
से क्वेरी की जा सकती है.
एपीआई में हुए बदलाव
stopReason
कोWorkInfo
में जोड़ा गया था. यह वर्कर के चलने के बाद,stopReason
उपलब्ध कराता है. यहstopReason
को इस्तेमाल करने के तरीके की रिपोर्टिंग में मददगार हो सकता है, क्योंकि किसी वर्कर्स को बंद करने के बाद, ऐप्लिकेशन को तुरंत बंद किया जा सकता है. (I21386)- कॉन्फ़िगरेशन की मदद से क्लॉक सेट करने की अनुमति दें. साथ ही, इसका इस्तेमाल करके वर्कर्स टेस्ट के क्रम को चलाया जा सकता है. (Ic586e)
getStopReason()
कोListenableWorker
में जोड़ा गया है. इससे यह पता चलता है कि वर्कफ़्लो को क्यों रोका गया था. (I07060)- लीक हुए संसाधनों के बारे में Closeguard की चेतावनी से बचने के लिए,
WorkManagerTestInitHelper#closeWorkDatabase()
जोड़ा गया. (Ia8d49)
गड़बड़ियां ठीक की गईं
TestDriver
का इस्तेमाल करकेoverrideNextScheduleTime
को बायपास करने की सुविधा जोड़ी गई. साथ ही, जांच करने से जुड़ी समस्याओं को ठीक किया गया. (Ic2905)
वर्शन 2.9.0-alpha01
7 जून, 2023
androidx.work:work-*:2.9.0-alpha01
रिलीज़ हो गया है. 2.9.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
Flow
-s के ज़रिए निगरानी करना.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
में ANR की समस्या को ठीक किया गया है. इससे पहले, एक साथ दो ब्रॉडकास्ट को ठीक से मैनेज नहीं किया जा सकता था. (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
से मिलता-जुलता है, लेकिन यह कम रुकावट डालता है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता और यह सूची में जोड़ने में लगने वाले समय को सेव रखता है - शुरुआती देरी और अवधि का हिसाब, अपडेट करने के समय के बजाय, सूची में जोड़ने के मूल समय से लगाया जाता है.REPLACE
औरUPDATE
, दोनों के नाम काफ़ी मिलते-जुलते हैं. इसलिए, इन दोनों के बीच भ्रम की स्थिति को कम करने के लिए,REPLACE
को बंद कर दिया गया है. अगर आपको अब भीREPLACE
के पिछले सेमेटिक्स को बनाए रखना है, तोREPLACE
से मिलते-जुलते नएCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. (I985ed, b/219446409)- setSchedulingExceptionHandler की मदद से
Consumer<Throwable>
उपलब्ध कराकर, शेड्यूल से जुड़े अपवादों को इंटरसेप्ट करने की सुविधा जोड़ी गई) - setInitializationExceptionHandler की मदद से
Consumer<Throwable>
देने की सुविधा जोड़ी गई है. इससे यह पता लगाया जा सकता है कि WorkManager को शुरू करने के दौरान कोई समस्या आई थी या नहीं. 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
के बजाय किया जा सकता है, जो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 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
WorkInfo
मेंequals
का तरीका ठीक किया गया है. पहले यह तरीका, नई जनरेशन की जानकारी को ध्यान में नहीं रखता था. (4977cc)
वर्शन 2.8.0-beta01
5 अक्टूबर, 2022
androidx.work:work-*:2.8.0-beta01
रिलीज़ हो गया है. 2.8.0-beta01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- 'ज़्यादा वर्कर इस्तेमाल करने की सुविधा' से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, लोड होने पर वर्कर तुरंत नहीं चल पाते थे. (I9686b, b/248111307)
वर्शन 2.8.0-alpha04
7 सितंबर, 2022
androidx.work:work-*:2.8.0-alpha04
रिलीज़ हो गया है. 2.8.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
WorkerInfo.getGeneration()
औरWorkerParameters.getGeneration()
जोड़े गए हैं, जो किसी कर्मचारी की पीढ़ी दिखाते हैं. अगर किसी वर्कफ़्लो कोExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल करकेWorkManager.updateWork
याWorkManager.enqueueUniquePeriodicWork
से अपडेट किया गया है, तो उस वर्कफ़्लो की कई जनरेशन होंगी. ध्यान दें कि अगर वर्कर फ़िलहाल चल रहा है, तो हो सकता है कि इस तरीके से, फ़िलहाल चल रहे वर्कर की तुलना में नई जनरेशन का वर्कर दिखे. ऐसा तब होता है, जब वर्कर के चलने के दौरान कोई अपडेट हो जाता है. (I665c5, b/219446409) (I128a9, b/219446409)InitializationExceptionHandler
जोड़ा गया, जो एक अपवाद हैंडलर है. इसका इस्तेमाल यह पता लगाने के लिए किया जा सकता है किWorkManager
को शुरू करने के दौरान कोई समस्या आई थी या नहीं. (I061de)
वर्शन 2.8.0-alpha03
10 अगस्त, 2022
androidx.work:work-*:2.8.0-alpha03
रिलीज़ हो गया है. 2.8.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkRequests
को बिना किसी रुकावट के अपडेट करने की सुविधा जोड़ी गई है. इससे, लाइन में जोड़ने का मूल समय, चेन वगैरह को बनाए रखा जा सकता है. ज़्यादा जानकारी के लिए,WorkManager.updateWork
औरExistingPeriodicWorkPolicy.UPDATE
देखें.
एपीआई में हुए बदलाव
WorkManager.updateWork
को जोड़ा गया था, ताकि काम को अपडेट किया जा सके. इसमें, टास्क को सूची में जोड़ने का मूल समय और चेनिंग को बनाए रखा गया.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
को जोड़ा गया. इस नीति की मदद से, समय-समय पर होने वाले काम को नाम से अपडेट किया जा सकता है. यह मौजूदाREPLACE
से मिलता-जुलता है, लेकिन यह कम रुकावट पैदा करता है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता. साथ ही, यह लाइन में जोड़ने में लगने वाले समय को सेव रखता है - शुरुआती देरी और अवधि का हिसाब, अपडेट करने के समय के बजाय, लाइन में जोड़ने के मूल समय से लगाया जाता है.REPLACE
औरUPDATE
के नाम काफ़ी मिलते-जुलते हैं. इसलिए, इनमें अंतर करने के लिएREPLACE
को बंद कर दिया गया है. अगर आपको अब भीREPLACE
के पिछले सेमेटिक्स को बनाए रखना है, तोREPLACE
से मिलते-जुलते नएCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. (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 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब Builder का इस्तेमाल करने के बजाय, सीधे तौर पर शर्तें बनाई जा सकती हैं. यह 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)
getForegroundInfo
कोWorker
में जोड़ें. (Ic1ead)- सीधे आईडी से WorkQuery बनाने के लिए, सहायक तरीके
WorkQuery.fromIds
जोड़े गए. (Ie5bdf, b/199919736) - RxWorker में अब
setForeground
,Completable
दिखाता है. इसका इस्तेमाल,ListenableFuture
दिखाने वालेsetForegroundInfoAsync
के बजाय किया जा सकता है. (I85156) - RxJava 2 के लिए RxWorker में अब
getForegroundInfo
,Single
दिखाता है. इसका इस्तेमाल,ListenableFuture
दिखाने वालेgetForegroundInfoAsync
के बजाय किया जा सकता है. (I21c91, b/203851459) - RxJava 3 के लिए RxWorker में अब
getForegroundInfo
,Single
दिखाता है. इसका इस्तेमाल,ListenableFuture
दिखाने वालेgetForegroundInfoAsync
के बजाय किया जा सकता है. (I1ca8a) - RxWorker में अब
setForeground
,Completable
दिखाता है. इसका इस्तेमाल,ListenableFuture
दिखाने वालेsetForegroundInfoAsync
के बजाय किया जा सकता है. (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 के बाद किए गए अहम बदलाव
Android 12 में फ़ोरग्राउंड सेवा से जुड़ी पाबंदियों से निपटने में मदद करने के लिए, WorkManager में एक नया
WorkRequest.Builder.setExpedited(...)
API जोड़ा गया है.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 के लिए मल्टी-प्रोसेस कॉन्टेंटशन को कम करना.
एपीआई में हुए बदलाव
@ExperimentalExpeditedWork
एपीआई हटाएं, क्योंकि Android 12 (S) के लिए मौजूदा प्लैटफ़ॉर्म एपीआई, स्टेबल हैं. (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(...)
API का इस्तेमाल करें. ऐप्लिकेशन पर फ़ोरग्राउंड सेवा से जुड़ी पाबंदियां न होने पर, डेवलपर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 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
Android 12 में फ़ोरग्राउंड सेवा से जुड़ी पाबंदियों को ध्यान में रखते हुए, WorkManager में एक नया
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
का इस्तेमाल करके, WorkManager को शुरू करता है. अगर आपने पहले WorkManager को शुरू करने के लिए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.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>
एपीआई में हुए बदलाव
- ListenableWorker का
outputData
दिखाने वालाResult.getOutputData()
एपीआई जोड़ें. (Ie51e3)
गड़बड़ियां ठीक की गईं
- OEM बग के लिए गड़बड़ी को ठीक करने का तरीका जोड़ें. इस बग की वजह से,
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
को अनदेखा करने के लिए बग को ठीक किया गया. (aosp/1530589) ConstraintTrackingWorker
को बेहतर बनाएं, ताकिListenableWorker
को सिर्फ़ तब रोका जा सके, जब वह पहले से बंद न हो. (aosp/1496844, b/172946965)- Java 8 (Ibd2f2) को टारगेट करने के लिए, androidx.work लाइब्रेरी अपडेट करना
वर्शन 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
s को सही तरीके से मिलान न करने वाली गड़बड़ी को ठीक किया गया. (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
s में रुकावट आती है, तो उन्हें तुरंत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
की क्वेरी करने के लिएid
का इस्तेमाल करने के लिए, WorkQuery में कोई एपीआई जोड़ें. (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
को किए गए सभी कॉल, AIDL का इस्तेमाल करकेprimary
ऐप्लिकेशन प्रोसेस को फ़ॉरवर्ड किए जाते हैं. साथ ही, ये कॉलListenableFuture
को आसानी से दिखाते हैं. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- आम तौर पर, हर ऐप्लिकेशन प्रोसेस में WorkManager को शुरू करना ज़रूरी होता है. यह अच्छा नहीं है, क्योंकि SQLite के लिए ज़्यादा समय लगता है. इससे अन्य समस्याएं भी आती हैं. WorkManager में अब नए एपीआई हैं. इनका इस्तेमाल,
एपीआई में हुए बदलाव
- WorkManager अब ऐसे पूरे हो चुके
WorkRequest
को ज़्यादा तेज़ी से हटा देता है जिनमें कोई अधूरी डिपेंडेंसी नहीं है. बफ़र की अवधि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)
बाहरी योगदान
- Zac Sweers (github/43) ने
ArrayCreatingInputMerger
के लिए दस्तावेज़ ठीक किया.
वर्शन 2.4.0
वर्शन 2.4.0
22 जुलाई, 2020
androidx.work:work-*:2.4.0
रिलीज़ हो गया है. 2.4.0 वर्शन में ये बदलाव शामिल हैं.
2.3.0 के बाद किए गए अहम बदलाव
WorkManager
का इन-प्रोसेस शेड्यूलर अब ज़्यादा बेहतर है. पहले, प्रोसेस में चल रहेScheduler
में सिर्फ़ उस काम को पूरा करने पर विचार किया जाता था जिसकी समयसीमा में कोई बदलाव न हुआ हो और जिसकी शर्तें पूरी हो गई हों. अब, प्रोसेस में चल रहे शेड्यूलर उनWorkRequest
को ट्रैक करता है जिन्हें आने वाले समय में लागू किया जा सकता है. इनमें PeriodicWorkRequests भी शामिल हैं. प्रोसेस में चल रहेScheduler
पर भी शेड्यूल करने की सीमाएं लागू नहीं होती हैं. हालांकि, यह अब भी WorkManager के इस्तेमाल किए जा रहेExecutor
के साइज़ तक ही सीमित है. इसका मतलब है कि ऐप्लिकेशन अब फ़ोरग्राउंड में होने पर, ज़्यादा WorkRequests को पूरा कर सकता है. फ़ोरग्राउंड में देर से किए जाने वाले काम को मैनेज करने के लिए,WorkManager
में एक नया कॉन्फ़िगरेशनRunnableScheduler
भी जोड़ा गया है. (aosp/1185778)- WorkManager अब RxJava 3 के साथ काम करता है. RxJava 3 का इस्तेमाल करने के लिए, आपको यह डिपेंडेंसी शामिल करनी होगी:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) WorkQuery
का इस्तेमाल करके,WorkInfo
के लिए क्वेरी करने की सुविधा जोड़ी गई. यह तब काम आता है, जब डेवलपर एक से ज़्यादा एट्रिब्यूट के कॉम्बिनेशन के हिसाब सेWorkInfo
s की क्वेरी करना चाहते हैं. ज़्यादा जानकारी के लिए,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 घंटों में पूरे किए गए 'काम के अनुरोध'.
- फ़िलहाल चल रहे वर्क रिक्वेस्ट.
- शेड्यूल किए गए 'काम के अनुरोध'. (aosp/1235501)
ExistingWorkPolicy.APPEND_OR_REPLACE
जोड़ें, जोAPPEND
से मिलता-जुलता है. हालांकि, यह उस चेन की जगह लेता है जिसकी ज़रूरी शर्तें पूरी नहीं हुई हैं या रद्द कर दी गई हैं. (b/134613984, aosp/1199640)आने वाले समय में लागू किए जाने वाले 'काम के अनुरोध' को ट्रैक करने के लिए, कस्टम
RunnableScheduler
जोड़ने की सुविधा दें. इसका इस्तेमाल, प्रोसेस में चल रहे शेड्यूलर करता है. (aosp/1203944)DelegatingWorkerFactory
का इस्तेमाल करते समय, डाइनैमिक तौर पर फ़ैक्ट्री जोड़ने की सुविधा जोड़ी गई है, ताकि उन्हें किसी दूसरे को सौंपा जा सके. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
की पाबंदियों के लिए, ट्रैकिंग को प्लैटफ़ॉर्म के हिसाब से अलाइन करें. (aosp/1312583)प्रोसेस के दौरान शेड्यूल करने वाला टूल, अब प्रोसेस का नाम तय करने के लिए बेहतर एपीआई का इस्तेमाल करता है. यह कई प्रोसेस का इस्तेमाल करने वाले ऐप्लिकेशन को बेहतर तरीके से काम करने में मदद करता है. (aosp/1324732)
Lint के नए नियम, जो इन बातों को लागू करते हैं:
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
s की क्वेरी करना चाहते हैं. ज़्यादा जानकारी के लिए,WorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
याWorkQuery.Builder withUniqueWorkNames(...)
देखें. (aosp/1253230, b/143847546)ListenableWorker
पूरा होने से पहलेsetForegroundAsync()
को किए गए ऐसे कॉल जिन्हें पूरा नहीं किया जा सका उन्हें अब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. (aosp/1235501)
Lint के नए नियम, जो इन चीज़ों को लागू करते हैं:
setForegroundAsync()
एपीआई का इस्तेमाल करते समय, सहीforegroundServiceType
का इस्तेमाल करना. (b/147873061, aosp/1215915)JobScheduler
आईडी की जानकारी देना, ताकिWorkManager
सीधे तौर परJobService
एपीआई का इस्तेमाल करते समय उनका इस्तेमाल कर सके. (aosp/1223567)
एपीआई में हुए बदलाव
ExistingWorkPolicy.APPEND_OR_REPLACE
जोड़ें, जोAPPEND
से मिलता-जुलता है. हालांकि, यह उस चेन की जगह ले लेता है जिसकी ज़रूरी शर्तें पूरी नहीं हुई हैं या जिसे रद्द कर दिया गया है. (b/134613984, aosp/1199640)आने वाले समय में लागू होने वाले
WorkRequest
को ट्रैक करने के लिए, कस्टमRunnableScheduler
जोड़ने की सुविधा दें. इसका इस्तेमाल, प्रोसेस में चल रहे शेड्यूलर करता है. (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
के लिएNotification
के लाइफ़साइकल को बेहतर तरीके से मैनेज करें. येWorker
, फ़ोरग्राउंड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
के लिए, अब आपकोListenableWorker.setForegroundAsync()
का इस्तेमाल करते समय, इस्तेमाल किए जाने वालेnotificationId
की जानकारी देनी होगी. यह बदलाव, आपके लिए अहम है. इसकी मदद से, एक साथ कई लंबे समय तक चलने वाले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()
एपीआई जोड़ा गया है. इससेAndroidManifest.xml
में किसी दूसरे कॉम्पोनेंट को रजिस्टर किए बिना,WorkRequest
को आसानी से रद्द किया जा सकता है. इस एपीआई की मदद से,Notification
सेWorkRequest
को आसानी से रद्द किया जा सकता है. हमें उम्मीद है कि इसे 2.3.0 में, फ़ोरग्राउंड के नए एपीआई के साथ जोड़ा जाएगा.- WorkManager अब
androidx.room:*:2.2.0
के स्टेबल वर्शन पर निर्भर करता है.
एपीआई में हुए बदलाव
- प्लैटफ़ॉर्म के एपीआई के साथ ज़्यादा मेल खाने के लिए,
ForegroundInfo.getNotificationType()
का नाम बदलकरForegroundInfo.getForegroundServiceType()
कर दिया गया है. (b/142729893, aosp/1143316)
गड़बड़ियां ठीक की गईं
- एक गड़बड़ी को ठीक किया गया है. यह गड़बड़ी, लेन-देन के बाहर
setTransactionSuccessful()
को ग़ैर-ज़रूरी कॉल करने की वजह से होती है. ऐसा कभी-कभी माइग्रेशन के दौरान होता है. (b/142580433, aosp/1141737)
वर्शन 2.3.0-alpha02
9 अक्टूबर, 2019
androidx.work:work-*:2.3.0-alpha02
रिलीज़ हो गया है. 2.3.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- WorkManager अब लंबे समय तक चलने वाले या ऐसे अहम कामों को चलाने की सुविधा देता है जिन्हें ओएस के चालू रहने पर पूरा किया जाना चाहिए. ज़्यादा जानकारी के लिए,
ListenableWorker#setForegroundAsync()
(या Kotlin के लिएCoroutineWorker#setForeground()
) देखें. (aosp/1133636)
एपीआई में हुए बदलाव
Data
में मौजूदcontainsKey
एपीआई का नाम बदलकरhasKeyWithValueOfType
कर दिया गया है.ktx
लाइब्रेरी में, एक्सटेंशन के लिए इस्तेमाल किए जाने वाले तरीके का नाम भी बदल दिया गया है. (b/141916545)
गड़बड़ियां ठीक की गईं
- जब लाइन में लगे
WorkRequest
की संख्या, शेड्यूलिंग की सीमाओं के करीब पहुंच जाती है, तब 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()
एपीआई की मदद से प्रोग्रेस सेट कर सकते हैं. साथ ही,CoroutineWorker
मेंsuspend
-ingsetProgress
एपीआई औरRxWorker
मेंsetProgress
जोड़ा गया, जोSingle<Void>
दिखाता है. इन नए एपीआई की मदद से, वर्कर्सWorkInfo
के ज़रिए प्रोग्रेस की जानकारी दे सकते हैं.WorkInfo
एपीआई काgetProgress
एपीआई होता है. (b/79481554)Data
मेंcontainsKey()
एपीआई है. इसका इस्तेमाल, इस बात की पुष्टि करने के लिए किया जा सकता है किWorker
में डाले गए इनपुट डेटा में, सही टाइप की कुंजियां हैं. (b/117136838)Data
को अबData.toByteArray()
औरData.fromByteArray()
का इस्तेमाल करके क्रम से लगाया जा सकता है. ध्यान दें किData
के साथ वर्शन की कोई गारंटी नहीं है. इसलिए, आपको इसे सेव नहीं करना चाहिए या ऐप्लिकेशन के बीच आईपीसी के लिए इसका इस्तेमाल नहीं करना चाहिए. इन्हें सिर्फ़ एक ही ऐप्लिकेशन की कई प्रोसेस के बीच इस्तेमाल किया जा सकता है.Configuration.setInputMergerFactory
की मदद सेInputMergerFactory
तय करने की सुविधा जोड़ी गई. (b/133273159)
एपीआई में हुए बदलाव
- अगर
WorkerFactory
,ListenableWorker
का ऐसा इंस्टेंस दिखाता है जिसे पहले ही शुरू किया जा चुका है, तो WorkManagerIllegalStateException
का एक इंस्टेंस दिखाएगा. (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
एक नया मेवन आर्टफ़ैक्ट है. यह Google Play services के एपीआई लेवल 22 या उससे पहले के वर्शन के लिए, GCMNetworkManager को शेड्यूलर के तौर पर इस्तेमाल करने की सुविधा देता है. यह एक ज़रूरी डिपेंडेंसी नहीं है. इससे, एपीआई के पुराने वर्शन पर बैकग्राउंड प्रोसेसिंग को ज़्यादा भरोसेमंद और बेहतर बनाने में मदद मिलती है. अगर आपका ऐप्लिकेशन 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
एक नया मेवन आर्टफ़ैक्ट है. यह एपीआई लेवल 22 और उससे पहले के वर्शन के लिए, Google Play services के उपलब्ध होने पर, GCMNetworkManager को शेड्यूलर के तौर पर इस्तेमाल करने की सुविधा देता है. यह ज़रूरी नहीं है. हालांकि, इससे पुराने एपीआई वर्शन पर बैकग्राउंड प्रोसेसिंग को ज़्यादा भरोसेमंद और बेहतर परफ़ॉर्म करने में मदद मिलती है. अगर आपका ऐप्लिकेशन 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/131435993Configuration.Builder.setTaskExecutor
के ज़रिए, अपनी सभी इंटरनल बुक-कीपिंग के लिए, WorkManager के इस्तेमाल किए गए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
s के लिए, प्रोसेस की विंडो में बदलाव होता था. 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
को लागू करने में OEM से जुड़ी गड़बड़ियों को हल करना. - AlarmManager के आधार पर काम करने वाले शेड्यूलर में, सेवा के लाइफ़टाइम से जुड़े सुधार किए गए हैं. इससे पहले, इसकी वजह से ऐप्लिकेशन कभी-कभी क्रैश हो जाता था. (b/133313734)
वर्शन 2.1.0-alpha02
16 मई, 2019
WorkManager 2.1.0-alpha02 रिलीज़ किया गया है. इस वर्शन में कई नए एपीआई शामिल हैं.
एपीआई में हुए बदलाव
PeriodicWorkRequest
अब शुरुआती देरी के साथ काम करते हैं. शुरुआती देरी सेट करने के लिए,PeriodicWorkRequest.Builder
परsetInitialDelay
तरीके का इस्तेमाल किया जा सकता है. b/111404867DelegatingWorkerFactory
का इस्तेमाल करके, एक या उससे ज़्यादा रजिस्टर किए गएWorkerFactory
को अनुमति देने की सुविधा जोड़ी गई है. b/131435993Configuration.Builder.setTaskExecutor
के ज़रिए, अपनी सभी इंटरनल बुक-कीपिंग के लिए, WorkManager के इस्तेमाल किए गए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
- JobScheduler के पुराने वर्शन वाले एपीआई पर, पाबंदियों को ट्रैक करने की सुविधा को ठीक नहीं किया जा रहा था. इस वजह से, ऐप्लिकेशन क्रैश हो रहा था. इस समस्या को ठीक कर दिया गया है. 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 डिपेंडेंसी के साथ, AndroidX के 1.0.0 के स्टेबल वर्शन जैसा है. हमारा सुझाव है कि आप लेगसी 1.x वर्शन के बजाय, इस वर्शन को टारगेट करें. सभी ऐक्टिव डेवलपमेंट, 2.x को टारगेट करेंगे. साथ ही, 1.x में सिर्फ़ कुछ समय के लिए गंभीर गड़बड़ियों को ठीक किया जाएगा.
वर्शन 2.0.0-rc01
7 मार्च, 2019
WorkManager 2.0.0-rc01 रिलीज़ हो गया है. यह वर्शन, 1.0.0 के स्टैबल वर्शन जैसा ही है, लेकिन इसमें AndroidX की डिपेंडेंसी हैं. जब यह 2.0.0 स्टेबल वर्शन पर पहुंच जाएगा, तो आपको इस वर्शन को शामिल करना चाहिए. लेगसी 1.x वर्शन में सिर्फ़ कुछ गंभीर गड़बड़ियां ठीक की जाएंगी. सभी मौजूदा डेवलपमेंट, 2.x को टारगेट करेंगे.
AndroidX से पहले की डिपेंडेंसी
रेफ़रंस दस्तावेज़: Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
वर्शन 1.0.1
वर्शन 1.0.1
9 अप्रैल, 2019
WorkManager 1.0.1 रिलीज़ किया गया है. यह रिलीज़, 1.0.1-rc01 जैसी ही है.
कृपया ध्यान दें कि हम उपयोगकर्ताओं को WorkManager 2.x पर अपडेट करने का बहुत ज़्यादा सुझाव देते हैं. ऐसा इसलिए, क्योंकि आने वाले समय में 1.x ब्रैंच में बहुत कम अपडेट होंगे. 1.x लाइब्रेरी के लिए भी नए एपीआई रिलीज़ नहीं किए जाएंगे.
वर्शन 1.0.1-rc01
2 अप्रैल, 2019
WorkManager 1.0.1-rc01 रिलीज़ किया गया. इस वर्शन में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- Robolectric टेस्ट अब WorkManager के साथ ठीक से काम करते हैं. b/122553577
- JobScheduler के पुराने एपीआई पर, सीमाओं को ट्रैक करने की सुविधा को ठीक नहीं किया जा रहा था. इससे, ऐप्लिकेशन क्रैश हो जाता था. इस समस्या को ठीक कर दिया गया है. 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
अब सही तरीके से शेड्यूल किए जाते हैं. b/124546316ऐसे
Worker
जिनकी वजह सेException
का निशान नहीं दिखता था उन्हें अब सही तरीके सेFAILED
के तौर पर मार्क किया गया है. साथ ही, अब वे ऐप्लिकेशन प्रोसेस को क्रैश नहीं करते.
वर्शन 1.0.0-rc01
14 फ़रवरी, 2019
यह WorkManager के 1.0.0 के स्टेबल वर्शन के लिए रिलीज़ कैंडिडेट है. इस रिलीज़ में एक गड़बड़ी को ठीक किया गया है.
गड़बड़ियां ठीक की गईं
- AlarmManager के आधार पर लागू करने की सुविधा, अब PeriodicWorkRequests के लिए
flex
विंडो का सही तरीके से इस्तेमाल करती है. b/124274584
वर्शन 1.0.0-beta05
6 फ़रवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- एपीआई 23 पर
JobScheduler.getPendingJob(...)
का इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया. 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 (एपीआई लेवल 22) या उससे पहले के वर्शन पर चलने वाले डिवाइसों पर,
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
- WorkManager के इस्तेमाल किए जाने वाले
LiveData
के कई इंस्टेंस के बीच, संभावित रेस कंडीशन को ठीक करने के लिए बदलाव जोड़ा गया है. 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
s के नतीजेPayload
के बजायResult
के तौर पर दिखेंगे.Worker
में आउटपुटData
के लिए, गेट्टर और सेटर तरीके नहीं होते. यह बदलाव, आपके लिए अहम है.- धीरे ट्रिगर होने वाले कॉन्टेंट यूआरआई के साथ बेहतर तरीके से काम करने के लिए,
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
औरConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
के साथ-साथ वैरिएंट जोड़े गए. b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
वैरिएंट जोड़ा गया. इस तरीके के लिए, एपीआई 26 की ज़रूरत होती है.Operation.await()
औरListenableFuture.await()
Kotlin एक्सटेंशन के तरीके जोड़े गए.Operation.getException()
का नाम बदलकरOperation.getThrowable()
किया गया. यह बदलाव, आपके लिए अहम है.ContentUriTriggers
क्लास और उससे जुड़े तरीके, अब सार्वजनिक इस्तेमाल के लिए उपलब्ध नहीं हैं. यह बदलाव, आपके लिए अहम है.- एपीआई को बेहतर बनाने के लिए,
WorkManager
,WorkContinuation
, औरOneTimeWorkRequest
में बाकी सभी वैरग्स मेथड हटा दिए गए हैं. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा वैरिएबल कोArrays.asList(...)
के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं. यह बदलाव, आपके लिए अहम है. WorkContinuation.combine(OneTimeWorkRequest, *)
वैरिएंट हटाए गए. वे एक ऐसा एपीआई दिखा रहे थे जिसे समझना मुश्किल था. मौजूदाcombine
तरीके ज़्यादा समझ में आते हैं. यह बदलाव, आपके लिए अहम है.
गड़बड़ियां ठीक की गईं
- Marshmallow से पहले के वर्शन में, पहले से चल रहे टास्क की प्रोसेस बंद होने पर, उसे वापस चालू करने की सुविधा अब ज़्यादा भरोसेमंद है.
observeForever
से निगरानी किए गएLiveData
को WorkManager की मदद से ट्रैक किया जाता है. यह Room लाइब्रेरी से जुड़ी समस्या को ठीक करने के लिए, पुराने वर्शन में किए गए बदलावों को नए वर्शन में शामिल करने की सुविधा है. b/74477406- अगर सीरियलाइज़ किया गया ऑब्जेक्ट, अपने ज़्यादा से ज़्यादा साइज़ से ज़्यादा हो जाता है, तो
Data.Builder.build()
अब एक अपवाद दिखाता है. पहले, ऐसा सिर्फ़ बैकग्राउंड थ्रेड में होता था, जहां इसे सही तरीके से मैनेज नहीं किया जा सकता था. - 'काम रोका गया' और 'काम रद्द किया गया' के बीच अंतर किया गया है.
getWorkInfoById()
,ListenableWorker.onStopped()
के दौरानCANCELLED
State
के साथWorkInfo
दिखाएगा. ListenableWorker
मेंnull
Result
को फ़ेल के तौर पर मार्क करें. b/120362353- एपीआई 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
s,Payload
के बजायResult
के तौर पर दिखेंगे.Worker
में आउटपुटData
के लिए, गेट्टर और सेटर तरीके नहीं होते.Operation.await()
औरListenableFuture.await()
Kotlin एक्सटेंशन के तरीके जोड़े गए.Operation.getException()
का नाम बदलकरOperation.getThrowable()
किया गया.ContentUriTriggers
क्लास और उससे जुड़े तरीके, अब सार्वजनिक इस्तेमाल के लिए उपलब्ध नहीं हैं.- एपीआई को बेहतर बनाने के लिए,
WorkManager
,WorkContinuation
, औरOneTimeWorkRequest
में बाकी सभी वैरग्स मेथड हटा दिए गए हैं. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा वैरिएबल को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
के लिए वैरगर्स स्वीकार नहीं किए जाते. यह बदलाव, आपके लिए अहम है. इसके बजाय, कलेक्शन का इस्तेमाल करें. मौजूदा कोड में बदलाव करने के लिए,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
के लिए वैरिएग्स स्वीकार नहीं करते.- हर प्रोसेस के लिए,
initialize
WorkManager
को एक से ज़्यादा बार इस्तेमाल करने पर, अबIllegalStateException
दिखेगा.
वर्शन 1.0.0-alpha10
11 अक्टूबर, 2018
इस रिलीज़ में, डेवलपर के कंट्रोल वाले एसिंक्रोनस काम की सुविधा काम करती है. इस रिलीज़ में, एपीआई में कुछ बदलाव किए गए हैं. कृपया नीचे एपीआई में किए गए बदलाव सेक्शन देखें.
हमें उम्मीद है कि WorkManager, अल्फा पीरियड के आखिरी चरणों में है. हमें उम्मीद है कि बीटा वर्शन में एपीआई सही तरीके से काम करेगा. इसलिए, कृपया कुछ समय निकालकर हमारे समस्या ट्रैकर पर अपना सुझाव, शिकायत या राय दें.
एपीआई में हुए बदलाव
- पहले से मौजूद सभी
deprecated
मेथड और क्लास हटा दी गई हैं. इनमें डिफ़ॉल्टWorker
कन्स्ट्रक्टर भी शामिल है. यह एपीआई में एक अहम बदलाव है. NonBlockingWorker
का नाम बदलकरListenableWorker
कर दिया गया है. यह अब सार्वजनिक क्लास है और इस्तेमाल के लिए तैयार है.ListenableWorker
, एक एब्स्ट्रैक्ट तरीकेListenableFuture<Payload> onStartWork()
का ऐक्सेस देता है. इसे मुख्य थ्रेड पर कॉल किया जाता है. यह आपके ऊपर है कि आपको काम कब शुरू करना है और कब प्रोसेस करनी है. काम पूरा होने के बाद, आपकोListenableFuture
को सही तरीके से अपडेट करना चाहिए.ListenableFuture
s को लागू करने के रेफ़रंस,alpha02
मेंFutures
पैकेज में दिए गए हैं (WorkManager
सेक्शन के नीचे देखें).Worker
,ListenableWorker
को एक्सटेंड करता है और अब भी पहले की तरह काम करता है. इसके लिए, वह एब्स्ट्रैक्टResult doWork()
तरीके का इस्तेमाल करता है.- कुछ तरीकों और सदस्यों को
Worker
सेListenableWorker
में शफ़ल किया गया. - हम जल्द ही, Kotlin कोरुटिन (स्टैबल वर्शन रिलीज़ होने के बाद) और RxJava2 का इस्तेमाल करने वाले
ListenableWorker
के लिए, रेफ़रंस लागू करने की सुविधा देंगे.
- इंटरफ़ेस
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'
को मिटाकर, रिलीज़ के पुराने नोट से समस्या हल करने का तरीका हटाया जा सकता है. - नए
Worker
कन्स्ट्रक्टर को बनाए रखने के लिए, ProGuard कॉन्फ़िगरेशन जोड़े गए. b/116296569 - रेस कंडीशन में संभावित
NullPointerException
को ठीक करें, जहां कामREPLACE
किया गया था. 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
आम समस्या
अगर आपको यह समस्या आती है: "ओएस से स्वतंत्र पाथ 'META-INF/proguard/androidx-annotations.pro' में एक से ज़्यादा फ़ाइलें मिलीं", तो कृपया alpha10 में समस्या को ठीक करने के दौरान, अपनी gradle फ़ाइल में यह तरीका आज़माएं:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
गड़बड़ियां ठीक की गईं
- "100 जॉब" गड़बड़ी को ठीक करने के लिए, एक और सुधार जोड़ा गया. b/115560696
- रेस कंडीशन की वजह से, फ़ॉरेन-की की पाबंदी से जुड़ी गड़बड़ियों को ठीक करने के लिए कुछ सुधार किए गए हैं. b/114705286
ConstraintTrackingWorker.onStopped(boolean)
कोWorker
को कॉल करने की अनुमति दी गई है. b/114125093- Firebase JobDispatcher के लिए, बैकऑफ़ में लगने वाले कम से कम समय को लागू करना. b/113304626
- बेहतर थ्रेडिंग की सुविधा से, लाइब्रेरी में मौजूद डेटा की सुरक्षा की गारंटी मिलती है.
LiveData
को अंदरूनी तौर पर डुप्लीकेट कॉपी से हटाने से जुड़ी संभावित समस्या को ठीक करें.
एपीआई में हुए बदलाव
- अब
WorkManager.Configuration
के हिस्से के तौर परWorkerFactory
तय करके, रनटाइम के दौरान अपनेWorker
इंस्टेंस बनाए जा सकते हैं. फ़ॉलबैक फ़ैक्ट्रीDefaultWorkerFactory
है, जो WorkManager के पिछले वर्शन के काम करने के तरीके से मेल खाती है.Worker
औरNonBlockingWorker
के लिए डिफ़ॉल्ट कन्स्ट्रक्टर, अब 'इस्तेमाल नहीं किए जाने चाहिए' के तौर पर मार्क किए गए हैं. कृपया नए कंस्ट्रक्टर (Worker(Context, WorkerParameters)
) का इस्तेमाल करें औरsuper(Context, WorkerParameters)
को कॉल करें. WorkManager के आने वाले वर्शन में, डिफ़ॉल्ट कंस्ट्रक्टर को हटा दिया जाएगा.
- हमने नए
ListenableFuture
आर्टफ़ैक्ट का इस्तेमाल अंदरूनी तौर पर शुरू कर दिया है. इसमें Guava डिपेंडेंसी नहीं हैं. हम आने वाली रिलीज़ में, ListenableFutures को API में शामिल करेंगे. इस बदलाव की मदद से,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
को प्रोसेस होने में लगने वाले समय को ध्यान में रखते हुए,Configuration.setMaxSchedulerLimit(int)
की ज़्यादा से ज़्यादा वैल्यू को 50 पर सेट किया गया है. b/112817355
वर्शन 1.0.0-alpha07
16 अगस्त, 2018
गड़बड़ियां ठीक की गईं
- नेगेटिव सीमाओं वाली संभावित SQL क्वेरी को ठीक किया, जो अनलिमिटेड नतीजे दिखा सकती थी.
- जिस टास्क को पूरा कर लिया गया है उसकी सभी कॉपी, अब दूसरे शेड्यूलर में सही तरीके से रद्द हो जाती हैं. इस वजह से,
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
- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Doze मोड में होने पर
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
की अब ज़रूरत नहीं थी उन्हें सही तरीके से हटा दिया गया. - ऐप्लिकेशन को ज़बरदस्ती बंद करने के बाद, उन्हें फिर से चालू करने पर, शेड्यूल को फिर से सेट करने की परफ़ॉर्मेंस को ऑप्टिमाइज़ किया गया है.
WorkRequest
को सूची में जोड़ने से पहले या बाद में,TestScheduler.setAllConstraintsMet(UUID)
को कॉल करने की अनुमति है. b/111238024
ज़रूरी बदलाव
WorkManager.getInstance()
को अब@Nullable
के बजाय@NonNull
के साथ एनोटेट किया गया है.Data.getString()
के सिग्नेचर में बदलाव किया गया है, ताकि अब यह डिफ़ॉल्ट वैल्यू न ले (यह डिफ़ॉल्ट रूप सेnull
है).- सिर्फ़ इंटरनल इस्तेमाल के लिए ज़रूरी कुछ तरीकों को
@hide
के तौर पर मार्क किया गया है. इसमेंConstraints
कन्स्ट्रक्टर,Data.toByteArray()
, औरData.fromByteArray(byte[])
शामिल हैं.
वर्शन 1.0.0-alpha04
26 जून, 2018
गड़बड़ियां ठीक की गईं
AlarmManager
के आधार पर लागू करने की सुविधा का इस्तेमाल करने पर,PeriodicWorkRequest
अब सही तरीके से फिर से शेड्यूल किए जाते हैं.- ज़बरदस्ती बंद करने या रीबूट करने के बाद, सभी वर्कर्स को फिर से शेड्यूल करते समय, संभावित ANR को ठीक किया गया. b/110507716
- WorkManager के अलग-अलग एपीआई में, वैल्यू न होने की जानकारी देने वाले एनोटेशन जोड़े गए. b/110344065
- वर्कर्स के चलने के दौरान होने वाले ऐसे अपवादों को लॉग करें जिन्हें पकड़ा नहीं गया है. 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
के लिए सुरक्षितJobScheduler
जॉब आईडी की रेंज तय करने में मदद करता है. b/79996760WorkManager
Worker.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()
एपीआई,Worker
से जुड़े टैग काSet
दिखाता है.- एपीआई के लिए
javax.time.Duration
ओवरलोड जोड़े गए, जो अवधि औरTimeUnit
का कॉम्बिनेशन लेते हैं. इसे@RequiresApi(26)
सुरक्षित रखता है. WorkManager
एक्सटेंशन,androidx.work.ktx
पैकेज सेandroidx.work
पैकेज में ले जाए गए हैं. पुराने एक्सटेंशन का इस्तेमाल बंद कर दिया गया है. आने वाले वर्शन में इन्हें हटा दिया जाएगा.Configuration.withExecutor()
का अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,Configuration.setExecutor()
का इस्तेमाल करें.
वर्शन 1.0.0-alpha01
8 मई, 2018
WorkManager, बैकग्राउंड में होने वाले काम को शेड्यूल करने और उसे पूरा करने की प्रोसेस को आसान बनाता है. यह काम, तय समय पर और तय शर्तों के मुताबिक पूरा होता है. यह शुरुआती रिलीज़ 1.0.0-alpha01
है.