WorkManager
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
30 अक्टूबर, 2024 | 2.9.1 | - | - | - |
डिपेंडेंसी तय करना
WorkManager पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google की Maven रिपॉज़िटरी जोड़नी होगी:
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Kotlin एक्सटेंशन का इस्तेमाल करने के बारे में जानकारी के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ें लेख पढ़ें.
सुझाव
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 2.10
वर्शन 2.10.0
30 अक्टूबर, 2024
androidx.work:work-*:2.10.0
रिलीज़ हो गया है. वर्शन 2.10.0 में ये कमिट शामिल हैं.
वर्शन 2.9.1 के बाद से हुए अहम बदलाव
WorkManager
से जॉब में ट्रेस टैग जोड़े गए हैं. इससे ‘adb shell dumpsys jobscheduler’ को समझना बहुत आसान हो जाता है, क्योंकि इसमें उस वर्कर्स का नाम शामिल होगा जो चल रहा है.WorkManager
के मुख्य हिस्सों के आस-पास भी ट्रेस सेक्शन जोड़े गए हैं.Configuration.workerCoroutineContext
को डिस्पैचर को कंट्रोल करने के लिए जोड़ा गया था, जहांCoroutineWorker
को लागू किया जाता है.- डेवलपर
Constraints.setRequiredNetworkRequest
तरीके का इस्तेमाल करके,NetworkRequest
को कंस्ट्रेंट के तौर पर कंस्ट्रेंट के तौर पर तय कर सकते हैं. इससे, इस बात पर ज़्यादा बेहतर तरीके से कंट्रोल किया जा सकता है कि यह वर्कर किस नेटवर्क पर चलना चाहिए. WorkManager
2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है. इसमें SDK टूल 35 के साथ काम करने के लिए, इसमें कई बदलाव किए गए हैं.
वर्शन 2.10.0-rc01
24 अक्टूबर, 2024
androidx.work:work-*:2.10.0-rc01
रिलीज़ हो गया है. वर्शन 2.10.0-rc01 में ये कमियां शामिल हैं.
वर्शन 2.10.0-beta01
2 अक्टूबर, 2024
androidx.work:work-*:2.10.0-beta01
रिलीज़ हो गया है. वर्शन 2.10.0-beta01 में ये बदलाव शामिल हैं.
वर्शन 2.10.0-alpha04
18 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha04
रिलीज़ हो गया है. वर्शन 2.10.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में बदलाव
- फ़ोरग्राउंड सेवा के टाइप के आधार पर, फ़ोरग्राउंड वर्कर को एक्सीक्यूशन टाइम आउट की वजह से बंद होने पर, बंद होने की वजह
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
जोड़ें. (Ibd0af)
वर्शन 2.10.0-alpha03
4 सितंबर, 2024
androidx.work:work-*:2.10.0-alpha03
रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये कमिट शामिल हैं.
नई सुविधाएं
WorkManager
से जॉब में ट्रेस टैग जोड़े गए हैं. इससे ‘adb shell dumpsys jobscheduler’ को समझना बहुत आसान हो जाता है, क्योंकि इसमें उस वर्कर्स का नाम शामिल होगा जो चल रहा है.WorkManager
के मुख्य हिस्सों के आस-पास भी ट्रेस सेक्शन जोड़े गए हैं.
एपीआई में हुए बदलाव
- WorkManager 2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है.
- 'कम समय तक चलने वाली सेवा' और 'डेटा सिंक' टाइप के फ़ोरग्राउंड वर्कर्स के टाइम आउट होने की समस्या को ठीक करें. साथ ही,
WorkManager
केstopSelf()
को कॉल न करने पर, ANR होने की समस्या को भी ठीक करें. यह सुधार सिर्फ़ एपीआई 34 और 35 वाले डिवाइसों पर लागू होता है, जहां फ़ोरग्राउंड सेवा के टाइप पेश किए गए थे. (ca06b2, b/364508145) - नए
WorkerParameters
एपीआई की मदद से, उस रिमोट प्रोसेस को स्विच किया जा सकता है जिससेWorker
,WorkerFactory
का इस्तेमाल करते समय जुड़ा होता है. (Ibdc8a, Ie8a90, I7373f)
गड़बड़ियां ठीक की गईं
WorkManager
, लंबे समय से चल रहे वर्कर (यानी फ़ोरग्राउंड वर्कर) को रीस्टार्ट करने की कोशिश करते समय क्रैश होने की समस्या को ठीक करें. ऐसा तब होता है, जब फ़ोरग्राउंड वर्कर के टाइप में Android 14 की ज़रूरी शर्तों वाली अनुमतियां होती हैं, जिन्हें रद्द कर दिया गया है. (b/333957914)- नए प्लैटफ़ॉर्म के एपीआई को मैन्युअल तरीके से ऐक्सेस करने की सुविधा हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि AGP 7.3 या इसके बाद के वर्शन (उदाहरण के लिए, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग की मदद से यह अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (उदाहरण के लिए, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह अपने-आप हो जाता है. जिन क्लाइंट ने AGP का इस्तेमाल नहीं किया है उन्हें D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (Ia60e0, b/345472586)
वर्शन 2.10.0-alpha02
17 अप्रैल, 2024
androidx.work:work-*:2.10.0-alpha02
रिलीज़ हो गया है. वर्शन 2.10.0-alpha02 में ये कमिट शामिल हैं.
एपीआई में बदलाव
WorkManager
में, कॉन्फ़िगर किए जा सकने वाले@RestrictTo
Tracer
की मदद से, ट्रेस स्पैन को उत्सर्जित करने की सुविधा जोड़ी गई. (I17d7f, b/260214125)Configuration.workerCoroutineContext
को डिस्पैचर को कंट्रोल करने के लिए जोड़ा गया था, जहांCoroutineWorker
को लागू किया जाता है. इससेWorkManager
मेंDispatchers.Default
का इस्तेमाल पूरी तरह से रोका जा सकता है. (Icd1b7)- वर्कर के लिए, कस्टम अपवाद हैंडलर जोड़ें (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
औरPeriodicWorkRequest.Builder
को अबClass
के बजायKClass
से बनाया जा सकता है:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)WorkManager
क्लास को Kotlin में माइग्रेट किया गया.LiveData
,ListenableFuture
याFlow
रिटर्न करने वाले तरीकों से, अब वैल्यू के अमान्य होने की सही जानकारी मिलती है. अगर उस कोड में, वैल्यू के मौजूद न होने की गलत मान्यताएं दी गई हैं, तो क्लाइंट के सोर्स कोड में बदलाव किए जा सकते हैं. (If6757)
वर्शन 2.10.0-alpha01
24 जनवरी, 2024
androidx.work:work-*:2.10.0-alpha01
रिलीज़ हो गया है. 2.10.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- डेवलपर,
Constraints.setRequiredNetworkRequest
तरीके से किसी वर्कर के लिएNetworkRequest
को कंस्ट्रेंट के तौर पर तय कर सकते हैं. इससे, इस बात पर ज़्यादा बेहतर तरीके से कंट्रोल किया जा सकता है कि यह वर्कर किस नेटवर्क पर चलना चाहिए.
एपीआई में हुए बदलाव
NetworkRequest
को शर्त के तौर पर बताने की सुविधा जोड़ी गई. (Id98a1, b/280634452)
वर्शन 2.9
वर्शन 2.9.1
7 अगस्त, 2024
androidx.work:work-*:2.9.1
रिलीज़ हो गया है. वर्शन 2.9.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
WorkManager
, लंबे समय से चल रहे वर्कर (यानी फ़ोरग्राउंड वर्कर) को रीस्टार्ट करने की कोशिश करते समय क्रैश होने की समस्या को ठीक करें. ऐसा तब होता है, जब फ़ोरग्राउंड वर्कर के टाइप में Android 14 के लिए ज़रूरी अनुमतियां होती हैं और उन्हें रद्द कर दिया जाता है. (b/333957914)
वर्शन 2.9.0
29 नवंबर, 2023
androidx.work:work-*:2.9.0
रिलीज़ हो गया है. 2.9.0 वर्शन में ये बदलाव शामिल हैं.
2.8.0 के बाद किए गए ज़रूरी बदलाव
Flow
-s के ज़रिए निगरानी करना.LiveData
के बजाय, अब फ़्लो केWorkManager.getWorkInfosFlow
और इससे मिलते-जुलते तरीकों से, वर्कफ़्लो की प्रोग्रेस देखी जा सकती है.- अब
WorkManager
इस बात का संकेत देता है कि किसी वर्कर को पहले क्यों रोका गया था.getStopReason()
तरीके से, वर्कफ़्लो में शामिल किसी वर्कर्स से याWorkInfo
सेgetStopReason()
तरीके से, वर्कफ़्लो में शामिल किसी वर्कर्स से क्वेरी की जा सकती है. setNextScheduleTimeOverride
के ज़रिए समय-समय पर काम करने वाले लोगों को सटीक तरीके से शेड्यूल करें. इसकी मदद से, तय समय पर होने वाले अगले काम के शेड्यूल का डेटा डाइनैमिक तरीके से कैलकुलेट किया जा सकता है. इसका इस्तेमाल, ज़रूरत के हिसाब से रीफ़्रेश होने का समय, फिर से कोशिश करने के कस्टम तरीके या उपयोगकर्ता के हर सुबह जागने से पहले, बिना ड्रिफ़्ट किए न्यूज़फ़ीड वर्कर को चलाने जैसी बेहतर सुविधाओं को लागू करने के लिए किया जा सकता है. अगले वर्कर को शेड्यूल करते समय, मौजूदा वर्कर को रद्द होने से बचाने के लिए,ExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल इन तकनीकों के साथ किया जाना चाहिए.- प्रोडक्शन के हिसाब से थ्रेडिंग मैच करने की सुविधा के साथ, WorkManager की टेस्टिंग.
Configuration
में सेट किए गए एक्ज़िक्यूटर को बनाए रखने और असली मुख्य थ्रेड का इस्तेमाल करने के लिए,ExecutorsMode.PRESERVE_EXECUTORS
का इस्तेमालinitializeTestWorkManager
में किया जा सकता है. CoroutineWorker
जैसे कोरूटीन एपीआई को अतिरिक्त आर्टफ़ैक्ट वर्क-रनटाइम-ktx से मुख्य आर्टफ़ैक्ट वर्क-रनटाइम में ले जाया गया है. 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)- Clock को कॉन्फ़िगरेशन की मदद से सेट करने और वर्कर टेस्ट के क्रम को लागू करने के लिए इस्तेमाल करने की अनुमति दें. (Ic586e)
getStopReason()
कोListenableWorker
में जोड़ा गया था. इससे यह पता चलता है कि वर्कफ़्लो को क्यों रोका गया था. (I07060)- लीक हुए संसाधनों के बारे में Closeguard की चेतावनी से बचने के लिए,
WorkManagerTestInitHelper#closeWorkDatabase()
जोड़ा गया. (Ia8d49)
गड़बड़ियां ठीक की गईं
TestDriver
का इस्तेमाल करकेoverrideNextScheduleTime
को बायपास करने की सुविधा जोड़ी गई. साथ ही, जांच करने से जुड़ी समस्याओं को ठीक किया गया. (Ic2905)
वर्शन 2.9.0-alpha01
7 जून, 2023
androidx.work:work-*:2.9.0-alpha01
रिलीज़ हो गया है. 2.9.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
Flow
-s के ज़रिए निगरानी करना.LiveData
के बजाय, अब फ़्लो केWorkManager.getWorkInfosFlow
और इससे मिलते-जुलते तरीकों से, वर्कफ़्लो की प्रोग्रेस देखी जा सकती है.setNextScheduleTimeOverride
की मदद से, समय-समय पर काम करने वाले लोगों के लिए शेड्यूल तय करना. इससे, अगले समय-समय पर होने वाले काम के शेड्यूल का डाइनैमिक कैलकुलेशन किया जा सकता है. इसका इस्तेमाल, बेहतर सुविधाओं को लागू करने के लिए किया जा सकता है. जैसे, अडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राइ करने का तरीका या उपयोगकर्ता के हर सुबह जागने से पहले, न्यूज़फ़ीड वर्कर्स को बिना किसी बदलाव के चलाना. अगले वर्कर को शेड्यूल करते समय, मौजूदा वर्कर को रद्द होने से बचाने के लिए,ExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल इन तकनीकों के साथ किया जाना चाहिए.WorkManager
की टेस्टिंग, थ्रेडिंग मैचिंग प्रोडक्शन के साथ की जा रही है.ExecutorsMode.PRESERVE_EXECUTORS
का इस्तेमाल,Configuration
में सेट किए गए एक्ज़ीक्यूटर को बनाए रखने और असली मुख्य थ्रेड का इस्तेमाल करने के लिए किया जा सकता है.CoroutineWorker
जैसे कोरूटीन एपीआई को अतिरिक्त आर्टफ़ैक्टwork-runtime-ktx
से मुख्य आर्टफ़ैक्टwork-runtime
में ले जाया गया है.work-runtime-ktx
अब खाली है.
एपीआई में हुए बदलाव
WorkInfo
का कंस्ट्रक्टर अब सार्वजनिक है. इससे टेस्टिंग में मदद मिल सकती है. (Ia00b6, b/209145335)work-runtime-ktx
अब खाली है,CoroutineWorker
और Kotlin से जुड़ी अन्य सुविधाएं अब मुख्यwork-runtime
आर्टफ़ैक्ट में उपलब्ध हैं. (I71a9a)setNextScheduleTimeOverride
तरीका जोड़ा गया, जिससे समय-समय पर काम के शेड्यूल को सटीक तरीके से सेट किया जा सकता है (I3b4da)getEarliestRunTimeMillis
का नाम बदलकरgetNextScheduleTimeMillis
किया गया. (I2bd7a)- शेड्यूल किए गए रनटाइम की अगली जानकारी
WorkInfo
में जोड़ दी जाती है. (I797e4) - शुरुआती देरी और समयावधि की जानकारी
WorkInfo
में जोड़ी जाती है. (I52f2f) getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) तरीकों की मदद से, फ़्लो के ज़रिए वर्कर्स को ऑब्ज़र्व करने का तरीका जोड़ा गया- Constraints के कन्स्ट्रक्टर और प्रॉपर्टी में,
@RequiresApi(...)
एनोटेशन जोड़े गए. अब येConstraints.Builder
में सेटर पर मौजूद उन एनोटेशन के साथ अलाइन हो गए हैं जोWorkManager
के शुरुआती वर्शन से मौजूद थे. (I6d7d2) WorkManager
में अब कॉन्टेंट यूआरआई वर्कर्स के लिए अलग से सीमा तय की गई है. इससे उन्हेंJobScheduler
में गारंटी वाले स्लॉट मिलेंगे. इससे, ज़्यादा लोड होने पर कॉन्टेंट के अपडेट न होने से बचा जा सकेगा. सीमा कोConfiguration.Builder.setContentUriTriggerWorkersLimit
के ज़रिए कॉन्फ़िगर किया जा सकता है. (Ic128f)WorkInfo
में पाबंदियां जोड़ी गई हैं. (I162c0)
वर्शन 2.8
वर्शन 2.8.1
22 मार्च, 2023
androidx.work:work-*:2.8.1
रिलीज़ हो गया है. 2.8.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
RescheduleReceiver
में ANR की समस्या को ठीक किया गया है. इससे पहले, एक साथ दो ब्रॉडकास्ट को सही तरीके से मैनेज नहीं किया जा सकता था. (b/236906724)
वर्शन 2.8.0
8 फ़रवरी, 2023
androidx.work:work-*:2.8.0
रिलीज़ हो गया है. वर्शन 2.8.0 में ये कमियां शामिल हैं.
2.7.0 के बाद किए गए अहम बदलाव
नई सुविधाएं
WorkRequests
को बिना किसी रुकावट के अपडेट करने की सुविधा जोड़ी गई है. इससे, लाइन में जोड़ने का मूल समय, चेन वगैरह सुरक्षित रहता है. इस सुविधा के बारे में ज़्यादा जानकारी वाली ब्लॉग पोस्ट देखें. साथ ही, ज़्यादा जानकारी के लिएWorkManager.updateWork
औरExistingPeriodicWorkPolicy.UPDATE
के लिए javadocs देखें.
एपीआई में बदलाव
- सूची में लगने वाले मूल समय और चेन को बनाए रखते हुए, काम को अपडेट करने के लिए
WorkManager.updateWork
को जोड़ा गया.(I9a248, b/219446409) ExistingPeriodicWorkPolicy.UPDATE
को जोड़ा गया. इस नीति की मदद से, समय-समय पर होने वाले काम को नाम से अपडेट किया जा सकता है. यह मौजूदाREPLACE
से मिलता-जुलता है, लेकिन यह कम रुकावट पैदा करता है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता और यह सूची में जोड़ने में लगने वाले समय को सेव रखता है - शुरुआती देरी और अवधि का हिसाब, अपडेट करने के समय के बजाय, सूची में जोड़ने के मूल समय से लगाया जाता है.REPLACE
औरUPDATE
, दोनों के नाम काफ़ी मिलते-जुलते हैं. इसलिए, इन दोनों के बीच भ्रम को कम करने के लिए,REPLACE
को बंद कर दिया गया है. अगर आपको अब भीREPLACE
के पिछले सेमेटिक्स को बनाए रखना है, तोREPLACE
से मिलते-जुलते नएCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. (I985ed, b/219446409)- setSchedulingExceptionHandler के ज़रिए
Consumer<Throwable>
उपलब्ध कराकर, शेड्यूल करने से जुड़े अपवादों को इंटरसेप्ट करने की सुविधा जोड़ी गई) - setInitializationExceptionHandler की मदद से
Consumer<Throwable>
देने की सुविधा जोड़ी गई है. इससे यह पता चलता है कि WorkManager को शुरू करने के दौरान कोई समस्या हुई थी या नहीं. OneTimeWorkRequest
औरPeriodicWorkRequest
के लिए इनलाइन हेल्पर,androidx.work:work-runtime-ktx
सेandroidx.work:work-runtime
पर ले जाए गए (I0010f, b/209145335)WorkQuery
को सीधे तौर पर बनाने के लिए, सहायक तरीकेWorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
जोड़े गए थे. (b/199919736) (If48f2, b/199919736)getForegroundInfo
कोWorker
में जोड़ा गया. (Ic1ead)RxWorker
अब RxJava 2 और RxJava 3, दोनों के लिएsetForeground
है, जोCompletable
दिखाता है. इसका इस्तेमालsetForegroundInfoAsync
के बजाय किया जा सकता है, जोListenableFuture
दिखाता है- RxJava 2 और RxJava 3, दोनों के लिए
RxWorker
मेंgetForegroundInfo
है, जोSingle
दिखाता है. इसका इस्तेमालgetForegroundInfoAsync
के बजाय किया जा सकता है, जोListenableFuture
दिखाता है. (b/203851459) Constraints.Builder
का इस्तेमाल करने के बजाय, अब सीधे तौर पर शर्तें बनाई जा सकती हैं. यह Kotlin इस्तेमाल करने वालों के लिए सुविधाजनक है. (Idc390, b/137568653)WorkManager
को शुरू किया गया है या नहीं, यह देखने की सुविधा जोड़ी गई है. साथ ही, लाइब्रेरी डेवलपर के लिए एक नयाgetConfiguration()
एपीआई जोड़ा गया है, ताकि वे उस कॉन्फ़िगरेशन को ऐक्सेस कर सकें जिससेWorkManager
को शुरू किया गया था. (I6eff3, b/212300336)
गड़बड़ियां ठीक की गईं
- 'ज़्यादा से ज़्यादा प्रोसेस चलाने वाला शेड्यूलर' से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, लोड होने पर वर्कर तुरंत नहीं चल पाते थे. (I9686b, b/248111307)
@RequiresPermission
को उन एपीआई में जोड़ा गया जिनके लिए SDK टूल 33 और इसके बाद के वर्शन पर,POST_NOTIFICATIONS
की अनुमति देना ज़रूरी है. (Ie542e, b/238790278)suspendCancellableCoroutine
का इस्तेमाल करते समय,CoroutineScope
में रद्द किए गए क्रेडिट कोListenableFuture
में लागू करें.
वर्शन 2.8.0-rc01
7 दिसंबर, 2022
androidx.work:work-*:2.8.0-rc01
रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये कमिट हैं.
नई सुविधाएं
- इस रिलीज़ में कोई नई सुविधा नहीं है. मुख्य रूप से, यह एक वर्शन बंप है
वर्शन 2.8.0-beta02
9 नवंबर, 2022
androidx.work:work-*:2.8.0-beta02
रिलीज़ हो गया है. 2.8.0-beta02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
WorkInfo
मेंequals
का तरीका ठीक किया गया है. पहले यह तरीका, नई जनरेशन की जानकारी को ध्यान में नहीं रखता था. (4977cc)
वर्शन 2.8.0-beta01
5 अक्टूबर, 2022
androidx.work:work-*:2.8.0-beta01
रिलीज़ हो गया है. 2.8.0-beta01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- 'ज़्यादा से ज़्यादा प्रोसेस चलाने वाला शेड्यूलर' से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, लोड होने पर वर्कर तुरंत नहीं चल पाते थे. (I9686b, b/248111307)
वर्शन 2.8.0-alpha04
7 सितंबर, 2022
androidx.work:work-*:2.8.0-alpha04
रिलीज़ हो गया है. 2.8.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
WorkerInfo.getGeneration()
औरWorkerParameters.getGeneration()
जोड़े गए हैं, जो किसी कर्मचारी की पीढ़ी दिखाते हैं. अगर किसी वर्कफ़्लो कोExistingPeriodicWorkPolicy.UPDATE
का इस्तेमाल करकेWorkManager.updateWork
याWorkManager.enqueueUniquePeriodicWork
से अपडेट किया गया है, तो उस वर्कफ़्लो की कई जनरेशन होंगी. ध्यान दें कि अगर वर्कर फ़िलहाल चल रहा है, तो हो सकता है कि इस तरीके से, फ़िलहाल चल रहे वर्कर की तुलना में नई जनरेशन का वर्कर दिखे. ऐसा तब होता है, जब वर्कर के चलने के दौरान कोई अपडेट हो जाता है. (I665c5, b/219446409) (I128a9, b/219446409)InitializationExceptionHandler
को जोड़ा गया है. यह एक अपवाद हैंडलर है. इसका इस्तेमाल यह पता लगाने के लिए किया जा सकता है किWorkManager
को शुरू करने के दौरान कोई समस्या हुई थी या नहीं. (I061de)
वर्शन 2.8.0-alpha03
10 अगस्त, 2022
androidx.work:work-*:2.8.0-alpha03
रिलीज़ हो गया है. 2.8.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
WorkRequests
को बिना किसी रुकावट के अपडेट करने की सुविधा जोड़ी गई है. इससे, लाइन में जोड़ने का मूल समय, चेन वगैरह को बनाए रखा जा सकता है. ज़्यादा जानकारी के लिए,WorkManager.updateWork
औरExistingPeriodicWorkPolicy.UPDATE
देखें.
एपीआई में हुए बदलाव
WorkManager.updateWork
को जोड़ा गया था, ताकि काम को अपडेट किया जा सके. इसमें, टास्क को सूची में जोड़ने का मूल समय और चेनिंग को बनाए रखा गया.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
को जोड़ा गया. इस नीति से, समय-समय पर होने वाले किसी काम के नाम को अपडेट किया जा सकता है. यह मौजूदाREPLACE
से मिलता-जुलता है, लेकिन यह कम रुकावट पैदा करता है: अगर कोई वर्कर्स फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता. साथ ही, यह सूची में जोड़ने में लगने वाले समय को सेव रखता है - शुरुआती देरी और अवधि का हिसाब, अपडेट करने के समय के बजाय, सूची में जोड़ने के मूल समय से लगाया जाता है.REPLACE
औरUPDATE
के नाम काफ़ी मिलते-जुलते हैं. इसलिए, इनके बीच भ्रम की स्थिति को कम करने के लिए,REPLACE
को बंद कर दिया गया है. अगर आपको अब भीREPLACE
के पिछले सेमेटिक्स को बनाए रखना है, तोREPLACE
से मिलते-जुलते नएCANCEL_AND_REENQUEUE
का इस्तेमाल किया जा सकता है. (I985ed, b/219446409)SchedulingExceptionHandler
तय करके, शेड्यूल से जुड़े अपवादों को इंटरसेप्ट करने की सुविधा जोड़ें. (I033eb)OneTimeWorkRequest
औरPeriodicWorkRequest
के लिए इनलाइन हेल्पर,androidx.work:work-runtime-ktx
सेandroidx.work:work-runtime
पर ले जाए गए (I0010f, b/209145335)
गड़बड़ियां ठीक की गईं
@RequiresPermission
को उन एपीआई में जोड़ा गया जिनके लिए SDK टूल के वर्शन 33 और इसके बाद के वर्शन पर, POST_NOTIFICATIONS की अनुमति देनी होगी. (Ie542e, b/238790278)
वर्शन 2.8.0-alpha02
6 अप्रैल, 2022
androidx.work:work-*:2.8.0-alpha02
रिलीज़ हो गया है. वर्शन 2.8.0-alpha02 में ये कमियां हैं.
एपीआई में हुए बदलाव
- अब Builder का इस्तेमाल करने के बजाय, सीधे तौर पर शर्तें बनाई जा सकती हैं. यह Kotlin इस्तेमाल करने वालों के लिए सुविधाजनक है. (Idc390, b/137568653)
WorkManager
को शुरू किया गया है या नहीं, यह देखने की सुविधा जोड़ी गई है. साथ ही, लाइब्रेरी डेवलपर के लिए एक नयाgetConfiguration()
एपीआई जोड़ा गया है, ताकि वे उस कॉन्फ़िगरेशन को ऐक्सेस कर सकें जिससेWorkManager
को शुरू किया गया था. (I6eff3, b/212300336)
वर्शन 2.8.0-alpha01
12 जनवरी, 2022
androidx.work:work-*:2.8.0-alpha01
रिलीज़ हो गया है. 2.8.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- सीधे तौर पर WorkQuery बनाने के लिए, सहायक तरीके
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
जोड़े गए थे. (If48f2, b/199919736) - आने वाले समय में इस्तेमाल होने वाले SDK टूल के लिए, BuildCompat के प्रयोग के तौर पर उपलब्ध तरीके जोड़े गए हैं (Iafd82, b/207528937)
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) - अगर
ListenableWorker
को पहले से नहीं रोका गया है, तो सिर्फ़ उसे रोकने के लिए,ConstraintTrackingWorker
को बेहतर बनाएं. (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
वर्क रिक्वेस्ट. एक से ज़्यादा प्रोसेस में SQLite के विवाद से बचने के लिए, इन एपीआई मेंLiveData
वैरिएंट शामिल नहीं हैं.enqueue
,cancel
, औरquery
पर किए जाने वाले सभी कॉल, एआईडीएल का इस्तेमाल करके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
, फ़ोरग्राउंड सेवा (b/156310133, aosp/1309853) से जुड़ेWorker
के एक से ज़्यादा इंस्टेंस लागू करने की कोशिश करता है DelegatingWorkerFactory
का इस्तेमाल करते समय, डाइनैमिक तौर पर फ़ैक्ट्री जोड़ने की सुविधा जोड़ी गई, ताकि उन्हें किसी दूसरे को सौंपा जा सके. (b/156289105, aosp/1309745)BATTERY_NOT_LOW
की पाबंदियों के लिए, ट्रैकिंग को प्लैटफ़ॉर्म के हिसाब से अलाइन करें. (aosp/1312583)
वर्शन 2.4.0-alpha03
29 अप्रैल, 2020
androidx.work:work-*:2.4.0-alpha03
रिलीज़ हो गया है. 2.4.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- WorkManager अब RxJava 3 के साथ काम करता है. RxJava 3 का इस्तेमाल करने के लिए, आपको यह डिपेंडेंसी शामिल करनी चाहिए:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - एक नया लिंट नियम जोड़ा गया है, जो यह पक्का करता है कि डिफ़ॉल्ट
WorkerFactory
का इस्तेमाल करते समय,ListenableWorker
लागू करने के तरीके अबpublic
हैं. (aosp/1291262)
एपीआई में हुए बदलाव
ListenableWorker
के पूरा होने के बादsetProgressAsync()
को कॉल करने पर, अबListenableFuture
के ज़रिएException
को सिग्नल भेजा जाएगा. (aosp/1285494)WorkQuery.Builder
को अबfinal
के तौर पर मार्क कर दिया गया है. (aosp/1275037)WorkQuery.Builder
फ़ैक्ट्री तरीकोंwithStates
,withTags
, औरwithUniqueWorkNames
का नाम बदलकर,fromStates
,fromTags
, औरfromUniqueWorkNames
हो गया है. (aosp/1280287)
गड़बड़ियां ठीक की गईं
- किसी डिवाइस के नेटवर्क की स्थिति को ट्रैक करते समय,
SecurityException
को अनदेखा करें. (b/153246136, aosp/1280813)
वर्शन 2.4.0-alpha02
1 अप्रैल, 2020
androidx.work:work-*:2.4.0-alpha02
रिलीज़ हो गया है. 2.4.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- Lint का एक नया नियम जोड़ा गया है. यह नियम,
WorkRequest
के लिएConstraints.setRequiresCharging(...)
औरConstraints.setRequiresDeviceIdle(...)
, दोनों की ज़रूरत होने पर चेतावनी देता है. कुछ डिवाइस कभी भी चार्ज नहीं होते और कभी भी इस्तेमाल में नहीं होते. इसलिए, ऐसे अनुरोध उम्मीद से कम बार चलेंगे. (aosp/1253840)
एपीआई में हुए बदलाव
WorkQuery
का इस्तेमाल करके,WorkInfo
के लिए क्वेरी करने की सुविधा जोड़ी गई. यह तब काम आता है, जब डेवलपर एक से ज़्यादा एट्रिब्यूट के कॉम्बिनेशन के हिसाब सेWorkInfo
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)
लिंट के नए नियम:
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 अब रूम 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) ListenableFuture
की सदस्यता रद्द किए जाने औरListenableWorker
में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
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- अनजाने में हुई jacoco डिपेंडेंसी को हटाया गया, जो
2.2.0-beta01
में शामिल की गई थी.
वर्शन 2.2.0-beta01
17 जुलाई, 2019
androidx.work:work-*:2.2.0-beta01
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
androidx.work:work-gcm:2.2.0-beta01
एक नया Maven आर्टफ़ैक्ट है. इसकी मदद से, शेड्यूलर के तौर पर GCMNetworkManager को तब इस्तेमाल किया जा सकता है, जब Google Play services, एपीआई लेवल <= 22 के लिए उपलब्ध हो. यह ज़रूरी नहीं है. इससे, एपीआई के पुराने वर्शन पर बैकग्राउंड प्रोसेसिंग को ज़्यादा भरोसेमंद और बेहतर बनाने में मदद मिलती है. अगर आपका ऐप्लिकेशन Google Play services का इस्तेमाल करता है, तो GCMNetworkManager की सहायता अपने-आप पाने के लिए, अपनी gradle फ़ाइल में यह डिपेंडेंसी जोड़ें. Play सेवाएं उपलब्ध न होने पर, WorkManager पुराने डिवाइसों पर AlarmManager पर वापस काम करता रहेगा.
गड़बड़ियां ठीक की गईं
- Nvidia Shield K1 टैबलेट पर नेटवर्क की स्थिति ट्रैक करते समय
IllegalArgumentException
से जुड़ी गड़बड़ी को ठीक किया गया. (aosp/1010188)
वर्शन 2.1.0
वर्शन 2.1.0
11 जुलाई, 2019
androidx.work:work-*:2.1.0
रिलीज़ हो गया है. यह रिलीज़, androidx.work:work-*:2.1.0-rc01
जैसी ही है.
2.0.1 के बाद किए गए अहम बदलाव
work-runtime-ktx
को अब Java 8 की ज़रूरत है. अगर आपको कोई समस्या आती है, तो अपनेbuild.gradle
में ये चीज़ें जोड़ें:kotlinOptions { jvmTarget = "1.8" }
- WorkManager के लिए, मांग पर शुरू करने की सुविधा जोड़ी गई है. यह सुविधा, सिर्फ़ रेफ़रंस दिए जाने पर WorkManager बनाएगी. b/127497100 अपने प्रोजेक्ट को मांग पर शुरू होने के लिए सेट अप करने के लिए:
- ऑटोमैटिक शुरू करने वाले टूल को बंद करें.
- अपने कस्टम
Application
ऑब्जेक्ट परConfiguration.Provider
लागू करें. WorkManager.getInstance()
के सभी रेफ़रंस कोWorkManager.getInstance(Context)
में बदलें. इस बदलाव के तहत, हमनेWorkManager.getInstance()
को बंद कर दिया है. नएWorkManager.getInstance(Context)
को कॉल करना हमेशा सुरक्षित होता है, भले ही आपने ऑन-डिमांड शुरू करने की सुविधा का इस्तेमाल न किया हो.
PeriodicWorkRequest
अब शुरुआती देरी के साथ काम करते हैं. शुरुआती देरी सेट करने के लिए,PeriodicWorkRequest.Builder
परsetInitialDelay
तरीके का इस्तेमाल किया जा सकता है. b/111404867DelegatingWorkerFactory
का इस्तेमाल करके, रजिस्टर किए गए एक या उससे ज़्यादाWorkerFactory
को ऐक्सेस देने की सुविधा जोड़ी गई. b/131435993- WorkManager के इस्तेमाल किए जाने वाले
Executor
को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई. इससेConfiguration.Builder.setTaskExecutor
का इस्तेमाल करके, संगठन में काम करने वाले सभी लोगों का हिसाब-किताब रखा जा सकता है. 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
- जॉब शेड्यूल करने से पहले के एपीआई पर, कंस्ट्रेंट ट्रैकिंग को हटाने के साथ-साथ एज केस क्रैश को ठीक किया गया. b/129226383
StackOverflowError
में, एक से ज़्यादा टास्क को एक साथ पूरा करने से जुड़ी समस्या को ठीक किया गया. b/129091233
वर्शन 1.0.0
वर्शन 1.0.0
5 मार्च, 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
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- उस मामले को ठीक किया गया जहां
JobScheduler.getPendingJob(...)
का इस्तेमाल एपीआई 23 पर किया गया था. b/123893059 - Android 5.1 (एपीआई लेवल 22) या उससे पहले के वर्शन पर चलने वाले डिवाइसों पर
NullPointerException
को ठीक किया गया. b/123835104
वर्शन 1.0.0-beta04
4 फ़रवरी, 2019
इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- अलार्मManager पर आधारित काम करने के तरीके के लिए,periodicWork के शेड्यूल को बेहतर तरीके से शेड्यूल करना.
- एक मामले को ठीक किया गया है, जिसमें AlarmManager के आधार पर लागू करने के दौरान, WorkManager सही तरीके से पाबंदियों को ट्रैक नहीं कर पा रहा था. b/123379508
- ऐसे मामले को ठीक किया गया है जब WorkManager, AlarmManager आधारित लागू करने की प्रोसेस का इस्तेमाल करते समय, प्रोसेस बंद होने पर फिर से काम करने की कोशिश नहीं कर पाता. 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 लागू करने की प्रोसेस, पहले से चल रहे टास्क के खत्म होने की प्रोसेस से दोबारा छुटकारा पाने के लिए ज़्यादा भरोसेमंद हो गई है.
observeForever
से निगरानी किए गएLiveData
को WorkManager से ट्रैक किया जाता है. यह Room लाइब्रेरी में हुए सुधार का बैकपोर्ट है. b/74477406- अगर क्रम से लगाए गए ऑब्जेक्ट का साइज़ तय सीमा से ज़्यादा होता है, तो
Data.Builder.build()
अब अपवाद दिखाता है. ऐसा पहले सिर्फ़ बैकग्राउंड थ्रेड पर होता था, जहां इसे ठीक से मैनेज नहीं किया जा सकता था. - अतिरिक्त निर्देश बनाम रद्द किया गया काम;
getWorkInfoById()
,ListenableWorker.onStopped()
के दौरानCANCELLED
State
के साथWorkInfo
दिखाएगा. ListenableWorker
मेंnull
Result
को गड़बड़ी के तौर पर देखें. b/120362353- एपीआई 24 पर काम करने वाले Shield Tablet के लिए, अनुमानित सुधार. कभी-कभी यह
IllegalArgumentException
दिखाता है. b/119484416
एपीआई में होने वाले बदलाव
- Firebase JobDispatcher की सुविधा को हटा दिया गया है, क्योंकि इसे जल्द ही बंद किया जा रहा है. इसका मतलब है कि बीटा वर्शन में जाने के बाद,
work-firebase
आर्टफ़ैक्ट को अपडेट नहीं किया जाएगा. हम आने वाले समय में, कोई अन्य विकल्प जोड़ने पर काम कर रहे हैं. Payload
कोResult
में जोड़ा गया.Result
अब एक "सील की गई क्लास" है, जिसमें तीन खास तरीके लागू किए गए हैं. इन्हेंResult.success()
(याResult.success(Data)
),Result.failure()
(याResult.failure(Data)
), औरResult.retry()
से ऐक्सेस किया जा सकता है. आपकेListenableFuture
अब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
के लिए varrc को स्वीकार नहीं करते. यह बदलाव नुकसान पहुंचा सकता है. इसके बजाय, कलेक्शन का इस्तेमाल करें. मौजूदा कोड में बदलाव करने के लिए,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
में शफ़ल किया गया. - हम जल्द ही, उन
ListenableWorker
के लिए रेफ़रंस लागू करने की सुविधा देंगे जो Kotlin कोरूटीन (स्टेबल वर्शन के रिलीज़ होने के बाद) और RxJava2 का इस्तेमाल करते हैं.
- इंटरफ़ेस
WorkerFactory
और लागू करने का तरीकाDefaultWorkerFactory
कोWorkerFactory
नाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है. लागू करने से यह पक्का होता है कि उपयोगकर्ता के बनाए गए किसी भीWorkerFactory
इंस्टेंस के लिए, डिफ़ॉल्ट रीफ़्लेक्शन-आधारित व्यवहार को आखिरी कोशिश के तौर पर कॉल किया जाता है. यह बदलाव नुकसान पहुंचा सकता है. WorkManager.synchronous()
औरWorkContinuation.synchronous()
के साथ-साथ, उनसे जुड़े सभी तरीके हटा दिए गए हैं. एपीआई में कई तरीकों के रिटर्न टाइप के तौर परListenableFuture<Void>
जोड़ा गया. एपीआई में किया गया यह बदलाव नुकसान पहुंचा सकता है.- अब
ListenableFuture
का इस्तेमाल करके, सिंक करके डेटा पाया और देखा जा सकता है. उदाहरण के लिए,WorkManager.enqueue()
सेvoid
मिलता था, लेकिन अब इससेListenableFuture<Void>
मिलता है. ऑपरेशन पूरा होने के बाद, कोड चलाने के लिएListenableFuture.addListener(Runnable, Executor)
याListenableFuture.get()
को कॉल किया जा सकता है. - ध्यान दें कि ये
ListenableFuture
आपको यह नहीं बताते कि कार्रवाई पूरी हुई या नहीं, बल्कि यह सिर्फ़ यह बताती है कि वह पूरी हुई. यह जानकारी पाने के लिए, आपको अब भी WorkManager के अलग-अलग तरीकों को चेन करना होगा. - हम इन ऑब्जेक्ट पर
cancel()
कॉल को अनदेखा करते हैं, क्योंकि ये भ्रम पैदा करते हैं और इनकी वजह समझना मुश्किल होता है (क्या आपने ऑपरेशन रद्द किया है या उसके नतीजे को?). यहFuture
के समझौते के मुताबिक है. - सिंक किए गए
getStatus*
तरीकों के साथ समानता बनाए रखने के लिए, हमनेListenableFuture
वैरिएंट दिए हैं. साथ ही, जिन मौजूदा वैरिएंट का नाम बदलकरLiveData
दिखाया गया उनका नाम बदलकर साफ़ तौर पर "LiveData" रख दिया है, जैसे किgetStatusesByIdLiveData(UUID)
. यह एपीआई में किया गया बदलाव है.
- अब
गड़बड़ियां ठीक की गईं
- डुप्लीकेट
androidx-annotations.pro
फ़ाइलों से जुड़ी alpha09 की समस्या को ठीक किया गया. अपनी ग्रेड फ़ाइल से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
s नतीजे मिलते हैं.WorkManager.getStatus*LiveData()
सामान लौटाए गए हैं.LiveData
वर्शन 1.0.0-alpha09
19 सितंबर, 2018
आम समस्या
अगर आपको यह समस्या आती है: "ओएस से स्वतंत्र पाथ 'META-INF/proguard/androidx-annotations.pro' में एक से ज़्यादा फ़ाइलें मिली हैं", तो कृपया alpha10 में समस्या को ठीक करने के दौरान, अपनी gradle फ़ाइल में यह तरीका आज़माएं:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
गड़बड़ियां ठीक की गईं
- "100 नौकरियां" गड़बड़ी को ठीक करने के लिए, एक और सुधार जोड़ा गया. b/115560696
- रेस कंडीशन की वजह से, फ़ॉरेन की कंस्ट्रेंट से जुड़ी गड़बड़ियों को ठीक करने के लिए कुछ सुधार किए गए हैं. b/114705286
ConstraintTrackingWorker.onStopped(boolean)
कॉल कोWorker
को सौंपा गया. b/114125093- Firebase JobDispatcher के लिए, कम से कम बैकऑफ़ देरी को लागू करें. b/113304626
- बेहतर थ्रेडिंग की सुविधा, लाइब्रेरी के अंदर काम करने की गारंटी देती है.
LiveData
की अंदरूनी तौर पर डुप्लीकेट कॉपी करने से जुड़ी संभावित समस्या को ठीक करें.
एपीआई में बदलाव
- अब
WorkManager.Configuration
के हिस्से के तौर परWorkerFactory
तय करके, रनटाइम के दौरान अपनेWorker
इंस्टेंस बनाए जा सकते हैं. फ़ॉलबैक फ़ैक्ट्रीDefaultWorkerFactory
है, जो WorkManager के पिछले वर्शन के काम करने के तरीके से मेल खाती है.Worker
औरNonBlockingWorker
के लिए डिफ़ॉल्ट कन्स्ट्रक्टर को अब 'इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. कृपया नए कंस्ट्रक्टर (Worker(Context, WorkerParameters)
) का इस्तेमाल करें औरsuper(Context, WorkerParameters)
को कॉल करें. WorkManager के आने वाले वर्शन, डिफ़ॉल्ट कंस्ट्रक्टर को हटा देंगे.
- हमने अपने संगठन में,
ListenableFuture
आर्टफ़ैक्ट का इस्तेमाल करना शुरू कर दिया है. यह Guava पर निर्भर नहीं है. हम आने वाले रिलीज़ में, एपीआई में ListenableFutures की सुविधा जोड़ेंगे. इस बदलाव के बाद,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
को ठीक किया गया. बी/112272753- रिटर्न टाइप एनोटेशन को
Data.getBooleanArray(String)
औरData.getIntArray(String)
के एनोटेशन को@NonNull
के बजाय@Nullable
में बदला गया. बी/112275229
एपीआई में हुए बदलाव
Worker
अब एक नई क्लास,NonBlockingWorker
शुरू करता है. इससे, मौजूदा इस्तेमाल पर कोई असर नहीं पड़ेगा. आने वाले समय में,NonBlockingWorker
कस्टम थ्रेडिंग सलूशन के लिए पूरी तरह से काम करने वाली इकाई बन जाएगी.- रिटर्न टाइप एनोटेशन को
Data.getBooleanArray(String)
औरData.getIntArray(String)
के एनोटेशन को@NonNull
के बजाय@Nullable
में बदला गया. b/112275229 - Kotlin एक्सटेंशन:
Map.toWorkData()
को बंद कर दिया गया है. साथ ही, मौजूदा एपीआई के साथ ज़्यादा बेहतर तरीके से काम करने के लिए, टॉप-लेवलworkDataOf(vararg Pair<String, Any?>)
जोड़ा गया है.
वर्शन 1.0.0-alpha06
1 अगस्त 2018
गड़बड़ियां ठीक की गईं
- टास्क शेड्यूल करते समय, डेटाबेस लॉक होने से रोकना. b/111801342
- एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Doze मोड में होने पर
PeriodicWork
शेड्यूल के मुताबिक नहीं चलता. b/111469837 - पाबंदियों को ट्रैक करते समय, रेस कंडीशन को ठीक करें. इसकी वजह से
WorkManager
क्रैश हो जाता है. googlecodelabs/android-workmanager/issues/56 WorkRequest.Builder#build()
का इस्तेमाल करते समय, यूनीकWorkRequest
बनाएं. b/111408337RescheduleReceiver
का इस्तेमाल सिर्फ़ तब चालू करें, जबWorkRequest
के लिए इसकी ज़रूरत हो. b/111765853
वर्शन 1.0.0-alpha05
24 जुलाई, 2018
एपीआई में हुए बदलाव
WorkManager.getInstance()
को अब@Nullable
के बजाय@NonNull
के साथ एनोटेट किया गया है. इसके बजाय, अगर मैन्युअल तरीके से शुरू करने पर सिंगलटन सही तरीके से शुरू नहीं होता है, तो यह तरीकाIllegalStateException
दिखाएगा. यह एपीआई में एक बड़ा बदलाव है.- नया एपीआई,
Configuration.Builder.setMinimumLoggingLevel(int)
जोड़ा गया है. इससे, WorkManager के ज़्यादा शब्दों वाले मैसेज को कंट्रोल किया जा सकता है. डिफ़ॉल्ट रूप से, WorkManagerLog.INFO
और उसके बाद के वर्शन को लॉग करता है. Data.getString()
का हस्ताक्षर बदल दिया गया है, ताकि अब इसका डिफ़ॉल्ट मान न लिया जाए (यह ज़ाहिर तौर परnull
है). यह एपीआई में किया गया बदलाव तोड़ने वाला है.- सिर्फ़ इंटरनल इस्तेमाल के लिए ज़रूरी कुछ तरीकों को
@hide
के तौर पर मार्क किया गया है. इसमेंConstraints
कन्स्ट्रक्टर,Data.toByteArray()
, औरData.fromByteArray(byte[])
शामिल हैं. एपीआई में किया गया यह बदलाव नुकसान पहुंचा सकता है.
गड़बड़ियां ठीक की गईं
- WorkManager, अपने-आप बैकअप लेने की सुविधा के लिए तय किए गए समय पर, अब कोई काम नहीं करता. इस वजह से, ऐप्लिकेशन क्रैश हो सकता था. b/110564377
JobScheduler
का इस्तेमाल करते समय,PeriodicWorkRequest
के दो बार शेड्यूल होने की समस्या को ठीक किया गया. b/110798652- डिवाइस के बंद होने के बाद भी
PeriodicWorkRequest
ठीक से काम नहीं कर रहे थे, इस समस्या को ठीक कर दिया गया है. b/111469837 - Firebase JobDispatcher का इस्तेमाल करते समय, शुरुआती देरी से जुड़ी समस्या को ठीक किया गया. b/111141023
- दौड़ की कुछ संभावित स्थितियों और समय से जुड़ी समस्याओं को ठीक किया गया.
- सही तरीके से
BroadcastReceiver
खाली किए गए, जिनकी अब ज़रूरत नहीं थी. - ज़बरदस्ती बंद किए गए ऐप्लिकेशन के रीस्टार्ट होने पर, टास्क को फिर से शेड्यूल करने की परफ़ॉर्मेंस को ऑप्टिमाइज़ किया गया है.
TestScheduler.setAllConstraintsMet(UUID)
को दिए गएWorkRequest
को सूची में जोड़ने से पहले या बाद में कॉल करने की अनुमति है. b/111238024
बदलाव
WorkManager.getInstance()
को अब@Nullable
के बजाय@NonNull
के साथ एनोटेट किया गया है.Data.getString()
का हस्ताक्षर बदल दिया गया है, ताकि अब इसे डिफ़ॉल्ट वैल्यू न लेनी पड़े (यह साफ़ तौर परnull
है).- सिर्फ़ इंटरनल इस्तेमाल के लिए ज़रूरी कुछ तरीकों को
@hide
के तौर पर मार्क किया गया है. इसमेंConstraints
कन्स्ट्रक्टर,Data.toByteArray()
, औरData.fromByteArray(byte[])
शामिल हैं.
वर्शन 1.0.0-alpha04
26 जून, 2018
गड़बड़ियां ठीक की गईं
AlarmManager
के आधार पर लागू करने की सुविधा का इस्तेमाल करने पर,PeriodicWorkRequest
s को अब सही तरीके से फिर से शेड्यूल किया जाता है.- ज़बरदस्ती बंद करने या रीबूट करने के बाद, सभी वर्कर्स को फिर से शेड्यूल करते समय होने वाली संभावित 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()
पर फिर से शेड्यूल किया गया था. बी/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
है.