WorkManager
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
23 अप्रैल, 2025 | 2.10.1 | - | - | - |
डिपेंडेंसी का एलान करना
WorkManager पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़ना होगा:
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def work_version = "2.10.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.10.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.1
23 अप्रैल, 2025
androidx.work:work-*:2.10.1
रिलीज़ हो गया है. वर्शन 2.10.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पाबंदी ट्रैकिंग के लिए इस्तेमाल किए गए
NetworkCallback
केWorkManager
के रजिस्ट्रेशन से,TooManyRequestsException
के ट्रिगर होने की संभावना कम करें. ((b/231499040)[https://issuetracker.google.com/231499040], b309d5).
वर्शन 2.10.0
30 अक्टूबर, 2024
androidx.work:work-*:2.10.0
रिलीज़ हो गया है. वर्शन 2.10.0 में ये कमिट शामिल हैं.
2.9.1 वर्शन के बाद किए गए अहम बदलाव
WorkManager
से जॉब में ट्रेस टैग जोड़े गए हैं. इससे 'adb shell dumpsys jobscheduler' को समझना बहुत आसान हो जाता है, क्योंकि इसमें उस वर्कर्स का नाम शामिल होगा जो चल रहा है.WorkManager
के मुख्य हिस्सों के आस-पास भी ट्रेस सेक्शन जोड़े गए हैं.Configuration.workerCoroutineContext
को डिस्पैचर को कंट्रोल करने के लिए जोड़ा गया था, जहांCoroutineWorker
को लागू किया जाता है.- डेवलपर,
Constraints.setRequiredNetworkRequest
तरीके का इस्तेमाल करके, वर्कर के लिएNetworkRequest
को कंस्ट्रेंट के तौर पर तय कर सकते हैं. इससे यह तय करने में ज़्यादा मदद मिलती है कि इस वर्कफ़्लो को किस नेटवर्क पर चलाना है. WorkManager
2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है. इसमें SDK 35 के साथ काम करने के लिए कई बदलाव किए गए हैं.
वर्शन 2.10.0-rc01
24 अक्टूबर, 2024
androidx.work:work-*:2.10.0-rc01
रिलीज़ हो गया है. वर्शन 2.10.0-rc01 में ये कमिट शामिल हैं.
वर्शन 2.10.0-beta01
2 अक्टूबर, 2024
androidx.work:work-*:2.10.0-beta01
रिलीज़ हो गया है. वर्शन 2.10.0-beta01 में ये बदलाव शामिल हैं.
वर्शन 2.10.0-alpha04
18 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha04
रिलीज़ हो गया है. वर्शन 2.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- फ़ोरग्राउंड सेवा के टाइप के आधार पर, फ़ोरग्राउंड वर्कर को बंद होने की वजह
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
जोड़ें. यह वजह, वर्कर के एक्सीक्यूशन टाइम आउट की वजह से बंद होने पर जोड़ी जाती है. (Ibd0af)
वर्शन 2.10.0-alpha03
4 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha03
रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkManager
से जॉब में ट्रेस टैग जोड़े गए हैं. इससे ‘adb shell dumpsys jobscheduler’ को समझना बहुत आसान हो जाता है, क्योंकि इसमें उस वर्कर्स का नाम शामिल होगा जो चल रहा है.WorkManager
के मुख्य हिस्सों के आस-पास भी ट्रेस सेक्शन जोड़े गए हैं.
एपीआई में हुए बदलाव
- WorkManager 2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है.
- 'कम समय तक चलने वाली सेवा' और 'डेटा सिंक' टाइप के फ़ोरग्राउंड वर्कर्स के टाइम आउट होने और
WorkManager
केstopSelf()
को कॉल न करने पर, 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()
तरीके से, वर्कर्स से खुद क्वेरी की जा सकती है याWorkInfo
सेgetStopReason()
की मदद से क्वेरी की जा सकती है. 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()
तरीके से, वर्कर्स से खुद क्वेरी की जा सकती है याWorkInfo
सेgetStopReason()
की मदद से क्वेरी की जा सकती है.
एपीआई में हुए बदलाव
stopReason
कोWorkInfo
में जोड़ा गया. यह वर्कर के चलने के बाद,stopReason
को उपलब्ध कराता है. यहstopReason
की रिपोर्टिंग को बेहतर बनाने में मदद कर सकता है, क्योंकि किसी वर्कर्स को बंद करने के बाद, ऐप्लिकेशन को तुरंत बंद किया जा सकता है. (I21386)- कॉन्फ़िगरेशन की मदद से क्लॉक सेट करने की अनुमति दें. साथ ही, Worker टेस्ट के क्रम से चलाने के लिए इसका इस्तेमाल करें. (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)
गड़बड़ियां ठीक की गईं
- SDK टूल के 33 और उसके बाद के वर्शन पर, POST_NOTIFICATIONS अनुमति देने की ज़रूरत वाले एपीआई में
@RequiresPermission
जोड़ा गया है. (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)
Worker
मेंgetForegroundInfo
जोड़ें. (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(...)
एपीआई जोड़ा गया है.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 को शुरू करने के लिए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 घंटों में पूरे हो गए हैं.
- फ़िलहाल चल रहे WorkRequests.
- शेड्यूल किए गए WorkRequests. (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)
ListenableWorker
के पूरा होने से पहलेsetForegroundAsync()
को किए गए ऐसे कॉल जिन्हें पूरा नहीं किया जा सका उन्हें अब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.
- शेड्यूल किए गए 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 के lint
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 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़ोरग्राउंड
Service
चालू होने पर चलने वाले, लंबे समय तक चलने वालेWorker
के लिएNotification
के लाइफ़साइकल को बेहतर तरीके से मैनेज करें. (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
एक नया मेवन आर्टफ़ैक्ट है. यह एपीआई लेवल 22 और उससे पहले के वर्शन के लिए, Google Play services के उपलब्ध होने पर, 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
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
ListenableWorker
के इंस्टेंस बनाते समय,TestListenableWorkerBuilder
अब सही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/129091233PeriodicWorkRequest
के लिए दस्तावेज़ अपडेट किए गए हैं, ताकि यह बताया जा सके कि एपीआई 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
अबPayload
के बजायResult
के तौर पर दिखेंगे.Worker
में आउटपुटData
के लिए, गेट्टर और सेटर मेथड नहीं होते. यह बदलाव, आपके लिए अहम है.- धीरे ट्रिगर होने वाले कॉन्टेंट यूआरआई के साथ बेहतर तरीके से काम करने के लिए,
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
औरConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
के साथ-साथ वैरिएंट जोड़े गए. b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
वैरिएंट जोड़ा गया. इस तरीके के लिए, एपीआई 26 की ज़रूरत होती है.- Kotlin एक्सटेंशन के
Operation.await()
औरListenableFuture.await()
तरीके जोड़े गए. Operation.getException()
का नाम बदलकरOperation.getThrowable()
किया गया. यह बदलाव, आपके लिए अहम है.ContentUriTriggers
क्लास और उससे जुड़े तरीके, अब सार्वजनिक इस्तेमाल के लिए उपलब्ध नहीं हैं. यह बदलाव, आपके लिए अहम है.- एपीआई को बेहतर बनाने के लिए,
WorkManager
,WorkContinuation
, औरOneTimeWorkRequest
में बाकी सभी वैरग्स मेथड हटा दिए गए हैं. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा वैरिएबल आर्ग्युमेंट कोArrays.asList(...)
के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं. यह बदलाव, आपके लिए अहम है. WorkContinuation.combine(OneTimeWorkRequest, *)
वैरिएंट हटाए गए. वे एक ऐसा एपीआई दिखा रहे थे जिसे समझना मुश्किल था. मौजूदाcombine
तरीके ज़्यादा समझ में आते हैं. यह बदलाव, आपके लिए अहम है.
गड़बड़ियां ठीक की गईं
- Marshmallow से पहले के वर्शन में, पहले से चल रहे टास्क की प्रोसेस बंद होने पर, उसे फिर से शुरू करने की सुविधा ज़्यादा भरोसेमंद है.
LiveData
कोobserveForever
से देखा जाता है और WorkManager से ट्रैक किया जाता है. यह Room लाइब्रेरी में हुए सुधार का बैकपोर्ट है. b/74477406Data.Builder.build()
अब, सीरियलाइज़ किए गए ऑब्जेक्ट के ज़्यादा से ज़्यादा साइज़ से ज़्यादा होने पर, अपवाद दिखाता है. पहले, ऐसा सिर्फ़ बैकग्राउंड थ्रेड में होता था, जहां इसे ठीक से मैनेज नहीं किया जा सकता था.- टास्क के बंद होने और रद्द होने के बीच अंतर किया गया है.
getWorkInfoById()
,ListenableWorker.onStopped()
के दौरानCANCELLED
State
के साथWorkInfo
दिखाएगा. null
Result
कोListenableWorker
में गड़बड़ियों के तौर पर मार्क करें. 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
अबPayload
के बजायResult
के तौर पर दिखेंगे.Worker
में आउटपुटData
के लिए, गेट्टर और सेटर मेथड नहीं होते.- Kotlin एक्सटेंशन के
Operation.await()
औरListenableFuture.await()
तरीके जोड़े गए. 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
को लागू करने के उदाहरण,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' में एक से ज़्यादा फ़ाइलें मिलीं", तो कृपया अपनी gradle फ़ाइल में यह बदलाव करें. यह बदलाव, alpha10 में समस्या को ठीक करने तक के लिए है:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
गड़बड़ियां ठीक की गईं
- "100 जॉब" गड़बड़ी को ठीक करने के लिए, एक और सुधार जोड़ा गया. b/115560696
- रेस कंडीशन की वजह से, फ़ॉरेन की कंस्ट्रेंट से जुड़ी गड़बड़ियों को ठीक करने के लिए कुछ सुधार किए गए हैं. b/114705286
ConstraintTrackingWorker.onStopped(boolean)
कॉल कोWorker
को सौंपा गया. b/114125093- Firebase JobDispatcher के लिए, कम से कम बैकऑफ़ देरी को लागू करें. b/113304626
- बेहतर थ्रेडिंग की सुविधा, लाइब्रेरी के अंदर काम करने की गारंटी देती है.
LiveData
को अंदरूनी तौर पर डुप्लीकेट कॉपी से हटाने से जुड़ी संभावित समस्या को ठीक करें.
एपीआई में हुए बदलाव
- अब
WorkManager.Configuration
के हिस्से के तौर परWorkerFactory
तय करके, रनटाइम के दौरान अपनेWorker
इंस्टेंस बनाए जा सकते हैं. फ़ॉलबैक फ़ैक्ट्रीDefaultWorkerFactory
है, जो WorkManager के पिछले वर्शन के काम करने के तरीके से मेल खाती है.Worker
औरNonBlockingWorker
के लिए डिफ़ॉल्ट कन्स्ट्रक्टर, अब 'इस्तेमाल नहीं किए जाने चाहिए' के तौर पर मार्क किए गए हैं. कृपया नए कंस्ट्रक्टर (Worker(Context, WorkerParameters)
) का इस्तेमाल करें औरsuper(Context, WorkerParameters)
को कॉल करें. WorkManager के आने वाले वर्शन में, डिफ़ॉल्ट कंस्ट्रक्टर हटा दिया जाएगा.
- हमने अपने अंदर नए
ListenableFuture
आर्टफ़ैक्ट का इस्तेमाल करना शुरू कर दिया है. यह आर्टफ़ैक्ट, Guava डिपेंडेंसी से मुक्त है. हम आने वाले रिलीज़ में, एपीआई में ListenableFutures की सुविधा जोड़ेंगे. इस बदलाव के बाद,NonBlockingWorker
को अनहाइड किया जा सकेगा. TestDriver.setInitialDelayMet(UUID)
औरTestDriver.setPeriodDelayMet(UUID)
की मदद से,TestDriver
में तय समय पर होने वाले काम को ट्रिगर करने की सुविधा जोड़ी गई. b/113360060
बदलावों की जानकारी
- डिफ़ॉल्ट
Worker
औरNonBlockingWorker
कंस्ट्रक्टर का इस्तेमाल नहीं किया जा सकता. कृपया जल्द से जल्द नए कन्स्ट्रक्टर पर माइग्रेट करें. आने वाले वर्शन में, डिफ़ॉल्ट कन्स्ट्रक्टर हटा दिया जाएगा.
वर्शन 1.0.0-alpha08
27 अगस्त, 2018
गड़बड़ियां ठीक की गईं
- WorkManager के कॉम्पोनेंट को साफ़ तौर पर, सीधे बूट होने की सुविधा के बारे में जानकारी नहीं होने के तौर पर लेबल किया गया है, ताकि वे सीधे बूट होने की सुविधा के दौरान चालू न हों. आने वाले समय में, हम WorkManager का एक ऐसा वर्शन उपलब्ध कराएंगे जो सीधे तौर पर बूट के बारे में जानकारी रखता है. b/112665532
- उस समस्या को ठीक किया गया है जिसकी वजह से, दोबारा कोशिश करने पर काम नहीं हो रहा था. b/112604021
- समय-समय पर होने वाले काम को बार-बार न होने की समस्या को ठीक किया गया. यह समस्या ऊपर बताई गई समस्या से जुड़ी है. b/112859683
- ऐप्लिकेशन प्रोसेस पहले से चल रही होने पर, बैकऑफ़ से जुड़ी नीतियों का पालन किया जाता है.
Data
में अपवाद के मैसेज ठीक किए गए हैं, ताकि यह पता चल सके कि सीमा 10 केबी है.JobScheduler
प्रोसेस पूरी होने में लगने वाले समय को ध्यान में रखते हुए,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
s के ठीक से काम न करने की समस्या को ठीक किया गया. 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
पैरामीटर है. जबWorker
को साफ़ तौर पर रद्द कर दिया जाता है, तो यह पैरामीटरtrue
पर सेट हो जाता है.
वर्शन 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
है.