WorkManager

WorkManager API की मदद से, ऐसे टास्क को आसानी से शेड्यूल किया जा सकता है जिन्हें बाद में पूरा किया जा सकता है और जिन्हें एक साथ पूरा नहीं किया जा सकता. साथ ही, यह भी ज़रूरी है कि ये टास्क भरोसेमंद तरीके से पूरे हों. इन एपीआई की मदद से, कोई टास्क बनाया जा सकता है और उसे WorkManager को सौंपा जा सकता है, ताकि काम की शर्तें पूरी होने पर वह टास्क चलाया जा सके.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
23 अप्रैल, 2025 2.10.1 - - -

डिपेंडेंसी का एलान करना

WorkManager पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़ना होगा:

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

ग्रूवी

dependencies {
    def work_version = "2.10.1"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Kotlin

dependencies {
    val work_version = "2.10.1"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation("androidx.work:work-multiprocess:$work_version")
}

Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी के लिए, ktx दस्तावेज़ देखें.

डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.

नई समस्या बनाना

ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.

वर्शन 2.10

वर्शन 2.10.1

23 अप्रैल, 2025

androidx.work:work-*:2.10.1 रिलीज़ हो गया है. वर्शन 2.10.1 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • पाबंदी ट्रैकिंग के लिए इस्तेमाल किए गए NetworkCallback के WorkManager के रजिस्ट्रेशन से, TooManyRequestsException के ट्रिगर होने की संभावना कम करें. ((b/231499040)[https://issuetracker.google.com/231499040], b309d5).

वर्शन 2.10.0

30 अक्टूबर, 2024

androidx.work:work-*:2.10.0 रिलीज़ हो गया है. वर्शन 2.10.0 में ये कमिट शामिल हैं.

2.9.1 वर्शन के बाद किए गए अहम बदलाव

  • WorkManager से जॉब में ट्रेस टैग जोड़े गए हैं. इससे 'adb shell dumpsys jobscheduler' को समझना बहुत आसान हो जाता है, क्योंकि इसमें उस वर्कर्स का नाम शामिल होगा जो चल रहा है. WorkManager के मुख्य हिस्सों के आस-पास भी ट्रेस सेक्शन जोड़े गए हैं.
  • Configuration.workerCoroutineContext को डिस्पैचर को कंट्रोल करने के लिए जोड़ा गया था, जहां CoroutineWorker को लागू किया जाता है.
  • डेवलपर, Constraints.setRequiredNetworkRequest तरीके का इस्तेमाल करके, वर्कर के लिए NetworkRequest को कंस्ट्रेंट के तौर पर तय कर सकते हैं. इससे यह तय करने में ज़्यादा मदद मिलती है कि इस वर्कफ़्लो को किस नेटवर्क पर चलाना है.
  • WorkManager 2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है. इसमें SDK 35 के साथ काम करने के लिए कई बदलाव किए गए हैं.

वर्शन 2.10.0-rc01

24 अक्टूबर, 2024

androidx.work:work-*:2.10.0-rc01 रिलीज़ हो गया है. वर्शन 2.10.0-rc01 में ये कमिट शामिल हैं.

वर्शन 2.10.0-beta01

2 अक्टूबर, 2024

androidx.work:work-*:2.10.0-beta01 रिलीज़ हो गया है. वर्शन 2.10.0-beta01 में ये बदलाव शामिल हैं.

वर्शन 2.10.0-alpha04

18 सितंबर, 2024

androidx.work:work-*:2.10.0-alpha04 रिलीज़ हो गया है. वर्शन 2.10.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • फ़ोरग्राउंड सेवा के टाइप के आधार पर, फ़ोरग्राउंड वर्कर को बंद होने की वजह STOP_REASON_FOREGROUND_SERVICE_TIMEOUT जोड़ें. यह वजह, वर्कर के एक्सीक्यूशन टाइम आउट की वजह से बंद होने पर जोड़ी जाती है. (Ibd0af)

वर्शन 2.10.0-alpha03

4 सितंबर, 2024

androidx.work:work-*:2.10.0-alpha03 रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये कमिट शामिल हैं.

नई सुविधाएं

  • WorkManager से जॉब में ट्रेस टैग जोड़े गए हैं. इससे ‘adb shell dumpsys jobscheduler’ को समझना बहुत आसान हो जाता है, क्योंकि इसमें उस वर्कर्स का नाम शामिल होगा जो चल रहा है. WorkManager के मुख्य हिस्सों के आस-पास भी ट्रेस सेक्शन जोड़े गए हैं.

एपीआई में हुए बदलाव

  • WorkManager 2.10.0 को अब SDK 35 के साथ कंपाइल किया गया है.
  • 'कम समय तक चलने वाली सेवा' और 'डेटा सिंक' टाइप के फ़ोरग्राउंड वर्कर्स के टाइम आउट होने और WorkManager के stopSelf() को कॉल न करने पर, ANR होने की समस्या को ठीक करें. यह सुधार सिर्फ़ एपीआई 34 और 35 वाले डिवाइसों पर लागू होता है, जहां फ़ोरग्राउंड सेवा के टाइप को लॉन्च किया गया था. (ca06b2, b/364508145)
  • नए WorkerParameters एपीआई, जिनकी मदद से उस रिमोट प्रोसेस को स्विच किया जा सकता है जिससे Worker, WorkerFactory का इस्तेमाल करते समय बंधा होता है. (Ibdc8a, Ie8a90, I7373f)

गड़बड़ियां ठीक की गईं

  • WorkManager, लंबे समय से चल रहे वर्कर (यानी फ़ोरग्राउंड वर्कर) को रीस्टार्ट करने की कोशिश करते समय क्रैश होने की समस्या को ठीक करें. ऐसा तब होता है, जब फ़ोरग्राउंड वर्कर के टाइप में Android 14 की ज़रूरी शर्तों वाली अनुमतियां होती हैं, जिन्हें रद्द कर दिया गया है. (b/333957914)
  • नए प्लैटफ़ॉर्म के एपीआई को मैन्युअल तरीके से ऐक्सेस करने की सुविधा हटा दी गई है. ऐसा इसलिए किया गया है, क्योंकि AGP 7.3 या इसके बाद के वर्शन (उदाहरण के लिए, R8 वर्शन 3.3) के साथ R8 का इस्तेमाल करने पर, एपीआई मॉडलिंग की मदद से यह अपने-आप हो जाता है. साथ ही, AGP 8.1 या इसके बाद के वर्शन (उदाहरण के लिए, D8 वर्शन 8.1) का इस्तेमाल करने पर, सभी बिल्ड के लिए यह अपने-आप हो जाता है. जिन क्लाइंट ने AGP का इस्तेमाल नहीं किया है उन्हें D8 के 8.1 या उसके बाद के वर्शन पर अपडेट करने का सुझाव दिया जाता है. ज़्यादा जानकारी के लिए यह लेख देखें. (Ia60e0, b/345472586)

वर्शन 2.10.0-alpha02

17 अप्रैल, 2024

androidx.work:work-*:2.10.0-alpha02 रिलीज़ हो गया है. वर्शन 2.10.0-alpha02 में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • WorkManager में कॉन्फ़िगर किए जा सकने वाले @RestrictTo Tracer की मदद से, ट्रेस स्पैन को उत्सर्जित करने की सुविधा जोड़ी गई. (I17d7f, b/260214125)
  • Configuration.workerCoroutineContext को डिस्पैचर को कंट्रोल करने के लिए जोड़ा गया था, जहां CoroutineWorker को लागू किया जाता है. इससे WorkManager में Dispatchers.Default का इस्तेमाल पूरी तरह से रोका जा सकता है. (Icd1b7)
  • वर्कर्स के लिए कस्टम अपवाद हैंडलर जोड़ना (Ib1b74, b/261190695)
  • OneTimeWorkRequest.Builder और PeriodicWorkRequest.Builder को अब Class के बजाय KClass से बनाया जा सकता है: val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • WorkManager क्लास को Kotlin में माइग्रेट किया गया. अब LiveData, ListenableFuture या Flow दिखाने वाले तरीके, वैल्यू के लिए शून्य होने की सही जानकारी देते हैं. अगर उस कोड में, वैल्यू के मौजूद न होने की गलत मान्यताएं थीं, तो क्लाइंट के सोर्स कोड में बदलाव किए जा सकते हैं. (If6757)

वर्शन 2.10.0-alpha01

24 जनवरी, 2024

androidx.work:work-*:2.10.0-alpha01 रिलीज़ हो गया है. 2.10.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • डेवलपर, Constraints.setRequiredNetworkRequest तरीके का इस्तेमाल करके, वर्कर के लिए NetworkRequest को कंस्ट्रेंट के तौर पर तय कर सकते हैं. इससे यह तय करने में ज़्यादा मदद मिलती है कि इस वर्कफ़्लो को किस नेटवर्क पर चलाना है.

एपीआई में हुए बदलाव

  • NetworkRequest को शर्त के तौर पर बताने की सुविधा जोड़ी गई. (Id98a1, b/280634452)

वर्शन 2.9

वर्शन 2.9.1

7 अगस्त, 2024

androidx.work:work-*:2.9.1 रिलीज़ हो गया है. वर्शन 2.9.1 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • WorkManager, लंबे समय से चल रहे वर्कर (यानी फ़ोरग्राउंड वर्कर) को रीस्टार्ट करने की कोशिश करते समय क्रैश होने की समस्या को ठीक करें. ऐसा तब होता है, जब फ़ोरग्राउंड वर्कर के टाइप में Android 14 की ज़रूरी शर्तों वाली अनुमतियां होती हैं, जिन्हें रद्द कर दिया गया है. (b/333957914)

वर्शन 2.9.0

29 नवंबर, 2023

androidx.work:work-*:2.9.0 रिलीज़ हो गया है. 2.9.0 वर्शन में ये बदलाव शामिल हैं.

2.8.0 के बाद किए गए ज़रूरी बदलाव

  • Flow-s के ज़रिए निगरानी करना. LiveData के बजाय, अब फ़्लो के WorkManager.getWorkInfosFlow और इससे मिलते-जुलते तरीकों से, वर्कफ़्लो की प्रोग्रेस देखी जा सकती है.
  • अब WorkManager से यह पता चलता है कि किसी कर्मचारी को पहले क्यों रोका गया था. getStopReason() तरीके से, वर्कर्स से खुद क्वेरी की जा सकती है या WorkInfo से getStopReason() की मदद से क्वेरी की जा सकती है.
  • setNextScheduleTimeOverride की मदद से, समय-समय पर काम करने वाले लोगों के लिए शेड्यूल तय करना. इससे, अगले समय-समय पर होने वाले काम के शेड्यूल की डाइनैमिक कैलकुलेशन की जा सकती है. इसका इस्तेमाल, ऐडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राइ करने के तरीके जैसी ऐडवांस सुविधाओं को लागू करने के लिए किया जा सकता है. इसके अलावा, इससे उपयोगकर्ता के हर सुबह जागने से पहले, न्यूज़फ़ीड वर्कर्स को बिना किसी रुकावट के चलाया जा सकता है. अगले वर्कर को शेड्यूल करते समय, मौजूदा वर्कर को रद्द होने से बचाने के लिए, ExistingPeriodicWorkPolicy.UPDATE का इस्तेमाल इन तकनीकों के साथ किया जाना चाहिए.
  • प्रोडक्शन में थ्रेडिंग मैचिंग की सुविधा के साथ, WorkManager की टेस्टिंग. Configuration में सेट किए गए एक्ज़ीक्यूटर को बनाए रखने और असली मुख्य थ्रेड का इस्तेमाल करने के लिए, initializeTestWorkManager में ExecutorsMode.PRESERVE_EXECUTORS का इस्तेमाल किया जा सकता है.
  • CoroutineWorker जैसे कोरूटीन एपीआई को अतिरिक्त आर्टफ़ैक्ट work-runtime-ktx से मुख्य आर्टफ़ैक्ट work-runtime में ले जाया गया है. work-runtime-ktx अब खाली है.

एपीआई में हुए बदलाव

  • stopReason को WorkInfo में जोड़ा गया. यह वर्कर के चलने के बाद, stopReason को उपलब्ध कराता है. यह stopReason की रिपोर्टिंग में मददगार हो सकता है, क्योंकि किसी वर्कर्स को बंद करने के बाद, ऐप्लिकेशन खुद ही बहुत तेज़ी से बंद हो सकता है. (I21386)
  • Clock को कॉन्फ़िगरेशन की मदद से सेट करने और वर्कर्स टेस्ट के क्रम से चलाने के लिए इस्तेमाल करने की अनुमति दें. (Ic586e)
  • getStopReason() का तरीका ListenableWorker में जोड़ा गया था, जिससे यह पता चलता है कि वर्कफ़्लो को क्यों रोका गया था. (I07060)
  • लीक हुए संसाधनों के बारे में Closeguard की चेतावनी से बचने के लिए, WorkManagerTestInitHelper#closeWorkDatabase() जोड़ा गया. (Ia8d49)
  • WorkInfo का कंस्ट्रक्टर अब सार्वजनिक है. इससे टेस्टिंग में मदद मिल सकती है. (Ia00b6, b/209145335)
  • work-runtime-ktx अब खाली है, CoroutineWorker और Kotlin के लिए खास तौर पर बनाई गई अन्य सुविधाएं, अब मुख्य वर्क-रनटाइम आर्टफ़ैक्ट में उपलब्ध हैं. (I71a9a)
  • setNextScheduleTimeOverride तरीका जोड़ा गया, जिससे समय-समय पर काम के शेड्यूल को सटीक तरीके से सेट किया जा सकता है (I3b4da)
  • शेड्यूल किए गए रन टाइम की जानकारी पाने के लिए, getNextScheduleTimeMillis को WorkInfo में जोड़ा गया है. (I797e4)
  • शुरुआती देरी और समयावधि की जानकारी WorkInfo में जोड़ी जाती है. (I52f2f)
  • getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a) तरीकों की मदद से, फ़्लो के ज़रिए वर्कर्स को ऑब्ज़र्व करने का तरीका जोड़ा गया
  • Constraints के कन्स्ट्रक्टर और प्रॉपर्टी में, @RequiresApi(...) एनोटेशन जोड़े गए. अब ये Constraints.Builder के सेटर पर मौजूद एनोटेशन के साथ अलाइन हो गए हैं, जो WorkManager के शुरुआती वर्शन से मौजूद थे. (I6d7d2)
  • WorkManager में अब कॉन्टेंट यूआरआई वर्कर्स के लिए अलग से सीमा तय की गई है, ताकि उन्हें JobScheduler में गारंटी वाले स्लॉट दिए जा सकें. इससे, ज़्यादा लोड होने पर कॉन्टेंट के अपडेट न होने से बचा जा सकेगा. इस सीमा को Configuration.Builder.setContentUriTriggerWorkersLimit की मदद से कॉन्फ़िगर किया जा सकता है. (Ic128f)
  • WorkInfo में कंस्ट्रेंट जोड़े गए हैं. (I162c0)

वर्शन 2.9.0-rc01

18 अक्टूबर, 2023

androidx.work:work-*:2.9.0-rc01 रिलीज़ हो गया है. 2.9.0-rc01 वर्शन में ये बदलाव शामिल हैं.

  • बीटा वर्शन के पिछली बार रिलीज़ होने के बाद से कोई बदलाव नहीं हुआ

वर्शन 2.9.0-beta01

6 सितंबर, 2023

androidx.work:work-*:2.9.0-beta01 रिलीज़ हो गया है. 2.9.0-beta01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

वर्शन 2.9.0-alpha02

26 जुलाई, 2023

androidx.work:work-*:2.9.0-alpha02 रिलीज़ हो गया है. 2.9.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब WorkManager से यह पता चलता है कि किसी कर्मचारी को पहले क्यों रोका गया था. getStopReason() तरीके से, वर्कर्स से खुद क्वेरी की जा सकती है या WorkInfo से getStopReason() की मदद से क्वेरी की जा सकती है.

एपीआई में हुए बदलाव

  • stopReason को WorkInfo में जोड़ा गया. यह वर्कर के चलने के बाद, stopReason को उपलब्ध कराता है. यह stopReason की रिपोर्टिंग को बेहतर बनाने में मदद कर सकता है, क्योंकि किसी वर्कर्स को बंद करने के बाद, ऐप्लिकेशन को तुरंत बंद किया जा सकता है. (I21386)
  • कॉन्फ़िगरेशन की मदद से क्लॉक सेट करने की अनुमति दें. साथ ही, Worker टेस्ट के क्रम से चलाने के लिए इसका इस्तेमाल करें. (Ic586e)
  • getStopReason() का तरीका ListenableWorker में जोड़ा गया था. इससे यह पता चलता है कि वर्कफ़्लो को क्यों रोका गया था. (I07060)
  • लीक हुए संसाधनों के बारे में Closeguard की चेतावनी से बचने के लिए, WorkManagerTestInitHelper#closeWorkDatabase() जोड़ा गया. (Ia8d49)

गड़बड़ियां ठीक की गईं

  • TestDriver का इस्तेमाल करके overrideNextScheduleTime को बायपास करने की सुविधा जोड़ी गई. साथ ही, जांच करने से जुड़ी समस्याओं को ठीक किया गया. (Ic2905)

वर्शन 2.9.0-alpha01

7 जून, 2023

androidx.work:work-*:2.9.0-alpha01 रिलीज़ हो गया है. 2.9.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Flow-s के ज़रिए निगरानी करना. LiveData के बजाय, अब फ़्लो के WorkManager.getWorkInfosFlow और इससे मिलते-जुलते तरीकों से, वर्कफ़्लो की प्रोग्रेस देखी जा सकती है.
  • setNextScheduleTimeOverride की मदद से, समय-समय पर काम करने वाले लोगों के लिए शेड्यूल तय करना. इससे, अगले समय-समय पर होने वाले काम के शेड्यूल की डाइनैमिक कैलकुलेशन की जा सकती है. इसका इस्तेमाल, ऐडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राइ करने के तरीके जैसी ऐडवांस सुविधाओं को लागू करने के लिए किया जा सकता है. इसके अलावा, इससे उपयोगकर्ता के हर सुबह जागने से पहले, न्यूज़फ़ीड वर्कर्स को बिना किसी रुकावट के चलाया जा सकता है. अगले वर्कर को शेड्यूल करते समय, ExistingPeriodicWorkPolicy.UPDATE का इस्तेमाल इन तकनीकों के साथ किया जाना चाहिए, ताकि चल रहे वर्कर को रद्द न किया जाए.
  • WorkManager की टेस्टिंग, थ्रेडिंग मैचिंग प्रोडक्शन के साथ की जा रही है. ExecutorsMode.PRESERVE_EXECUTORS का इस्तेमाल, Configuration में सेट किए गए एक्ज़ीक्यूटर को बनाए रखने और असली मुख्य थ्रेड का इस्तेमाल करने के लिए किया जा सकता है.
  • CoroutineWorker जैसे कोरूटीन एपीआई को अतिरिक्त आर्टफ़ैक्ट work-runtime-ktx से मुख्य आर्टफ़ैक्ट work-runtime में ले जाया गया है. work-runtime-ktx अब खाली है.

एपीआई में हुए बदलाव

  • WorkInfo का कंस्ट्रक्टर अब सार्वजनिक है. इससे टेस्टिंग में मदद मिल सकती है. (Ia00b6, b/209145335)
  • work-runtime-ktx अब खाली है, CoroutineWorker और Kotlin से जुड़ी अन्य सुविधाएं अब मुख्य work-runtime आर्टफ़ैक्ट में उपलब्ध हैं. (I71a9a)
  • setNextScheduleTimeOverride तरीका जोड़ा गया, जिससे समय-समय पर काम के शेड्यूल को सटीक तरीके से सेट किया जा सकता है (I3b4da)
  • getEarliestRunTimeMillis का नाम बदलकर getNextScheduleTimeMillis किया गया. (I2bd7a)
  • अगली बार चलाने के शेड्यूल किए गए समय की जानकारी, WorkInfo में जोड़ दी जाती है. (I797e4)
  • शुरुआती देरी और समयावधि की जानकारी WorkInfo में जोड़ी जाती है. (I52f2f)
  • getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a) तरीकों की मदद से, फ़्लो के ज़रिए वर्कर्स को ऑब्ज़र्व करने का तरीका जोड़ा गया
  • Constraints के कन्स्ट्रक्टर और प्रॉपर्टी में, @RequiresApi(...) एनोटेशन जोड़े गए. अब ये Constraints.Builder के सेटर पर मौजूद एनोटेशन के साथ अलाइन हो गए हैं, जो WorkManager के शुरुआती वर्शन से मौजूद थे. (I6d7d2)
  • WorkManager में अब कॉन्टेंट यूआरआई वर्कर्स के लिए अलग से सीमा तय की गई है, ताकि उन्हें JobScheduler में गारंटी वाले स्लॉट दिए जा सकें. इससे, ज़्यादा लोड होने पर कॉन्टेंट के अपडेट न होने से बचा जा सकेगा. सीमा को Configuration.Builder.setContentUriTriggerWorkersLimit के ज़रिए कॉन्फ़िगर किया जा सकता है. (Ic128f)
  • WorkInfo में कंस्ट्रेंट जोड़े गए हैं. (I162c0)

वर्शन 2.8

वर्शन 2.8.1

22 मार्च, 2023

androidx.work:work-*:2.8.1 रिलीज़ हो गया है. 2.8.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • RescheduleReceiver में ANR की समस्या को ठीक किया गया है. इससे पहले, एक साथ दो ब्रॉडकास्ट को सही तरीके से मैनेज नहीं किया जा सकता था. (b/236906724)

वर्शन 2.8.0

8 फ़रवरी, 2023

androidx.work:work-*:2.8.0 रिलीज़ हो गया है. 2.8.0 वर्शन में ये बदलाव शामिल हैं.

2.7.0 के बाद किए गए अहम बदलाव

नई सुविधाएं

एपीआई में हुए बदलाव

  • WorkManager.updateWork को जोड़ा गया था, ताकि काम को अपडेट किया जा सके. इसमें, टास्क को सूची में जोड़ने का मूल समय और चेनिंग को बनाए रखा गया.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE को जोड़ा गया. इस नीति की मदद से, समय-समय पर होने वाले काम को नाम से अपडेट किया जा सकता है. यह मौजूदा REPLACE से मिलता-जुलता है, लेकिन यह कम रुकावट पैदा करता है: अगर कोई वर्कर फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता और यह सूची में जोड़ने में लगने वाले समय को सेव रखता है - शुरुआती देरी और अवधि का हिसाब, अपडेट करने के समय के बजाय, सूची में जोड़ने के मूल समय से लगाया जाता है. REPLACE और UPDATE, दोनों के नाम काफ़ी मिलते-जुलते हैं. इसलिए, इन दोनों के बीच भ्रम को कम करने के लिए, REPLACE को बंद कर दिया गया है. अगर आपको अब भी REPLACE के पिछले सेमेटिक्स को बनाए रखना है, तो REPLACE से मिलते-जुलते नए CANCEL_AND_REENQUEUE का इस्तेमाल किया जा सकता है. (I985ed, b/219446409)
  • setSchedulingExceptionHandler के ज़रिए Consumer<Throwable> उपलब्ध कराकर, शेड्यूलिंग से जुड़े अपवादों को इंटरसेप्ट करने की सुविधा जोड़ी गई)
  • setInitializationExceptionHandler की मदद से Consumer<Throwable> देने की सुविधा जोड़ी गई है. इससे यह पता चलता है कि WorkManager को शुरू करने के दौरान कोई समस्या आई थी या नहीं.
  • OneTimeWorkRequest और PeriodicWorkRequest के लिए इनलाइन हेल्पर, androidx.work:work-runtime-ktx से androidx.work:work-runtime पर ले जाए गए (I0010f, b/209145335)
  • WorkQuery को सीधे तौर पर बनाने के लिए, सहायक तरीके WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags जोड़े गए थे. (b/199919736) (If48f2, b/199919736)
  • getForegroundInfo को Worker में जोड़ा गया. (Ic1ead)
  • RxWorker RxJava 2 और RxJava 3, दोनों के लिए अब setForeground है, जो Completable दिखाता है. इसका इस्तेमाल setForegroundInfoAsync के बजाय किया जा सकता है, जो ListenableFuture दिखाता है
  • RxJava 2 और RxJava 3, दोनों के लिए RxWorker में getForegroundInfo है, जो Single दिखाता है. इसका इस्तेमाल getForegroundInfoAsync के बजाय किया जा सकता है, जो ListenableFuture दिखाता है. (b/203851459)
  • Constraints.Builder का इस्तेमाल करने के बजाय, अब सीधे तौर पर शर्तें बनाई जा सकती हैं. यह Kotlin के उपयोगकर्ताओं के लिए सुविधाजनक है. (Idc390, b/137568653)
  • WorkManager को शुरू किया गया है या नहीं, यह देखने की सुविधा जोड़ी गई है. साथ ही, लाइब्रेरी डेवलपर के लिए एक नया getConfiguration() एपीआई जोड़ा गया है, ताकि वे उस कॉन्फ़िगरेशन को ऐक्सेस कर सकें जिससे WorkManager को शुरू किया गया था. (I6eff3, b/212300336)

गड़बड़ियां ठीक की गईं

  • 'ज़्यादा वर्कर इस्तेमाल करने वाला शेड्यूलर' से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, लोड होने पर वर्कर तुरंत नहीं चल पाते थे. (I9686b, b/248111307)
  • उन एपीआई में @RequiresPermission जोड़ा गया जिन्हें SDK टूल के 33 और उसके बाद के वर्शन पर POST_NOTIFICATIONS अनुमति देनी ज़रूरी है. (Ie542e, b/238790278)
  • suspendCancellableCoroutine का इस्तेमाल करते समय, CoroutineScope में रद्द किए गए ऑर्डर की जानकारी को ListenableFuture में भेजें.

वर्शन 2.8.0-rc01

7 दिसंबर, 2022

androidx.work:work-*:2.8.0-rc01 रिलीज़ हो गया है. 2.8.0-rc01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • इस रिलीज़ में कोई नई सुविधा नहीं है. यह मुख्य रूप से वर्शन में बदलाव है

वर्शन 2.8.0-beta02

9 नवंबर, 2022

androidx.work:work-*:2.8.0-beta02 रिलीज़ हो गया है. 2.8.0-beta02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • WorkInfo में equals का तरीका ठीक किया गया है. पहले यह तरीका, नई जनरेशन की जानकारी को ध्यान में नहीं रखता था. (4977cc)

वर्शन 2.8.0-beta01

5 अक्टूबर, 2022

androidx.work:work-*:2.8.0-beta01 रिलीज़ हो गया है. 2.8.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • 'ज़्यादा वर्कर इस्तेमाल करने वाला शेड्यूलर' से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, लोड होने पर वर्कर तुरंत नहीं चल पाते थे. (I9686b, b/248111307)

वर्शन 2.8.0-alpha04

7 सितंबर, 2022

androidx.work:work-*:2.8.0-alpha04 रिलीज़ हो गया है. 2.8.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • WorkerInfo.getGeneration() और WorkerParameters.getGeneration() जोड़े गए हैं, जो किसी कर्मचारी की पीढ़ी दिखाते हैं. अगर किसी वर्कफ़्लो को ExistingPeriodicWorkPolicy.UPDATE का इस्तेमाल करके WorkManager.updateWork या WorkManager.enqueueUniquePeriodicWork से अपडेट किया गया है, तो उस वर्कफ़्लो की कई जनरेशन होंगी. ध्यान दें कि अगर वर्कर फ़िलहाल चल रहा है, तो हो सकता है कि इस तरीके से, फ़िलहाल चल रहे वर्कर की तुलना में नई जनरेशन का वर्कर दिखे. ऐसा तब होता है, जब वर्कर के चलने के दौरान कोई अपडेट हो जाता है. (I665c5, b/219446409) (I128a9, b/219446409)
  • InitializationExceptionHandler को जोड़ा गया है. यह एक अपवाद हैंडलर है. इसका इस्तेमाल यह पता लगाने के लिए किया जा सकता है कि WorkManager को शुरू करने के दौरान कोई समस्या हुई थी या नहीं. (I061de)

वर्शन 2.8.0-alpha03

10 अगस्त, 2022

androidx.work:work-*:2.8.0-alpha03 रिलीज़ हो गया है. 2.8.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkRequests को बिना किसी रुकावट के अपडेट करने की सुविधा जोड़ी गई है. इससे, लाइन में जोड़ने का मूल समय, चेन वगैरह को बनाए रखा जा सकता है. ज़्यादा जानकारी के लिए, WorkManager.updateWork और ExistingPeriodicWorkPolicy.UPDATE देखें.

एपीआई में हुए बदलाव

  • WorkManager.updateWork को जोड़ा गया था, ताकि काम को अपडेट किया जा सके. इसमें, टास्क को सूची में जोड़ने का मूल समय और चेनिंग को बनाए रखा गया.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE को जोड़ा गया. इस नीति की मदद से, समय-समय पर होने वाले काम को नाम से अपडेट किया जा सकता है. यह मौजूदा REPLACE से मिलता-जुलता है, लेकिन यह कम रुकावट पैदा करता है: अगर कोई वर्कर्स फ़िलहाल चल रहा है, तो यह उसे रद्द नहीं करता. साथ ही, यह लाइन में जोड़ने का समय बनाए रखता है - शुरुआती देरी और अवधि का हिसाब, अपडेट करने के समय के बजाय, लाइन में जोड़ने के मूल समय से लगाया जाता है. REPLACE और UPDATE के नाम काफ़ी मिलते-जुलते हैं. इसलिए, इनमें अंतर करने के लिए REPLACE को बंद कर दिया गया है. अगर आपको अब भी REPLACE के पिछले सेमेटिक्स को बनाए रखना है, तो REPLACE से मिलते-जुलते नए CANCEL_AND_REENQUEUE का इस्तेमाल किया जा सकता है. (I985ed, b/219446409)
  • SchedulingExceptionHandler तय करके, शेड्यूल से जुड़े अपवादों को इंटरसेप्ट करने की सुविधा जोड़ें. (I033eb)
  • OneTimeWorkRequest और PeriodicWorkRequest के लिए इनलाइन हेल्पर, androidx.work:work-runtime-ktx से androidx.work:work-runtime पर ले जाए गए (I0010f, b/209145335)

गड़बड़ियां ठीक की गईं

  • SDK टूल के 33 और उसके बाद के वर्शन पर, POST_NOTIFICATIONS अनुमति देने की ज़रूरत वाले एपीआई में @RequiresPermission जोड़ा गया है. (Ie542e, b/238790278)

वर्शन 2.8.0-alpha02

6 अप्रैल, 2022

androidx.work:work-*:2.8.0-alpha02 रिलीज़ हो गया है. 2.8.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • अब Builder का इस्तेमाल करने के बजाय, सीधे तौर पर शर्तें बनाई जा सकती हैं. यह Kotlin इस्तेमाल करने वालों के लिए सुविधाजनक है. (Idc390, b/137568653)
  • WorkManager को शुरू किया गया है या नहीं, यह देखने की सुविधा जोड़ी गई है. साथ ही, लाइब्रेरी डेवलपर के लिए एक नया getConfiguration() एपीआई जोड़ा गया है, ताकि वे उस कॉन्फ़िगरेशन को ऐक्सेस कर सकें जिससे WorkManager को शुरू किया गया था. (I6eff3, b/212300336)

वर्शन 2.8.0-alpha01

12 जनवरी, 2022

androidx.work:work-*:2.8.0-alpha01 रिलीज़ हो गया है. 2.8.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • सीधे तौर पर WorkQuery बनाने के लिए, सहायक तरीके WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames, WorkQuery.fromTags जोड़े गए थे. (If48f2, b/199919736)
  • आने वाले समय में इस्तेमाल होने वाले SDK टूल के लिए, BuildCompat के प्रयोग के तौर पर उपलब्ध तरीके जोड़े गए हैं (Iafd82, b/207528937)
  • Worker में getForegroundInfo जोड़ें. (Ic1ead)
  • सीधे आईडी से WorkQuery बनाने के लिए, सहायक तरीके WorkQuery.fromIds जोड़े गए. (Ie5bdf, b/199919736)
  • RxWorker में अब setForeground, Completable दिखाता है. इसका इस्तेमाल, ListenableFuture दिखाने वाले setForegroundInfoAsync के बजाय किया जा सकता है. (I85156)
  • RxJava 2 के लिए RxWorker में अब getForegroundInfo, Single दिखाता है. इसका इस्तेमाल, ListenableFuture दिखाने वाले getForegroundInfoAsync के बजाय किया जा सकता है. (I21c91, b/203851459)
  • RxJava 3 के लिए RxWorker में अब getForegroundInfo, Single दिखाता है. इसका इस्तेमाल, ListenableFuture दिखाने वाले getForegroundInfoAsync के बजाय किया जा सकता है. (I1ca8a)
  • RxWorker में अब setForeground, Completable दिखाता है. इसका इस्तेमाल, ListenableFuture दिखाने वाले setForegroundInfoAsync के बजाय किया जा सकता है. (I992a3, b/203851459)

गड़बड़ियां ठीक की गईं

  • suspendCancellableCoroutine का इस्तेमाल करते समय, CoroutineScope में रद्द किए गए ऑर्डर की जानकारी को ListenableFuture में भेजें. (I77e63)

वर्शन 2.7

वर्शन 2.7.1

17 नवंबर, 2021

androidx.work:work-*:2.7.1 रिलीज़ हो गया है. 2.7.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • suspendCancellableCoroutine का इस्तेमाल करने पर, CoroutineScope में रद्द किए गए ऑर्डर की जानकारी ListenableFuture में भेजी जाती है. (I77e63)
  • अगर देर से किए गए काम के अनुरोधों को 'जल्द से जल्द पूरा करें' के तौर पर मार्क किया जाता है, तो तुरंत एक अपवाद दिखता है. bef1762

वर्शन 2.7.0

13 अक्टूबर, 2021

androidx.work:work-*:2.7.0 रिलीज़ हो गया है. 2.7.0 वर्शन में ये बदलाव शामिल हैं.

2.6.0 के बाद किए गए अहम बदलाव

  • Android 12 में फ़ोरग्राउंड सेवा से जुड़ी पाबंदियों को मैनेज करने के लिए, WorkManager में नया WorkRequest.Builder.setExpedited(...) एपीआई जोड़ा गया है.

  • setExpedited(...) का इस्तेमाल करने पर, WorkManager, Android 12 से शुरू होने वाले JobScheduler में तेज़ी से होने वाले कामों को डेलिगेट करता है. साथ ही, फ़ोरग्राउंड सेवा को डेलिगेट करके, Android के पुराने वर्शन पर बैकवर्ड कम्पैटिबिलिटी भी देता है.

वर्शन 2.7.0-rc01

29 सितंबर, 2021

androidx.work:work-*:2.7.0-rc01 रिलीज़ हो गया है. 2.7.0-rc01 वर्शन में ये बदलाव शामिल हैं.

यह वर्शन androidx.work:work-*:2.7.0-beta01 जैसा ही है.

वर्शन 2.7.0-beta01

1 सितंबर, 2021

androidx.work:work-*:2.7.0-beta01 रिलीज़ हो गया है. 2.7.0-beta01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkManager को शुरू करते समय, SQLite के लिए कई प्रोसेस के बीच होने वाले संघर्ष को कम करें.

एपीआई में हुए बदलाव

  • @ExperimentalExpeditedWork एपीआई हटाएं, क्योंकि Android 12 (S) के लिए मौजूदा प्लैटफ़ॉर्म एपीआई, स्टेबल हैं. (aosp/1792806)

गड़बड़ियां ठीक की गईं

  • getForegroundInfoAsync() लागू न करने वाले तेज़ी से काम करने वाले लोगों के लिए, गड़बड़ी का बेहतर मैसेज दें. (aosp/1809376)

वर्शन 2.7.0-alpha05

21 जुलाई, 2021

androidx.work:work-*:2.7.0-alpha05 रिलीज़ हो गया है. 2.7.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

इस रिलीज़ में, WorkManager 2.6.0-beta02 रिलीज़ से जुड़ी गड़बड़ियां भी ठीक की गई हैं.

वर्शन 2.7.0-alpha04

2 जून, 2021

androidx.work:work-*:2.7.0-alpha04 रिलीज़ हो गया है.

इस रिलीज़ में, 2.6.0-beta01 रिलीज़ में किए गए बदलाव भी शामिल हैं.

एपीआई में हुए बदलाव

  • ListenableWorker.setForegroundAsync() का अब इस्तेमाल किया जा सकता है.
  • हमारा सुझाव है कि जब भी हो सके, WorkRequest.Builder.setExpedited(...) API का इस्तेमाल करें. ऐप्लिकेशन पर फ़ोरग्राउंड सेवा से जुड़ी पाबंदियां न होने पर, डेवलपर ListenableWorker.setForegroundAsync() एपीआई का इस्तेमाल करके बेहतर तरीके से काम कर सकते हैं.
  • अगर ऐप्लिकेशन पर फ़ोरग्राउंड सेवा से जुड़ी पाबंदियां लगी हैं और ListenableWorker.setForegroundAsync() को कॉल किया जाता है, तो ForegroundServiceStartNotAllowedException को थ्रॉ किया जाएगा.

गड़बड़ियां ठीक की गईं

  • जल्दी किए जाने वाले टास्क को फिर से शेड्यूल करने पर, उन्हें जल्दी नहीं किया जाता. ये नियमित जॉब बन जाते हैं.

वर्शन 2.7.0-alpha03

21 अप्रैल, 2021

androidx.work:work-*:2.7.0-alpha03 रिलीज़ हो गया है. 2.7.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkManager 2.6.0-alpha02 से: किसी भी प्रोसेस में चलने वाले वर्कर के लिए सहायता जोड़ता है. (Iaf200)

  • WorkManager 2.6.0-alpha02 से: RemoteCoroutineWorker जोड़ा गया है. यह RemoteListenableWorker का एक ऐसा वर्शन है जो किसी रिमोट प्रोसेस से बंध सकता है. (I30578)

एपीआई में हुए बदलाव

  • WorkManager 2.6.0-alpha02 में:TEMPORARILY_UNMETERED नेटवर्क की पाबंदी के लिए सहायता जोड़ी गई है. (I08d5e)
  • WorkManager 2.6.0-alpha02 से:setProgressAsync() के लिए, मल्टी-प्रोसेस वर्कर की सुविधा. (Ib6d08)
  • WorkManager 2.6.0-alpha02 में:WorkManagerInitializer को सार्वजनिक करें, ताकि अन्य androidx.startup.Initializer इनका इस्तेमाल डिपेंडेंसी के तौर पर कर सकें. (I5ab11)

वर्शन 2.7.0-alpha02

10 मार्च, 2021

androidx.work:work-*:2.7.0-alpha02 रिलीज़ हो गया है. 2.7.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Android 12 को टारगेट करते समय क्रैश को ठीक करने के लिए, PendingIntent की म्यूटेबिलिटी के बारे में साफ़ तौर पर बताएं. (b/180884673)

वर्शन 2.7.0-alpha01

18 फ़रवरी, 2021

androidx.work:work-*:2.7.0-alpha01 रिलीज़ हो गया है. 2.7.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Android 12 में फ़ोरग्राउंड सेवा से जुड़ी पाबंदियों को ध्यान में रखते हुए, WorkManager में एक नयाWorkRequest.Builder.setExpedited(...) एपीआई जोड़ा गया है.

    ऐप्लिकेशन अब बैकग्राउंड में होने पर, फ़ोरग्राउंड सेवा लॉन्च नहीं कर सकते. इसलिए, लंबे समय तक चलने वाले ऐसे काम के लिए बेहतर तरीके से मदद करने के लिए जो पहले फ़ोरग्राउंड सेवा के लाइफ़साइकल से जुड़े थे, ऐप्लिकेशन WorkRequest को तेज़ी से प्रोसेस किए जाने वाले के तौर पर मार्क कर सकते हैं.

    यह एपीआई, setForegroundAsync(...) / setForeground(...) एपीआई की जगह लेगा. इन एपीआई का इस्तेमाल अब नहीं किया जा सकता.

    setExpedited(...) का इस्तेमाल करते समय, WorkManager, Android 12 से शुरू होने वाले JobScheduler में तेज़ी से होने वाले कामों को डेलिगेट करता है. साथ ही, फ़ोरग्राउंड सेवाओं को डेलिगेट करके, Android के पुराने वर्शन पर बैकवर्ड कम्पैटिबिलिटी भी देता है,

एपीआई में हुए बदलाव

  • तेज़ शिपिंग की सुविधा के लिए WorkRequest जोड़ें.

वर्शन 2.6.0

वर्शन 2.6.0

1 सितंबर, 2021

androidx.work:work-*:2.6.0 रिलीज़ हो गया है. 2.6.0 वर्शन में ये बदलाव शामिल हैं.

2.5.0 के बाद किए गए ज़रूरी बदलाव

  • WorkManager को शुरू करने के लिए, अब androidx.startup का इस्तेमाल किया जाता है. अगर आपने पहले WorkManager को शुरू करने के लिए tools:node="remove" का इस्तेमाल किया था, तो आपको इसके बजाय यह तरीका अपनाना होगा.ContentProvider

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • किसी भी प्रोसेस में चलने वाले वर्कर के लिए सहायता जोड़ी गई. (Iaf200)

  • RemoteCoroutineWorker जोड़ा गया, जो RemoteListenableWorker को लागू करने वाला एक टूल है. यह किसी रिमोट प्रोसेस से बंध सकता है. (I30578)

वर्शन 2.6.0-rc01

4 अगस्त, 2021

androidx.work:work-*:2.6.0-rc01 रिलीज़ हो गया है. 2.6.0-rc01 वर्शन में ये बदलाव शामिल हैं.

यह वर्शन androidx.work:work-*:2.6.0-beta02 जैसा ही है.

वर्शन 2.6.0-beta02

21 जुलाई, 2021

androidx.work:work-*:2.6.0-beta02 रिलीज़ हो गया है. 2.6.0-beta02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • RemoteWorkManager अब RemoteWorkManagerService से सही तरीके से अनलिंक हो जाता है. इससे RemoteWorkManagerService को सही तरीके से खाली करने में मदद मिलती है. aosp/1730694
  • RemoteListenableWorker अब RemoteWorkerService से सही तरीके से अनबाइंड हो जाता है. इससे RemoteWorkerService को सही तरीके से खाली करने में मदद मिलती है. aosp/1743817
  • ForceStopRunnable अब सिर्फ़ मुख्य ऐप्लिकेशन प्रोसेस में चलता है. यह एक ऑप्टिमाइज़ेशन है. इससे, एक से ज़्यादा प्रोसेस का इस्तेमाल करने वाले ऐप्लिकेशन के लिए, संसाधनों की कमी नहीं होती. aosp/1749180, aosp/1761729

वर्शन 2.6.0-beta01

2 जून, 2021

androidx.work:work-*:2.6.0-beta01 रिलीज़ हो गया है. 2.6.0-beta01 वर्शन में ये बदलाव शामिल हैं.

इस रिलीज़ में दस्तावेज़ से जुड़े कुछ छोटे सुधार किए गए हैं. यह रिलीज़, 2.6.0-alpha02 से काफ़ी हद तक मिलती-जुलती है.

वर्शन 2.6.0-alpha02

21 अप्रैल, 2021

androidx.work:work-*:2.6.0-alpha02 रिलीज़ हो गया है. 2.6.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • किसी भी प्रोसेस में चलने वाले वर्कर के लिए सहायता जोड़ता है. (Iaf200)

  • RemoteCoroutineWorker जोड़ा गया, जो RemoteListenableWorker का लागू किया गया वर्शन है. यह किसी रिमोट प्रोसेस से बंधा हो सकता है. (I30578)

एपीआई में हुए बदलाव

  • TEMPORARILY_UNMETERED नेटवर्क की पाबंदी के लिए सहायता जोड़ी गई. (I08d5e)
  • setProgressAsync() के लिए, मल्टी-प्रोसेस वर्कर की सुविधा. (Ib6d08)
  • WorkManagerInitializer को सार्वजनिक करें, ताकि अन्य androidx.startup.Initializer इनका इस्तेमाल डिपेंडेंसी के तौर पर कर सकें. (I5ab11)

वर्शन 2.6.0-alpha01

24 मार्च, 2021

androidx.work:work-*:2.6.0-alpha01 रिलीज़ हो गया है. 2.6.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkManager अब WorkManager को शुरू करने के लिए, androidx.startup का इस्तेमाल करता है. पहले, androidx.work.impl.WorkManagerInitializer यह काम करता था. (aosp/1608813)

    अगर आपने tools:node="remove" का इस्तेमाल किया है, तो आपको इसके बजाय यह तरीका अपनाना होगा.ContentProvider

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (या)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

एपीआई में हुए बदलाव

  • ListenableWorker का outputData दिखाने वाला Result.getOutputData() एपीआई जोड़ें. (Ie51e3)

गड़बड़ियां ठीक की गईं

  • OEM की किसी ऐसी गड़बड़ी को ठीक करने का तरीका जोड़ें जिसकी वजह से AlarmManager एपीआई का इस्तेमाल करते समय SecurityException दिखता है. (aosp/1587518)

वर्शन 2.5.0

वर्शन 2.5.0

27 जनवरी, 2021

androidx.work:work-*:2.5.0 रिलीज़ हो गया है. 2.5.0 वर्शन में ये बदलाव शामिल हैं.

2.4.0 के बाद किए गए मुख्य बदलाव

  • एक से ज़्यादा प्रोसेस का इस्तेमाल करने वाले ऐप्लिकेशन के लिए नया :work:work-multiprocess आर्टफ़ैक्ट. इससे, काम के अनुरोध को शेड्यूल करने की प्रोसेस को एक ही जगह पर इकट्ठा करके, परफ़ॉर्मेंस में बढ़ोतरी होती है.
    • work-multiprocess का इस्तेमाल करने के लिए, इन पर निर्भरता तय करें: implementation "androidx.work:work-multiprocess:2.5.0"
    • Configuration.Builder.setDefaultProcessName(String) का इस्तेमाल करके, मुख्य प्रोसेस तय करें.
    • work-multiprocess का इस्तेमाल करते समय, आपको WorkRequest को मैनेज करने के लिए RemoteWorkManager का भी इस्तेमाल करना है. RemoteWorkManager हमेशा तय की गई प्रोसेस तक पहुंचता है. प्रोसेस के दौरान शेड्यूल करने वाला टूल भी तय की गई प्रोसेस में चलता है.
  • कभी-कभी, ActivityManager किसी जॉब को शुरू करने के लिए, JobService इंस्टेंस को इंस्टैंशिएट नहीं कर पाता. इससे, प्लैटफ़ॉर्म में मौजूद गड़बड़ी की वजह से, मौजूदा जॉब चुपचाप बंद हो जाता है. WorkManager अब यह पक्का करता है कि जब Application को जॉब को मिलाकर शुरू किया जा रहा हो, तो हर WorkRequest के लिए बैकअप जॉब मौजूद हों. इससे, जॉब को पूरा करने की प्रक्रिया को ज़्यादा भरोसेमंद बनाया जा सकता है. (b/172475041, aosp/1489577)
  • WorkManager, बफ़र की अवधि को कम करके डेटाबेस के बढ़ने की सीमा तय करता है. यह अवधि, WorkRequest पूरा होने के बाद WorkRequest को ट्रैक करने के लिए होती है. पहले यह अवधि 7 दिन थी. इसे घटाकर 1 दिन + keepResultsForAtLeast की अवधि कर दिया गया है. (aosp/1419708)
  • TestListenableWorkerBuilder अब ListenableWorker को एक्सटेंड करने वाली रीफ़ाइड क्लास के साथ काम करता है, ताकि जांच आसान हो सके. (aosp/1443299, b/169787349)
  • Android Studio Arctic Fox का इस्तेमाल करने पर, WorkManager इंस्पेक्टर अब उपलब्ध है.

वर्शन 2.5.0-rc01

13 जनवरी, 2021

androidx.work:work-*:2.5.0-rc01 रिलीज़ हो गया है. 2.5.0-rc01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इसमें WorkQuery पर आधारित एपीआई का इस्तेमाल करते समय, इकाइयों को अपडेट करने के बाद getWorkInfosLiveData को सही तरीके से अमान्य नहीं किया जा रहा था. (aosp/1540566, b/173769028)
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, कुछ मामलों में डाटाबेस लेन-देन को 'पूरा हो गया' के तौर पर मार्क नहीं किया जा रहा था. इससे कुछ Motorola डिवाइसों पर समस्याएं आती हैं. (aosp/1535368, b/175944460)
  • किसी बंद प्रोसेस से अनबाइंड करने के दौरान, NoSuchElementException को अनदेखा करने के लिए एक बग को ठीक किया गया. (aosp/1530589)
  • ConstraintTrackingWorker को बेहतर बनाएं, ताकि ListenableWorker को सिर्फ़ तब रोका जा सके, जब वह पहले से बंद न हो. (aosp/1496844, b/172946965)
  • Java 8 (Ibd2f2) को टारगेट करने के लिए, androidx.work लाइब्रेरी अपडेट करना

वर्शन 2.5.0-beta02

2 दिसंबर, 2020

androidx.work:work-*:2.5.0-beta02 रिलीज़ हो गया है. 2.5.0-beta02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • androidx.work:work-multiprocess में एक गड़बड़ी को ठीक किया गया है. इसमें, तय की गई प्रोसेस से कनेक्ट करने के दौरान, WorkManager ने गलती से कॉल करने वाली थ्रेड को ब्लॉक कर दिया था. (aosp/1475538)
  • PeriodicWorkRequests को सही तरीके से मिलान न करने की गड़बड़ी को ठीक किया गया है. (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)

गड़बड़ियां ठीक की गईं

  • जब ListenableWorkers में रुकावट आती है, तो उन्हें तुरंत ENQUEUED के तौर पर मार्क करें, ताकि उन्हें बाद में फिर से शेड्यूल किया जा सके. (aosp/1455618, b/170273988)

वर्शन 2.5.0-alpha03

14 अक्टूबर, 2020

androidx.work:work-*:2.5.0-alpha03 रिलीज़ हो गया है. 2.5.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • TestListenableWorkerBuilder और TestWorkerBuilder में रॉ टाइप का इस्तेमाल नहीं किया जाता. (I883ad, b/169787349)

गड़बड़ियां ठीक की गईं

  • डिफ़ॉल्ट ऐप्लिकेशन प्रोसेस का नाम तय करने के लिए, ApplicationInfo का इस्तेमाल करें. (b/168716641, aosp/1429950)
  • RemoteWorkManager और RemoteWorkContinuation के लिए, दिखने के नियम ठीक करें. अब इन एपीआई को @Restricted के तौर पर मार्क नहीं किया जाता. (aosp/1432091)
  • :work:work-multiprocess के लिए, ProGuard के नियमों को ठीक करें. (aosp/1432091)
  • फ़ोरग्राउंड सेवा से जुड़े लंबे समय तक चलने वाले काम के लिए, सूचना के लाइफ़साइकल को बेहतर बनाएं. (b/168502234, aosp/1431331)

वर्शन 2.5.0-alpha02

16 सितंबर, 2020

androidx.work:work-*:2.5.0-alpha02 रिलीज़ हो गया है. 2.5.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkInfo की क्वेरी करने के लिए id का इस्तेमाल करने के लिए, WorkQuery में कोई एपीआई जोड़ें. (aosp/1412372, b/157335295)
  • WorkManager, नए आर्टफ़ैक्ट (androidx.work:work-multiprocess:*) की मदद से, एक से ज़्यादा प्रोसेस का इस्तेमाल करने वाले ऐप्लिकेशन के साथ बेहतर तरीके से काम करता है. यह नया आर्टफ़ैक्ट, बड़े ऐप्लिकेशन में आने वाली कुछ समस्याओं को हल करने में मदद करता है. इनमें ये समस्याएं शामिल हैं:
    • आम तौर पर, हर ऐप्लिकेशन प्रोसेस में WorkManager को शुरू करना ज़रूरी होता है. यह अच्छा नहीं है, क्योंकि SQLite के लिए ज़्यादा कॉन्टेंट का इस्तेमाल किया जाता है. इससे अन्य समस्याएं भी आती हैं. WorkManager में अब नए एपीआई हैं. इनका इस्तेमाल, Configuration#setDefaultProcessName(processName) का इस्तेमाल करके ऐप्लिकेशन की प्राइमरी प्रोसेस तय करने के लिए किया जा सकता है. processName, प्रोसेस का पूरी तरह से क्वालिफ़ाइड नाम है, जो packageName:processName (उदाहरण के लिए, com.example:remote) जैसा दिखता है.
    • नए एपीआई का एक सेट: RemoteWorkManager और RemoteWorkContinuation से enqueue, cancel, और query वर्क रिक्वेस्ट. इन एपीआई में LiveData वैरिएंट शामिल नहीं होते, ताकि एक से ज़्यादा प्रोसेस में SQLite के इस्तेमाल से होने वाली रुकावट से बचा जा सके. enqueue, cancel, और query के सभी कॉल, AIDL का इस्तेमाल करके primary ऐप्लिकेशन प्रोसेस पर फ़ॉरवर्ड किए जाते हैं. साथ ही, ये कॉल ListenableFuture को आसानी से समझने लायक बना देते हैं. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

एपीआई में हुए बदलाव

  • WorkManager अब उन 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 के लिए क्वेरी करने की सुविधा जोड़ी गई. यह तब काम आता है, जब डेवलपर एक से ज़्यादा एट्रिब्यूट के कॉम्बिनेशन के हिसाब से WorkInfos की क्वेरी करना चाहते हैं. ज़्यादा जानकारी के लिए, WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...) या WorkQuery.Builder.fromUniqueWorkNames(...) देखें. (aosp/1253230, b/143847546)
  • WorkManager से गड़बड़ी की जानकारी का अनुरोध करने की सुविधा जोड़ें. इसके लिए, इनका इस्तेमाल करें:

    adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
    

    इससे आपको बहुत सारी काम की जानकारी मिलती है. जैसे:

    • ऐसे 'काम के अनुरोध' जो पिछले 24 घंटों में पूरे हो गए हैं.
    • फ़िलहाल चल रहे WorkRequests.
    • शेड्यूल किए गए WorkRequests. (aosp/1235501)
  • ExistingWorkPolicy.APPEND_OR_REPLACE जोड़ें, जो APPEND से मिलता-जुलता है. हालांकि, यह उस चेन की जगह लेता है जिसकी ज़रूरी शर्तें पूरी नहीं हुई हैं या रद्द कर दी गई हैं. (b/134613984, aosp/1199640)

  • आने वाले समय में लागू किए जाने वाले 'काम के अनुरोध' को ट्रैक करने के लिए, कस्टम RunnableScheduler जोड़ने की सुविधा दें. इसका इस्तेमाल, प्रोसेस में चल रहे शेड्यूलर करता है. (aosp/1203944)

  • DelegatingWorkerFactory का इस्तेमाल करते समय, डाइनैमिक तौर पर फ़ैक्ट्री जोड़ने की सुविधा जोड़ी गई. (b/156289105, aosp/1309745)

  • BATTERY_NOT_LOW की पाबंदियों के लिए, ट्रैकिंग को प्लैटफ़ॉर्म के हिसाब से अलाइन करें. (aosp/1312583)

  • प्रोसेस के दौरान शेड्यूल करने वाला टूल, अब प्रोसेस का नाम तय करने के लिए बेहतर एपीआई का इस्तेमाल करता है. यह उन ऐप्लिकेशन के लिए मददगार है जो एक से ज़्यादा प्रोसेस का इस्तेमाल करते हैं. (aosp/1324732)

  • Lint के नए नियम, जो इन चीज़ों को लागू करते हैं:

    • setForegroundAsync() एपीआई का इस्तेमाल करते समय, सही foregroundServiceType का इस्तेमाल करना. (b/147873061, aosp/1215915)
    • JobScheduler के उन आईडी की जानकारी देना जिनका इस्तेमाल, WorkManager को सीधे JobService API का इस्तेमाल करते समय करना चाहिए. aosp/1223567
    • एक नया लिंट नियम जोड़ा गया है, जो यह पक्का करता है कि डिफ़ॉल्ट WorkerFactory का इस्तेमाल करते समय, ListenableWorkerलागू करने के तरीके अब public हैं. (aosp/1291262)
  • ListenableWorker के पूरा होने से पहले setForegroundAsync() को किए गए ऐसे कॉल जिन्हें पूरा नहीं किया जा सका उन्हें अब ListenableFuture पर IllegalStateException के ज़रिए सिग्नल भेजा जाएगा. (aosp/1262743)

  • फ़ोरग्राउंड Worker में रुकावट आने के बाद, ForegroundService के रुक न जाने की गड़बड़ी को ठीक किया गया है. (b/155579898, aosp/1302153)

  • एक गड़बड़ी को ठीक किया गया है. इसमें WorkManager, फ़ोरग्राउंड सेवा से जुड़े Worker के कई इंस्टेंस को एक साथ चलाने की कोशिश करता है (b/156310133, aosp/1309853)

वर्शन 2.4.0-rc01

24 जून, 2020

androidx.work:work-*:2.4.0-rc01 रिलीज़ हो गया है. 2.4.0-rc01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • प्रोसेस के दौरान शेड्यूल करने वाला टूल, अब प्रोसेस का नाम तय करने के लिए बेहतर एपीआई का इस्तेमाल करता है. यह उन ऐप्लिकेशन के लिए मददगार है जो एक से ज़्यादा प्रोसेस का इस्तेमाल करते हैं. (aosp/1324732)

वर्शन 2.4.0-beta01

20 मई, 2020

androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01, और androidx.work:work-testing:2.4.0-beta01 रिलीज़ किए गए हैं. 2.4.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़ोरग्राउंड Worker में रुकावट आने के बाद, ForegroundService के रुक न जाने की गड़बड़ी को ठीक किया गया है. (b/155579898, aosp/1302153)
  • एक गड़बड़ी को ठीक किया गया है. इसमें WorkManager, फ़ोरग्राउंड सेवा से जुड़े Worker के कई इंस्टेंस को एक साथ चलाने की कोशिश करता है (b/156310133, aosp/1309853)
  • DelegatingWorkerFactory का इस्तेमाल करते समय, डाइनैमिक तौर पर फ़ैक्ट्री जोड़ने की सुविधा जोड़ी गई. (b/156289105, aosp/1309745)
  • BATTERY_NOT_LOW की पाबंदियों के लिए, ट्रैकिंग को प्लैटफ़ॉर्म के हिसाब से अलाइन करें. (aosp/1312583)

वर्शन 2.4.0-alpha03

29 अप्रैल, 2020

androidx.work:work-*:2.4.0-alpha03 रिलीज़ हो गया है. 2.4.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkManager अब RxJava 3 के साथ काम करता है. RxJava 3 का इस्तेमाल करने के लिए, आपको यह डिपेंडेंसी शामिल करनी चाहिए: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • एक नया लिंट नियम जोड़ा गया है, जो यह पक्का करता है कि डिफ़ॉल्ट WorkerFactory का इस्तेमाल करते समय, ListenableWorkerलागू करने के तरीके अब public हैं. (aosp/1291262)

एपीआई में हुए बदलाव

  • ListenableWorker के पूरा होने के बाद setProgressAsync() को कॉल करने पर, अब ListenableFuture के ज़रिए Exception को सिग्नल भेजा जाएगा. (aosp/1285494)
  • WorkQuery.Builder को अब final के तौर पर मार्क कर दिया गया है. (aosp/1275037)
  • WorkQuery.Builder फ़ैक्ट्री मेथड withStates, withTags, और withUniqueWorkNames का नाम बदलकर क्रमशः fromStates, fromTags, और fromUniqueWorkNames कर दिया गया है. (aosp/1280287)

गड़बड़ियां ठीक की गईं

  • किसी डिवाइस के नेटवर्क की स्थिति को ट्रैक करते समय, SecurityException को अनदेखा करें. (b/153246136, aosp/1280813)

वर्शन 2.4.0-alpha02

1 अप्रैल, 2020

androidx.work:work-*:2.4.0-alpha02 रिलीज़ हो गया है. 2.4.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Lint का एक नया नियम जोड़ा गया है. यह नियम, WorkRequest के लिए Constraints.setRequiresCharging(...) और Constraints.setRequiresDeviceIdle(...), दोनों की ज़रूरत होने पर चेतावनी देता है. कुछ डिवाइस कभी भी चार्ज नहीं होते और कभी भी इस्तेमाल में नहीं होते. इसलिए, ऐसे अनुरोध उम्मीद से कम बार चलेंगे. (aosp/1253840)

एपीआई में हुए बदलाव

  • WorkQuery का इस्तेमाल करके, WorkInfo के लिए क्वेरी करने की सुविधा जोड़ी गई. यह तब काम आता है, जब डेवलपर एक से ज़्यादा एट्रिब्यूट के कॉम्बिनेशन के हिसाब से WorkInfos की क्वेरी करना चाहते हैं. ज़्यादा जानकारी के लिए, 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 के साइज़ तक ही सीमित है. इसका मतलब है कि ऐप्लिकेशन के फ़ोरग्राउंड में होने पर, अब ज़्यादा WorkRequests लागू किए जा सकते हैं. (aosp/1185778)

  • adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>" का इस्तेमाल करके, WorkManager से गड़बड़ी की जानकारी का अनुरोध करने की सुविधा जोड़ी गई. इससे आपको बहुत सारी काम की जानकारी मिलती है. जैसे:

    • ऐसे 'काम के अनुरोध' जो पिछले 24 घंटों में पूरे हो गए हैं.
    • फ़िलहाल चल रहे WorkRequests.
    • शेड्यूल किए गए WorkRequests. (aosp/1235501)
  • Lint के नए नियम, जो इन चीज़ों को लागू करते हैं:

    • setForegroundAsync() एपीआई का इस्तेमाल करते समय, सही foregroundServiceType का इस्तेमाल करना. (b/147873061, aosp/1215915)
    • JobScheduler आईडी की जानकारी देना, ताकि WorkManager सीधे JobService एपीआई का इस्तेमाल करते समय उनका इस्तेमाल कर सके. (aosp/1223567)

एपीआई में हुए बदलाव

  • ExistingWorkPolicy.APPEND_OR_REPLACE जोड़ें, जो APPEND से मिलता-जुलता है. हालांकि, यह उस चेन की जगह ले लेता है जिसकी ज़रूरी शर्तें पूरी नहीं हुई हैं या जिसे रद्द कर दिया गया है. (b/134613984, aosp/1199640)

  • आने वाले समय में लागू होने वाले WorkRequest को ट्रैक करने के लिए, कस्टम RunnableScheduler जोड़ने की सुविधा दें. इसका इस्तेमाल, प्रोसेस में चल रहे शेड्यूलर करता है. (aosp/1203944)

गड़बड़ियां ठीक की गईं

  • RxWorker में setProgress() को बंद कर दिया गया है, क्योंकि यह पहले Single<Void> दिखाता था, जो कि एक असंभव टाइप है. नया एपीआई setCompletableProgress() जोड़ा गया है, जो Completable दिखाता है. साथ ही, नए Lint नियम जोड़े गए हैं, जो नए एपीआई पर माइग्रेट करने में मदद करते हैं. (b/150080946, aosp/1242665)

वर्शन 2.3.4

वर्शन 2.3.4

18 मार्च, 2020

androidx.work:work-*:2.3.4 रिलीज़ हो गया है. 2.3.4 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, 10 मिनट की विंडो खत्म होने के बाद, लंबे समय तक चलने वाले Worker के कई इंस्टेंस चलने लगते थे. (aosp/1247484, b/150553353)
  • WorkManager के lint IssueRegistry को ठीक करना. योगदान देने के लिए, Slack के @ZacSweers को धन्यवाद. (aosp/1217923)

वर्शन 2.3.3

वर्शन 2.3.3

4 मार्च, 2020

androidx.work:work-*:2.3.3 रिलीज़ हो गया है. 2.3.3 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Worker में रुकावट आने पर, उसे सही तरीके से फिर से शेड्यूल न होने की गड़बड़ी को ठीक किया गया है. (b/150325687, aosp/1246571)

वर्शन 2.3.2

वर्शन 2.3.2

19 फ़रवरी, 2020

androidx.work:work-*:2.3.2 रिलीज़ हो गई हैं. 2.3.2 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, कुछ मामलों में WorkManager, JobScheduler में 100 जॉब की सीमा से ज़्यादा जॉब शेड्यूल कर देता है. (aosp/1226859, b/149092520)
  • ConstraintControllers में रेस कंडीशन को ठीक करना. (aosp/1220100)
  • लंबे समय तक चलने वाले वर्कर्स के लिए, फ़ोरग्राउंड सेवा के लाइफ़साइकल को मैनेज करने की सुविधा को बेहतर बनाया गया है. (aosp/1226295)
  • लंबे समय से चल रहे वर्कर्स को रद्द करने पर, सूचनाएं रद्द करने की सुविधा को बेहतर बनाया गया है. (aosp/1228346)

वर्शन 2.3.1

वर्शन 2.3.1

5 फ़रवरी, 2020

androidx.work:work-*:2.3.1 रिलीज़ हो गया है. 2.3.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़ोरग्राउंड Service चालू होने पर चलने वाले, लंबे समय तक चलने वाले Worker के लिए Notification के लाइफ़साइकल को बेहतर तरीके से मैनेज करें. (aosp/1218539, b/147249312)
  • WorkManager अब androidx.sqlite:sqlite-framework:2.1.0 के स्टेबल वर्शन पर निर्भर करता है. (aosp/1217729)
  • हमने लिंट नियम जोड़े हैं, ताकि यह पक्का किया जा सके कि ForegroundInfo में foregroundServiceType का इस्तेमाल करते समय, AndroidManifest.xml में foregroundServiceType तय किया गया हो. (aosp/1214207, b/147873061)

वर्शन 2.3.0

वर्शन 2.3.0

22 जनवरी, 2020

androidx.work:work-*:2.3.0 को 2.3.0-rc01 से बिना किसी बदलाव के रिलीज़ किया गया है. 2.3.0 वर्शन में ये बदलाव शामिल हैं.

2.2.0 के बाद किए गए ज़रूरी बदलाव

  • ListenableWorker#setForegroundAsync() की मदद से, लंबे समय तक चलने वाले या अहम काम के लिए सहायता.
  • ListenableWorker#setProgressAsync() की मदद से, वर्कर की प्रोग्रेस के बारे में जानकारी पाने की सुविधा.
  • WorkManager अब लाइब्रेरी के हिस्से के तौर पर, अतिरिक्त लिंट नियमों को पैकेज करता है. इससे गड़बड़ियों का पता जल्दी चलता है.

वर्शन 2.3.0-rc01

8 जनवरी, 2020

androidx.work:work-*:2.3.0-rc01 रिलीज़ हो गया है. 2.3.0-rc01 वर्शन में ये बदलाव शामिल हैं.

यह रिलीज़, 2.3.0-beta02 जैसी ही है

गड़बड़ियां ठीक की गईं

  • work-testing आर्टफ़ैक्ट अब work-runtime-ktx पर api डिपेंडेंसी तय करता है. (aosp/1194410)

वर्शन 2.3.0-beta02

18 दिसंबर, 2019

androidx.work:work-*:2.3.0-beta02 रिलीज़ हो गया है. 2.3.0-beta02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • SQLite के ऐसे अपवादों के लिए, गड़बड़ी का बेहतर मैसेज जोड़ा गया जिन्हें ठीक नहीं किया जा सकता. (aosp/1185777)
  • एक लिंट नियम जोड़ा गया है, जो यह पक्का करता है कि मांग पर शुरू करने की सुविधा का इस्तेमाल करते समय, कॉन्टेंट देने वाली कंपनी androidx.work.impl.WorkManagerInitializer को AndroidManifest.xml से हटा दिया जाए. (aosp/1167007)
  • enqueueUniquePeriodicWork() के बजाय PeriodicWorkRequest के लिए enqueue() का इस्तेमाल करने पर, लिंट चेतावनी जोड़ी गई. (aosp/1166032)

एपीआई में हुए बदलाव

  • ForegroundInfo के लिए, अब आपको ListenableWorker.setForegroundAsync() का इस्तेमाल करते समय, इस्तेमाल किए जाने वाले notificationId की जानकारी देनी होगी. यह बदलाव, आपके लिए अहम है. इससे, एक साथ कई लंबे समय तक चलने वाले Worker चलाए जा सकते हैं. WorkManager, दिए गए Notification के लाइफ़साइकल को भी बेहतर तरीके से मैनेज करता है. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)

गड़बड़ियां ठीक की गईं

  • AlarmManager को लागू करने में हुई एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, अलार्म सही तरीके से बंद नहीं हो रहे थे. (aosp/1156444)
  • WorkRequest की खाली सूची की वजह से, गलत WorkContinuation चेन बनने की गड़बड़ी को ठीक किया गया है. (b/142835274, aosp/1157051)

डिपेंडेंसी में बदलाव

  • WorkManager अब Room 2.2.2 का इस्तेमाल करता है.

वर्शन 2.3.0-beta01

20 नवंबर, 2019

androidx.work:work-*:2.3.0-beta01 रिलीज़ हो गया है. 2.3.0-beta01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • एक नया लिंट नियम जोड़ा गया है. इससे, मांग पर शुरू होने की सुविधा का इस्तेमाल करते समय, androidx.work.Configuration.Provider को गलत तरीके से लागू करने की वजह से डेवलपर को होने वाली गड़बड़ियों से बचा जा सकता है. aosp/1164559

वर्शन 2.3.0-alpha03

23 अक्टूबर, 2019

androidx.work:work-*:2.3.0-alpha03 रिलीज़ हो गया है. 2.3.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkManager.createCancelPendingIntent() एपीआई जोड़ा गया है. इससे AndroidManifest.xml में किसी दूसरे कॉम्पोनेंट को रजिस्टर किए बिना, WorkRequest को आसानी से रद्द किया जा सकता है. इस एपीआई की मदद से, Notification से WorkRequest को आसानी से रद्द किया जा सकता है. हमें उम्मीद है कि इसे 2.3.0 में, फ़ोरग्राउंड के नए एपीआई के साथ जोड़ा जाएगा.
  • WorkManager अब androidx.room:*:2.2.0 के स्टेबल वर्शन पर निर्भर करता है.

एपीआई में हुए बदलाव

  • ForegroundInfo.getNotificationType() को ForegroundInfo.getForegroundServiceType() में बदला गया, ताकि यह प्लैटफ़ॉर्म के एपीआई के साथ ज़्यादा मेल खा सके. (b/142729893, aosp/1143316)

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. यह गड़बड़ी, लेन-देन के बाहर setTransactionSuccessful() को किए गए ग़ैर-ज़रूरी कॉल की वजह से होती है. ऐसा बहुत कम माइग्रेशन के लिए होता है. (b/142580433, aosp/1141737)

वर्शन 2.3.0-alpha02

9 अक्टूबर, 2019

androidx.work:work-*:2.3.0-alpha02 रिलीज़ हो गया है. 2.3.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • WorkManager अब लंबे समय तक चलने वाले या ऐसे अहम कामों को चलाने की सुविधा देता है जिन्हें ओएस के चालू रहने पर पूरा किया जाना चाहिए. ज़्यादा जानकारी के लिए, ListenableWorker#setForegroundAsync() (या Kotlin के लिए CoroutineWorker#setForeground()) देखें. (aosp/1133636)

एपीआई में हुए बदलाव

  • Data में मौजूद containsKey एपीआई का नाम बदलकर hasKeyWithValueOfType कर दिया गया है. ktx लाइब्रेरी में, एक्सटेंशन के लिए इस्तेमाल किए जाने वाले तरीके का नाम भी बदल दिया गया है. (b/141916545)

गड़बड़ियां ठीक की गईं

  • जब लाइन में लगे WorkRequest की संख्या, शेड्यूल करने की सीमाओं के करीब पहुंच जाती है, तब WorkManager काम को निष्पक्ष तरीके से शेड्यूल करता है. (aosp/1105766)
  • WorkManager, ListenableWorker#onStopped() को सिर्फ़ तब कॉल करता है, जब काम पहले से पूरा न हुआ हो. (b/140055777)
  • जब किसी वर्क को रोका जाता है या वह पूरा हो जाता है, तो WorkManager अब प्रोग्रेस की जानकारी हटा देता है. (aosp/1114572)
  • Data की जानकारी अब toString()ज़्यादा काम की हो गई है. (b/140945323)
  • Data के लिए अब equals() का बेहतर तरीका उपलब्ध है. यह Array टाइप के लिए deepEquals के साथ भी काम करता है. (b/140922528)
  • WorkManager अब अपने इंटरनल डेटाबेस और प्राथमिकता फ़ाइलों को ऐसी डायरेक्ट्री में सेव करता है जिसमें बैकअप नहीं लिया जाता. (b/114808216)

वर्शन 2.3.0-alpha01

22 अगस्त, 2019

androidx.work:work-*:2.3.September 5, 20190-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • ListenableWorker अब setProgressAsync() एपीआई की मदद से, प्रोग्रेस सेट कर सकते हैं. साथ ही, CoroutineWorker में suspend-ing setProgress एपीआई और 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 का ऐसा इंस्टेंस दिखाता है जिसे पहले इस्तेमाल किया जा चुका है, तो WorkManager IllegalStateException का एक इंस्टेंस दिखाएगा. (b/139554406)
  • ListenableWorker में ListenableFuture रद्द करने और onStopped() कॉलबैक के बारे में दस्तावेज़ से जुड़े अपडेट. (b/138413671)

गड़बड़ियां ठीक की गईं

  • प्रोसेस में चल रहा शेड्यूलर, अब idle शर्त वाले WorkRequest को अनदेखा करता है. अब JobScheduler, इन अनुरोधों को सिर्फ़ तब स्वीकार करता है, जब डिवाइस असल में idle हो. (aosp/1089779)
  • TestScheduler अब टेस्ट में, अपने इंटरनल टास्क एक्ज़ीक्यूटर के लिए, तय किए गए Executor का सही तरीके से इस्तेमाल करता है. (aosp/1090749)

वर्शन 2.2.0

वर्शन 2.2.0

15 अगस्त, 2019

androidx.work:work-*:2.2.0 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

यह रिलीज़, androidx.work:work-*:2.2.0-rc01 जैसी ही है.

2.1.0 से 2.2.0 में हुए अहम बदलाव

androidx.work:work-gcm:2.2.0 एक नया मेवन आर्टफ़ैक्ट है. यह एपीआई लेवल 22 और उससे पहले के वर्शन के लिए, Google Play services के उपलब्ध होने पर, GCMNetworkManager को शेड्यूलर के तौर पर इस्तेमाल करने की सुविधा देता है. यह एक ज़रूरी डिपेंडेंसी नहीं है. इससे, एपीआई के पुराने वर्शन पर बैकग्राउंड प्रोसेसिंग को ज़्यादा भरोसेमंद और बेहतर बनाने में मदद मिलती है. अगर आपका ऐप्लिकेशन Google Play services का इस्तेमाल करता है, तो GCMNetworkManager की सहायता अपने-आप पाने के लिए, अपनी gradle फ़ाइल में यह डिपेंडेंसी जोड़ें. अगर Play services उपलब्ध नहीं है, तो पुराने डिवाइसों पर WorkManager, AlarmManager का इस्तेमाल करना जारी रखेगा.

वर्शन 2.2.0-rc01

30 जुलाई, 2019

androidx.work:work-*:2.2.0-rc01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • AlarmManager को लागू करने में हुई एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, सेवा समय से पहले बंद हो जाती है और कुछ मामलों में RejectedExecutionException दिखता है. (aosp/1092374) (b/138238197).
  • कुछ डिवाइसों पर JobScheduler एपीआई का इस्तेमाल करते समय, NullPointerException से जुड़ी समस्या को हल करने का तरीका जोड़ा गया. (aosp/1091020) (b/138364061), (b/138441699)

वर्शन 2.2.0-beta02

19 जुलाई, 2019

androidx.work:work-*:2.2.0-beta02 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • 2.2.0-beta01 में अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटा दिया गया है.

वर्शन 2.2.0-beta01

17 जुलाई, 2019

androidx.work:work-*:2.2.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • androidx.work:work-gcm:2.2.0-beta01 एक नया मेवन आर्टफ़ैक्ट है. यह एपीआई लेवल 22 और उससे पहले के वर्शन के लिए, Google Play services के उपलब्ध होने पर, GCMNetworkManager को शेड्यूलर के तौर पर इस्तेमाल करने की सुविधा देता है. यह ज़रूरी नहीं है. हालांकि, इससे पुराने एपीआई वर्शन पर बैकग्राउंड प्रोसेसिंग को ज़्यादा भरोसेमंद और बेहतर बनाने में मदद मिलती है. अगर आपका ऐप्लिकेशन Google Play services का इस्तेमाल करता है, तो GCMNetworkManager की सहायता अपने-आप पाने के लिए, अपनी gradle फ़ाइल में यह डिपेंडेंसी जोड़ें. अगर Play services उपलब्ध नहीं है, तो पुराने डिवाइसों पर WorkManager, AlarmManager का इस्तेमाल करना जारी रखेगा.

गड़बड़ियां ठीक की गईं

  • Nvidia Shield K1 टैबलेट पर नेटवर्क की स्थिति ट्रैक करते समय IllegalArgumentException से जुड़ी गड़बड़ी को ठीक किया गया. (aosp/1010188)

वर्शन 2.1.0

वर्शन 2.1.0

11 जुलाई, 2019

androidx.work:work-*:2.1.0 रिलीज़ हो गया है. यह रिलीज़, androidx.work:work-*:2.1.0-rc01 जैसी ही है.

2.0.1 के बाद किए गए अहम बदलाव

  • work-runtime-ktx के लिए अब Java 8 की ज़रूरत है. अगर आपको कोई समस्या आती है, तो अपने build.gradle में ये चीज़ें जोड़ें: kotlinOptions { jvmTarget = "1.8" }
  • WorkManager के लिए, मांग पर शुरू करने की सुविधा जोड़ी गई है. यह सुविधा, सिर्फ़ रेफ़रंस दिए जाने पर WorkManager बनाएगी. b/127497100 अपने प्रोजेक्ट को मांग पर शुरू होने के लिए सेट अप करने के लिए:
    1. अपने-आप शुरू होने की सुविधा बंद करें.
    2. अपने कस्टम Application ऑब्जेक्ट पर Configuration.Provider लागू करें.
    3. WorkManager.getInstance() के सभी रेफ़रंस को WorkManager.getInstance(Context) में बदलें. इस बदलाव के तहत, हमने WorkManager.getInstance() को बंद कर दिया है. नए WorkManager.getInstance(Context) को बदलने के लिए कॉल करना हमेशा सुरक्षित होता है. भले ही, आपने मांग पर शुरू करने की सुविधा का इस्तेमाल न किया हो.
  • PeriodicWorkRequest अब शुरुआती देरी के साथ काम करते हैं. शुरुआती देरी सेट करने के लिए, PeriodicWorkRequest.Builder पर setInitialDelay तरीके का इस्तेमाल किया जा सकता है. b/111404867
  • DelegatingWorkerFactory का इस्तेमाल करके, एक या उससे ज़्यादा रजिस्टर किए गए WorkerFactory को अनुमति देने की सुविधा जोड़ी गई है. b/131435993
  • Configuration.Builder.setTaskExecutor की मदद से, अपनी सभी इंटरनल बुक-कीपिंग के लिए, WorkManager के इस्तेमाल किए गए Executor को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई है.
  • work-testing आर्टफ़ैक्ट में TestWorkerBuilder और TestListenableWorkerBuilder का इस्तेमाल करके, इकाई की जांच की जा सकने वाली Worker और ListenableWorker क्लास बनाने की सुविधा जोड़ी गई.
    • ध्यान दें कि work-testing अब Kotlin को डिपेंडेंसी के तौर पर शामिल करता है और डिफ़ॉल्ट रूप से कई Kotlin एक्सटेंशन शामिल करता है.
  • WorkInfo में, रन की कोशिश की संख्या जोड़ी गई. b/127290461
  • Data टाइप अब बाइट और बाइट कलेक्शन को सेव और वापस ला सकते हैं. इससे, 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
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, प्रोसेस के बंद होने की वजह से WorkRequests के लिए, प्रोसेस की विंडो में बदलाव होता था. 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/111404867

  • DelegatingWorkerFactory का इस्तेमाल करके, एक या उससे ज़्यादा रजिस्टर किए गए WorkerFactory को अनुमति देने की सुविधा जोड़ी गई है. b/131435993

  • Configuration.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 अपने प्रोजेक्ट को मांग पर शुरू होने के लिए सेट अप करने के लिए:
    1. अपने-आप शुरू होने की सुविधा बंद करें.
    2. अपने कस्टम Application ऑब्जेक्ट पर Configuration.Provider लागू करें.
    3. WorkManager.getInstance() के सभी रेफ़रंस को WorkManager.getInstance(Context) में बदलें. इस बदलाव के तहत, हमने WorkManager.getInstance() को बंद कर दिया है. नए WorkManager.getInstance(Context) को बदलने के लिए कॉल करना हमेशा सुरक्षित होता है. भले ही, आपने मांग पर शुरू करने की सुविधा का इस्तेमाल न किया हो.
  • work-testing आर्टफ़ैक्ट में TestWorkerBuilder और TestListenableWorkerBuilder का इस्तेमाल करके, इकाई की जांच की जा सकने वाली Worker और ListenableWorker क्लास बनाने की सुविधा जोड़ी गई.
    • ध्यान दें कि work-testing अब Kotlin को डिपेंडेंसी के तौर पर इंपोर्ट करता है. साथ ही, इसमें डिफ़ॉल्ट रूप से कई Kotlin एक्सटेंशन भी शामिल होते हैं.
  • WorkInfo में, रन की कोशिश की संख्या जोड़ी गई. b/127290461
  • Data टाइप अब बाइट और बाइट कलेक्शन को सेव और वापस ला सकते हैं. इससे, Data ऑब्जेक्ट के ज़्यादा से ज़्यादा साइज़ में बदलाव नहीं होता.
  • CoroutineWorker.coroutineContext का इस्तेमाल नहीं किया जा सकता. इस फ़ील्ड को CoroutineDispatcher के तौर पर गलत तरीके से टाइप किया गया था. अब आपको इसकी ज़रूरत नहीं है, क्योंकि आपके पास सस्पेंड करने वाले फ़ंक्शन के मुख्य हिस्से में, अपनी पसंद के coroutineContext पर जाने का विकल्प है.
  • RxWorker.createWork() और RxWorker.getBackgroundScheduler() को अब @NonNull, सामान लौटाने के तरीकों के साथ एनोटेट किया गया है.

वर्शन 2.0.1

वर्शन 2.0.1

9 अप्रैल, 2019

WorkManager 2.0.1 रिलीज़ किया गया. यह रिलीज़, 2.0.1-rc01 जैसी ही है.

वर्शन 2.0.1-rc01

3 अप्रैल, 2019

WorkManager 2.0.1-rc01 रिलीज़ किया गया. इस वर्शन में कुछ गड़बड़ियां ठीक की गई हैं. 1.x वर्शन के उपयोगकर्ताओं को, इनमें से कुछ बदलाव 1.0.1-rc01 में भी दिखेंगे.

गड़बड़ियां ठीक की गईं

  • Robolectric टेस्ट, अब WorkManager के साथ सही तरीके से काम करते हैं. b/122553577
  • JobScheduler के पुराने वर्शन वाले एपीआई पर, पाबंदियों को ट्रैक करने की सुविधा को ठीक नहीं किया जा रहा था. इस वजह से, ऐप्लिकेशन क्रैश हो रहा था. इस समस्या को ठीक कर दिया गया है. b/129226383
  • StackOverflowError से जुड़ी एक समस्या को ठीक किया गया, जिसमें एक से ज़्यादा टास्क को पूरा करने की सुविधा का इस्तेमाल किया जा रहा था. b/129091233
  • PeriodicWorkRequest के लिए दस्तावेज़ अपडेट किए गए हैं, ताकि यह बताया जा सके कि एपीआई 23 पर, फ़्लेक्स टाइम की सुविधा काम नहीं करती.
  • Kotlin दस्तावेज़ में कुछ टूटे हुए लिंक ठीक किए गए.

वर्शन 2.0.0

वर्शन 2.0.0

20 मार्च, 2019

WorkManager 2.0.0 रिलीज़ हो गया है. यह वर्शन, 2.0.0-rc01 जैसा ही है. साथ ही, यह AndroidX के डिपेंडेंसी के साथ, AndroidX के 1.0.0 के स्टेबल वर्शन जैसा है. हमारा सुझाव है कि आप लेगसी 1.x वर्शन के बजाय, इस वर्शन को टारगेट करें. सभी ऐक्टिव डेवलपमेंट, 2.x को टारगेट करेंगे. साथ ही, 1.x में सिर्फ़ कुछ समय के लिए गंभीर गड़बड़ियों को ठीक किया जाएगा.

वर्शन 2.0.0-rc01

7 मार्च, 2019

WorkManager 2.0.0-rc01 रिलीज़ किया गया. यह वर्शन, 1.0.0 के स्टेबल वर्शन जैसा ही है, लेकिन इसमें AndroidX की डिपेंडेंसी हैं. जब यह 2.0.0 के स्टेबल वर्शन पर पहुंच जाए, तो आपको इस वर्शन को शामिल करना चाहिए. लेगसी 1.x वर्शन में सिर्फ़ कुछ गंभीर गड़बड़ियां ठीक की जाएंगी. सभी मौजूदा डेवलपमेंट, 2.x को टारगेट करेंगे.

AndroidX से पहले की डिपेंडेंसी

Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी के लिए, KTX दस्तावेज़ देखें.
रेफ़रंस दस्तावेज़: Java

Groovy

dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Kotlin

dependencies {
    val work_version = "1.0.1"

    // (Java only)
    implementation("android.arch.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("android.arch.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("android.arch.work:work-rxjava2:$work_version")

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

वर्शन 1.0.1

वर्शन 1.0.1

9 अप्रैल, 2019

WorkManager 1.0.1 रिलीज़ किया गया. यह रिलीज़, 1.0.1-rc01 जैसी ही है.

कृपया ध्यान दें कि हमारा सुझाव है कि उपयोगकर्ता, WorkManager 2.x पर अपग्रेड कर लें, क्योंकि आने वाले समय में 1.x ब्रैंच के लिए बहुत कम अपडेट होंगे. नए एपीआई, 1.x लाइब्रेरी के लिए भी रिलीज़ नहीं किए जाएंगे.

वर्शन 1.0.1-rc01

2 अप्रैल, 2019

WorkManager 1.0.1-rc01 रिलीज़ किया गया. इस वर्शन में कुछ गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • Robolectric टेस्ट, अब WorkManager के साथ सही तरीके से काम करते हैं. b/122553577
  • JobScheduler के पुराने वर्शन वाले एपीआई पर, पाबंदियों को ट्रैक करने की सुविधा को ठीक नहीं किया जा रहा था. इस वजह से, ऐप्लिकेशन क्रैश हो रहा था. इस समस्या को ठीक कर दिया गया है. b/129226383
  • StackOverflowError से जुड़ी एक समस्या को ठीक किया गया, जिसमें एक से ज़्यादा टास्क को पूरा करने की सुविधा का इस्तेमाल किया जा रहा था. b/129091233

वर्शन 1.0.0

वर्शन 1.0.0

05 मार्च, 2019

यह WorkManager का 1.0.0 वर्शन है. WorkManager का यह वर्शन, 1.0.0-rc02 वर्शन जैसा ही है.

वर्शन 1.0.0-rc02

21 फ़रवरी, 2019

यह WorkManager के 1.0.0 स्टेबल रिलीज़ का दूसरा रिलीज़ कैंडिडेट है. इस रिलीज़ में दो गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • ऐप्लिकेशन क्रैश होने के बाद, Worker अब सही तरीके से शेड्यूल किए जाते हैं. b/124546316

  • ऐसे Worker जिन्हें सही नहीं माना गया है Exception को अब सही तरीके से FAILED के तौर पर मार्क किया गया है. साथ ही, अब ये ऐप्लिकेशन प्रोसेस को क्रैश नहीं करते.

वर्शन 1.0.0-rc01

14 फ़रवरी, 2019

यह WorkManager के 1.0.0 स्टेबल रिलीज़ के लिए रिलीज़ कैंडिडेट है. इस रिलीज़ में एक गड़बड़ी ठीक की गई है.

गड़बड़ियां ठीक की गईं

  • AlarmManager के आधार पर लागू करने की सुविधा, अब PeriodicWorkRequests के लिए flex विंडो का सही तरीके से इस्तेमाल करती है. b/124274584

वर्शन 1.0.0-beta05

6 फ़रवरी, 2019

इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • एपीआई 23 पर JobScheduler.getPendingJob(...) का इस्तेमाल करने से जुड़ी समस्या को ठीक किया गया. b/123893059
  • Android 5.1 (एपीआई लेवल 22) या उससे पहले के वर्शन पर चलने वाले डिवाइसों पर NullPointerException को ठीक किया गया. b/123835104

वर्शन 1.0.0-beta04

4 फ़रवरी, 2019

इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • AlarmManager के आधार पर लागू करने के लिए, PeriodicWork को शेड्यूल करने की सुविधा को बेहतर बनाया गया है.
  • एक मामले को ठीक किया गया है, जिसमें AlarmManager के आधार पर लागू करने के दौरान, WorkManager सही तरीके से पाबंदियों को ट्रैक नहीं कर पाया था. b/123379508
  • AlarmManager के आधार पर लागू करने के दौरान, प्रोसेस के बंद होने पर, WorkManager के फिर से कोशिश न कर पाने की समस्या को ठीक किया गया. b/123329850
  • एक मामले को ठीक किया गया है. इसकी वजह से, AlarmManager के आधार पर लागू करने के दौरान, WorkManager से वेक लॉक लीक हो सकते थे.

वर्शन 1.0.0-beta03

25 जनवरी, 2019

इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • हमने एक रिग्रेशन 1.0.0-beta02 लागू किया है, जिसकी वजह से कुछ मामलों में काम ठीक से नहीं हो पा रहा था. b/123211993
  • एक मामले को ठीक किया गया है, जिसमें बैकऑफ़ टाइमिंग का सही तरीके से पालन नहीं किया जा रहा था. b/122881597
  • Android 5.1 (एपीआई लेवल 22) या उससे पहले के वर्शन पर चल रहे डिवाइसों पर ConcurrentModificationException को ठीक किया गया. यह 1.0.0-beta02 में किए गए सुधार का ही एक हिस्सा है. b/121345393
  • हमने अपने मेनिफ़ेस्ट में कुछ ऐसे कॉम्पोनेंट के लिए exported=false जोड़ा है जिनमें यह एनोटेशन मौजूद नहीं था.
  • पैकेज-लेवल के दस्तावेज़ में, WorkManager के ओएस के साथ इंटरैक्ट करने के तरीके के बारे में जानकारी शामिल की गई है.

वर्शन 1.0.0-beta02

15 जनवरी, 2019

इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • एक असामान्य स्थिति को ठीक किया गया है. इसमें, Android 6.0 (एपीआई लेवल 23) पर चलने वाले डिवाइसों पर, समय-समय पर होने वाला काम हर इंटरवल में एक से ज़्यादा बार चल सकता था. b/121998363
  • Android 5.1 (एपीआई लेवल 22) या उससे पहले के वर्शन पर चल रहे डिवाइसों पर ConcurrentModificationException को ठीक किया गया. b/121345393
  • Android 5.1 (एपीआई लेवल 22) या उससे पहले के वर्शन पर चलने वाले डिवाइसों पर, शर्तें पूरी न होने पर काम के गलत तरीके से लागू होने की समस्या को ठीक किया गया. b/122578012
  • कुछ खास मामलों में, काम पूरा करने की प्रोसेस को तेज़ करने के लिए ऑप्टिमाइज़ किया गया. b/122358129
  • WorkManager के इस्तेमाल किए जाने वाले LiveData के कई इंस्टेंस के बीच, संभावित रेस कंडीशन को ठीक करने के लिए बदलाव किया गया है.
  • 1.1.1-rc01 के बजाय, Room डिपेंडेंसी 1.1.1 का इस्तेमाल करने के लिए बदलाव किया गया है. ये वर्शन एक जैसे हैं. b/122578011

वर्शन 1.0.0-beta01

19 दिसंबर, 2018

इस रिलीज़ में एपीआई में कोई बदलाव नहीं किया गया है. आने वाले समय में, WorkManager के अगले वर्शन तक एपीआई में कोई बदलाव नहीं होगा. हालांकि, कोई गंभीर समस्या होने पर ऐसा हो सकता है. इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • जिन बच्चों के लिए, माता-पिता ने पहले ही 'कार्य पूरा हो गया' का विकल्प चुना था उनके लिए, अब यह विकल्प नहीं दिखेगा. b/120811767
  • लॉगिंग क्लास को सही तरीके से शुरू किया गया हो (मुख्य रूप से टेस्ट के दौरान दिखता है).

वर्शन 1.0.0-alpha13

12 दिसंबर, 2018

इस रिलीज़ में, एपीआई में एक छोटा बदलाव किया गया है. यह बदलाव, Kotlin का इस्तेमाल करने वाले कुछ लोगों के लिए मददगार साबित होगा.

एपीआई में हुए बदलाव

  • androidx.work.Result को ListenableWorker की इनर क्लास में ले जाया गया है. इससे Kotlin की टॉप-लेवल Result क्लास के साथ, रीफ़ैक्टर करने से जुड़ी समस्याओं से बचा जा सकता है. यह एपीआई में एक अहम बदलाव है. b/120564418

एपीआई में होने वाले बदलावों के बारे में अहम जानकारी

  • androidx.work.Result को ListenableWorker की इनर क्लास में ले जाया गया है.

वर्शन 1.0.0-alpha12

5 दिसंबर, 2018

इस रिलीज़ में, एपीआई में कुछ ऐसे बदलाव किए गए हैं जिनकी वजह से, एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन में गड़बड़ियां हो सकती हैं. कृपया नीचे एपीआई में हुए बदलाव सेक्शन देखें. इस वर्शन को हमारे पहले बीटा वर्शन के तौर पर रिलीज़ किया जा सकता है. alpha12 में दस्तावेज़ से जुड़े कई अपडेट भी शामिल हैं.

एपीआई में हुए बदलाव

  • work-rxjava2 नाम के नए आर्टफ़ैक्ट में RxWorker को शामिल किया गया है. यह एक ListenableWorker है, जिसमें Single<Payload> की उम्मीद की जाती है.
  • Firebase JobDispatcher की सुविधा जल्द ही बंद होने वाली है. इसलिए, इसकी सहायता हटा दी गई है. इसका मतलब है कि बीटा वर्शन में जाने के बाद, work-firebase आर्टफ़ैक्ट को अपडेट नहीं किया जाएगा. हम आने वाले समय में, कोई दूसरा विकल्प जोड़ने की कोशिश करेंगे.
  • Payload को Result में जोड़ा. Result अब एक "सील की गई क्लास" है, जिसमें तीन खास तरीके लागू किए गए हैं. इन्हें Result.success() (या Result.success(Data)), Result.failure() (या Result.failure(Data)), और Result.retry() से ऐक्सेस किया जा सकता है. आपके ListenableFuture अब Payload के बजाय Result के तौर पर दिखेंगे. Worker में आउटपुट Data के लिए, गेट्टर और सेटर मेथड नहीं होते. यह बदलाव, आपके लिए अहम है.
  • धीरे ट्रिगर होने वाले कॉन्टेंट यूआरआई के साथ बेहतर तरीके से काम करने के लिए, Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) और Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) के साथ-साथ वैरिएंट जोड़े गए. b/119919774
  • WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) वैरिएंट जोड़ा गया. इस तरीके के लिए, एपीआई 26 की ज़रूरत होती है.
  • Kotlin एक्सटेंशन के Operation.await() और ListenableFuture.await() तरीके जोड़े गए.
  • Operation.getException() का नाम बदलकर Operation.getThrowable() किया गया. यह बदलाव, आपके लिए अहम है.
  • ContentUriTriggers क्लास और उससे जुड़े तरीके, अब सार्वजनिक इस्तेमाल के लिए उपलब्ध नहीं हैं. यह बदलाव, आपके लिए अहम है.
  • एपीआई को बेहतर बनाने के लिए, WorkManager, WorkContinuation, और OneTimeWorkRequest में बाकी सभी वैरग्स मेथड हटा दिए गए हैं. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा वैरिएबल आर्ग्युमेंट को Arrays.asList(...) के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं. यह बदलाव, आपके लिए अहम है.
  • WorkContinuation.combine(OneTimeWorkRequest, *) वैरिएंट हटाए गए. वे एक ऐसा एपीआई दिखा रहे थे जिसे समझना मुश्किल था. मौजूदा combine तरीके ज़्यादा समझ में आते हैं. यह बदलाव, आपके लिए अहम है.

गड़बड़ियां ठीक की गईं

  • Marshmallow से पहले के वर्शन में, पहले से चल रहे टास्क की प्रोसेस बंद होने पर, उसे फिर से शुरू करने की सुविधा ज़्यादा भरोसेमंद है.
  • LiveData को observeForever से देखा जाता है और WorkManager से ट्रैक किया जाता है. यह Room लाइब्रेरी में हुए सुधार का बैकपोर्ट है. b/74477406
  • Data.Builder.build() अब, सीरियलाइज़ किए गए ऑब्जेक्ट के ज़्यादा से ज़्यादा साइज़ से ज़्यादा होने पर, अपवाद दिखाता है. पहले, ऐसा सिर्फ़ बैकग्राउंड थ्रेड में होता था, जहां इसे ठीक से मैनेज नहीं किया जा सकता था.
  • टास्क के बंद होने और रद्द होने के बीच अंतर किया गया है. getWorkInfoById(), ListenableWorker.onStopped() के दौरान CANCELLED State के साथ WorkInfo दिखाएगा.
  • null Result को ListenableWorker में गड़बड़ियों के तौर पर मार्क करें. b/120362353
  • एपीआई 24 पर काम करने वाले Shield Tablet के लिए, अनुमानित तौर पर ठीक किया गया गड़बड़ी. कभी-कभी यह गड़बड़ी IllegalArgumentException दिखाती थी. b/119484416

एपीआई में होने वाले बदलावों के बारे में अहम जानकारी

  • Firebase JobDispatcher की सुविधा जल्द ही बंद होने वाली है. इसलिए, इसकी सहायता हटा दी गई है. इसका मतलब है कि बीटा वर्शन में जाने के बाद, work-firebase आर्टफ़ैक्ट को अपडेट नहीं किया जाएगा. हम आने वाले समय में, कोई दूसरा विकल्प जोड़ने की कोशिश करेंगे.
  • Payload को Result में जोड़ा. Result अब एक "सील की गई क्लास" है, जिसमें तीन खास तरीके लागू किए गए हैं. इन्हें Result.success() (या Result.success(Data)), Result.failure() (या Result.failure(Data)), और Result.retry() से ऐक्सेस किया जा सकता है. आपके ListenableFuture अब Payload के बजाय Result के तौर पर दिखेंगे. Worker में आउटपुट Data के लिए, गेट्टर और सेटर मेथड नहीं होते.
  • Kotlin एक्सटेंशन के Operation.await() और ListenableFuture.await() तरीके जोड़े गए.
  • Operation.getException() का नाम बदलकर Operation.getThrowable() किया गया.
  • ContentUriTriggers क्लास और उससे जुड़े तरीके, अब सार्वजनिक इस्तेमाल के लिए उपलब्ध नहीं हैं.
  • एपीआई को बेहतर बनाने के लिए, WorkManager, WorkContinuation, और OneTimeWorkRequest में बाकी सभी वैरग्स मेथड हटा दिए गए हैं. बिल्ड से जुड़ी किसी भी समस्या को ठीक करने के लिए, अपने मौजूदा वैरिएबल आर्ग्युमेंट को Arrays.asList(...) के साथ रैप किया जा सकता है. हम अब भी हर तरीके के सिंगल-आर्ग्युमेंट वर्शन शामिल करते हैं.
  • WorkContinuation.combine(OneTimeWorkRequest, *) वैरिएंट हटाए गए. वे एक ऐसा एपीआई दिखा रहे थे जिसे समझना मुश्किल था. मौजूदा combine तरीके ज़्यादा समझ में आते हैं.

वर्शन 1.0.0-alpha11

8 नवंबर, 2018

इस रिलीज़ में कई बदलाव किए गए हैं, जो beta में स्टेबल एपीआई बन जाएंगे. इस रिलीज़ में, एपीआई में ऐसे बदलाव किए गए हैं जिनसे आपके ऐप्लिकेशन पर असर पड़ सकता है. कृपया नीचे दिया गया एपीआई में बदलाव सेक्शन देखें.

एपीआई में हुए बदलाव

  • work-runtime-ktx ने एक नया CoroutineWorker लॉन्च किया है.
  • WorkStatus का नाम बदलकर WorkInfo कर दिया गया है. getStatus के सभी वैरिएंट का नाम बदलकर, getWorkInfo के वैरिएंट कर दिया गया है. यह बदलाव, आपके लिए अहम है.
  • ListenableWorker.onStopped() में अब बूलियन आर्ग्युमेंट नहीं दिया जा सकता. इससे यह पता चलता है कि WorkRequest रद्द किया गया था या नहीं. WorkManager अब इस फ़र्क़ को नहीं दिखाता. यह बदलाव, आपके लिए अहम है.
  • androidx.work.test पैकेज का नाम बदलकर androidx.work.testing पैकेज कर दिया गया है. यह बदलाव, आपके लिए अहम है.
  • Constraints पर सेटर, अब सार्वजनिक एपीआई का हिस्सा नहीं हैं. यह बदलाव, आपके लिए अहम है.
  • WorkerParameters.getTriggeredContentUris() और WorkerParameters.getTriggeredContentAuthorities(), पहले दिखाए गए ऐरे हैं. अब ये तरीके कलेक्शन दिखाते हैं. यह बदलाव, आपके लिए अहम है.
  • ListenableWorker.onStartWork() का नाम बदलकर ListenableWorker.startWork() कर दिया गया है. यह बदलाव, आपके लिए अहम है.
  • WorkStatus के कंस्ट्रक्टर को अब सार्वजनिक एपीआई का हिस्सा नहीं माना जाता. यह बदलाव, आपके लिए अहम है.
  • Configuration.getMaxJobSchedulerID() और Configuration.getMinJobSchedulerID() का नाम बदलकर Configuration.getMinJobSchedulerId() और Configuration.getMaxJobSchedulerId() कर दिया गया है. यह बदलाव, आपके लिए अहम है.
  • एपीआई को इस्तेमाल करने में आसान बनाने के लिए, सार्वजनिक एपीआई में कई @NonNull एनोटेशन जोड़े गए हैं.
  • WorkContinuation बनाने के बिना, यूनीक OneTimeWorkRequest को सूची में जोड़ने के लिए WorkManager.enqueueUniqueWork() एपीआई जोड़ें.
  • WorkManager पर enqueue और cancel के सभी वैरिएंट, अब नया Operation टाइप दिखाते हैं. यह बदलाव, आपके लिए अहम है.
  • enqueue के सभी वैरिएंट में, अब WorkRequest के लिए वैरिएग्स स्वीकार नहीं किए जाते. यह बदलाव, आपके लिए अहम है. इसके बजाय, कलेक्शन का इस्तेमाल करें. मौजूदा कोड में बदलाव करने के लिए, Arrays.asList() का इस्तेमाल किया जा सकता है. हमने ऐसा एपीआई सरफ़ेस और तरीकों की संख्या को कम करने के लिए किया है.
  • हर प्रोसेस के लिए, initialize WorkManager को एक से ज़्यादा बार इस्तेमाल करने पर, अब IllegalStateException दिखेगा. यह बदलाव, आपके लिए अहम है.

गड़बड़ियां ठीक की गईं

  • work-runtime-ktx आर्टफ़ैक्ट में मौजूद WorkRequest.Builder अब ListenableWorker का इस्तेमाल करते हैं. b/117666259 को ठीक करता है
  • पक्का करें कि PeriodicWork के लिए अगला रन टाइम, आने वाले समय का हो. b/118204399 को ठीक करता है
  • ऐप्लिकेशन के स्टार्टअप पर WorkManager का इस्तेमाल करते समय, डिस्क के संभावित I/O को हटाएं. b/117796731 को ठीक करता है
  • WorkConstraintsTracker में रेस कंडीशन ठीक करें. android-workmanager/issues/56 को ठीक करता है

एपीआई में होने वाले बदलावों के बारे में अहम जानकारी

  • WorkStatus का नाम बदलकर WorkInfo कर दिया गया है. getStatus के सभी वैरिएंट का नाम बदलकर, getWorkInfo के वैरिएंट कर दिया गया है.
  • ListenableWorker.onStopped() में अब बूलियन आर्ग्युमेंट नहीं दिया जा सकता. इससे यह पता चलता है कि WorkRequest रद्द किया गया था या नहीं. WorkManager अब इस फ़र्क़ को नहीं दिखाता.
  • androidx.work.test पैकेज का नाम बदलकर androidx.work.testing पैकेज कर दिया गया है.
  • Constraints पर सेटर, अब सार्वजनिक एपीआई का हिस्सा नहीं हैं.
  • WorkerParameters.getTriggeredContentUris() और WorkerParameters.getTriggeredContentAuthorities(), पहले दिखाए गए ऐरे हैं. अब ये तरीके कलेक्शन दिखाते हैं.
  • ListenableWorker.onStartWork() का नाम बदलकर ListenableWorker.startWork() कर दिया गया है.
  • WorkStatus के कंस्ट्रक्टर को अब सार्वजनिक एपीआई का हिस्सा नहीं माना जाता.
  • Configuration.getMaxJobSchedulerID() और Configuration.getMinJobSchedulerID() का नाम बदलकर Configuration.getMinJobSchedulerId() और Configuration.getMaxJobSchedulerId() कर दिया गया है.
  • WorkManager पर enqueue और cancel के सभी वैरिएंट, अब नया Operation टाइप दिखाते हैं.
  • enqueue के सभी वैरिएंट में, अब WorkRequest के लिए वैरिएग्स स्वीकार नहीं किए जाते.
  • हर प्रोसेस के लिए, initialize WorkManager को एक से ज़्यादा बार इस्तेमाल करने पर, अब IllegalStateException दिखेगा.

वर्शन 1.0.0-alpha10

11 अक्टूबर, 2018

इस रिलीज़ में, डेवलपर के कंट्रोल वाले एसिंक्रोनस काम की सुविधा काम करती है. इस रिलीज़ में, एपीआई में ऐसे बदलाव किए गए हैं जिनसे आपके ऐप्लिकेशन पर असर पड़ सकता है. कृपया नीचे दिया गया एपीआई में बदलाव सेक्शन देखें.

हमें उम्मीद है कि WorkManager, अल्फा पीरियड के आखिरी चरणों में है. हमें उम्मीद है कि बीटा वर्शन में एपीआई स्थिर होगा. इसलिए, कृपया हमारे समस्या ट्रैकर पर अपना सुझाव, राय या शिकायत दर्ज करने के लिए कुछ समय निकालें.

एपीआई में हुए बदलाव

  • पहले से मौजूद सभी deprecated तरीकों और क्लास को हटा दिया गया है. खास तौर पर, डिफ़ॉल्ट Worker कंस्ट्रक्टर को हटा दिया गया है. यह एपीआई में होने वाला एक बड़ा बदलाव है.
  • NonBlockingWorker का नाम बदलकर ListenableWorker कर दिया गया है. यह अब सार्वजनिक क्लास है और इस्तेमाल के लिए तैयार है.
    • ListenableWorker, एक एब्स्ट्रैक्ट तरीके ListenableFuture<Payload> onStartWork() का ऐक्सेस देता है. इसे मुख्य थ्रेड पर कॉल किया जाता है. यह आपके ऊपर है कि आपको काम कब शुरू करना है और उसे कब प्रोसेस करना है. इसके बाद, आपको ListenableFuture को सही तरीके से अपडेट करना चाहिए. ListenableFuture को लागू करने के उदाहरण, alpha02 में Futures पैकेज में दिए गए हैं (WorkManager सेक्शन के नीचे देखें).
    • Worker, ListenableWorker को एक्सटेंड करता है और अब भी पहले की तरह काम करता है. इसके लिए, वह एब्स्ट्रैक्ट Result doWork() तरीके का इस्तेमाल करता है.
    • कुछ तरीकों और सदस्यों को Worker से ListenableWorker में शफ़ल किया गया.
    • हम जल्द ही, Kotlin कोरूटीन (स्टैबल वर्शन रिलीज़ होने के बाद) और RxJava2 का इस्तेमाल करने वाले ListenableWorker के लिए, रेफ़रंस लागू करने की सुविधा उपलब्ध कराएंगे.
  • इंटरफ़ेस WorkerFactory और लागू करने का तरीका DefaultWorkerFactory को WorkerFactory नाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है. लागू करने से यह पक्का होता है कि उपयोगकर्ता के बनाए गए किसी भी WorkerFactory इंस्टेंस के लिए, डिफ़ॉल्ट तौर पर रिफ़्लेक्शन पर आधारित व्यवहार को आखिरी कोशिश के तौर पर कॉल किया जाता है. यह बदलाव, आपके लिए अहम है.
  • WorkManager.synchronous() और WorkContinuation.synchronous() के साथ-साथ, उनसे जुड़े सभी तरीके हटा दिए गए हैं. एपीआई में कई तरीकों के रिटर्न टाइप के तौर पर ListenableFuture<Void> जोड़ा गया. यह एपीआई में होने वाला एक बड़ा बदलाव है.
    • अब ListenableFuture का इस्तेमाल करके, सिंक किए गए डेटा को देखा और पाया जा सकता है. उदाहरण के लिए, WorkManager.enqueue() से पहले void मिलता था, लेकिन अब ListenableFuture<Void> मिलता है. ऑपरेशन पूरा होने के बाद, कोड चलाने के लिए ListenableFuture.addListener(Runnable, Executor) या ListenableFuture.get() को कॉल किया जा सकता है.
    • ध्यान दें कि इन ListenableFuture से यह पता नहीं चलता कि कार्रवाई पूरी हुई या नहीं. इससे सिर्फ़ यह पता चलता है कि कार्रवाई पूरी हो गई है. हालांकि, यह जानकारी पाने के लिए, आपको अब भी WorkManager के तरीकों को चेन करना होगा.
    • हम इन ऑब्जेक्ट पर cancel() कॉल को अनदेखा करते हैं, क्योंकि ये भ्रम पैदा करते हैं और इनके बारे में सोचना मुश्किल होता है (क्या आपने ऑपरेशन रद्द किया है या उसके नतीजे को?). यह Future के समझौते के मुताबिक है.
    • सिंक्रोनस getStatus* मेथड के साथ बराबरी बनाए रखने के लिए, हमने ListenableFuture वैरिएंट उपलब्ध कराए हैं. साथ ही, LiveData दिखाने वाले मौजूदा मेथड के नाम बदलकर, "LiveData" को नाम के हिस्से के तौर पर शामिल किया है. उदाहरण के लिए, getStatusesByIdLiveData(UUID). यह एपीआई में किया गया एक बड़ा बदलाव है.

गड़बड़ियां ठीक की गईं

  • डुप्लीकेट androidx-annotations.pro फ़ाइलों से जुड़ी, alpha09 से मिली समस्या को ठीक किया गया. अपनी gradle फ़ाइल से exclude 'META-INF/proguard/androidx-annotations.pro' को मिटाकर, रिलीज़ के पिछले नोट से समस्या हल करने का तरीका हटाया जा सकता है.
  • नए Worker कन्स्ट्रक्टर को बनाए रखने के लिए, ProGuard कॉन्फ़िगरेशन जोड़े गए. b/116296569
  • रेस कंडीशन में संभावित NullPointerException को ठीक करें, जहां काम REPLACE किया गया था. b/116253486 और b/116677275
  • WorkContinuation.combine() अब दो या उससे ज़्यादा के बजाय, एक या उससे ज़्यादा WorkContinuation स्वीकार करता है. b/117266752

एपीआई में होने वाले बदलावों के बारे में अहम जानकारी

  • पहले से मौजूद सभी deprecated तरीकों और क्लास को हटा दिया गया है. खास तौर पर, डिफ़ॉल्ट Worker कंस्ट्रक्टर को हटा दिया गया है.
  • इंटरफ़ेस WorkerFactory और लागू करने का तरीका DefaultWorkerFactory को WorkerFactory नाम की ऐब्सट्रैक्ट क्लास में मर्ज कर दिया गया है.
  • WorkManager.synchronous() और WorkContinuation.synchronous() को हटाया गया.
  • WorkManager.getStatus*() तरीकों से अब ListenableFuture मिलते हैं. WorkManager.getStatus*LiveData() सामान लौटाए गए हैं.LiveData

वर्शन 1.0.0-alpha09

19 सितंबर, 2018

आम समस्या

अगर आपको यह समस्या आती है: "ओएस से स्वतंत्र पाथ 'META-INF/proguard/androidx-annotations.pro' में एक से ज़्यादा फ़ाइलें मिलीं", तो कृपया अपनी gradle फ़ाइल में यह बदलाव करें. यह बदलाव, alpha10 में समस्या को ठीक करने तक के लिए है:

Groovy

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

गड़बड़ियां ठीक की गईं

  • "100 जॉब" गड़बड़ी को ठीक करने के लिए, एक और सुधार जोड़ा गया. b/115560696
  • रेस कंडीशन की वजह से, फ़ॉरेन की कंस्ट्रेंट से जुड़ी गड़बड़ियों को ठीक करने के लिए कुछ सुधार किए गए हैं. b/114705286
  • ConstraintTrackingWorker.onStopped(boolean) कॉल को Worker को सौंपा गया. b/114125093
  • Firebase JobDispatcher के लिए, कम से कम बैकऑफ़ देरी को लागू करें. b/113304626
  • बेहतर थ्रेडिंग की सुविधा, लाइब्रेरी के अंदर काम करने की गारंटी देती है.
  • LiveData को अंदरूनी तौर पर डुप्लीकेट कॉपी से हटाने से जुड़ी संभावित समस्या को ठीक करें.

एपीआई में हुए बदलाव

  • अब WorkManager.Configuration के हिस्से के तौर पर WorkerFactory तय करके, रनटाइम के दौरान अपने Worker इंस्टेंस बनाए जा सकते हैं. फ़ॉलबैक फ़ैक्ट्री DefaultWorkerFactory है, जो WorkManager के पिछले वर्शन के काम करने के तरीके से मेल खाती है.
    • Worker और NonBlockingWorker के लिए डिफ़ॉल्ट कन्स्ट्रक्टर, अब 'इस्तेमाल नहीं किए जाने चाहिए' के तौर पर मार्क किए गए हैं. कृपया नए कंस्ट्रक्टर (Worker(Context, WorkerParameters)) का इस्तेमाल करें और super(Context, WorkerParameters) को कॉल करें. WorkManager के आने वाले वर्शन में, डिफ़ॉल्ट कंस्ट्रक्टर हटा दिया जाएगा.
  • हमने अपने अंदर नए ListenableFuture आर्टफ़ैक्ट का इस्तेमाल करना शुरू कर दिया है. यह आर्टफ़ैक्ट, Guava डिपेंडेंसी से मुक्त है. हम आने वाले रिलीज़ में, एपीआई में ListenableFutures की सुविधा जोड़ेंगे. इस बदलाव के बाद, NonBlockingWorker को अनहाइड किया जा सकेगा.
  • TestDriver.setInitialDelayMet(UUID) और TestDriver.setPeriodDelayMet(UUID) की मदद से, TestDriver में तय समय पर होने वाले काम को ट्रिगर करने की सुविधा जोड़ी गई. b/113360060

बदलावों की जानकारी

  • डिफ़ॉल्ट Worker और NonBlockingWorker कंस्ट्रक्टर का इस्तेमाल नहीं किया जा सकता. कृपया जल्द से जल्द नए कन्स्ट्रक्टर पर माइग्रेट करें. आने वाले वर्शन में, डिफ़ॉल्ट कन्स्ट्रक्टर हटा दिया जाएगा.

वर्शन 1.0.0-alpha08

27 अगस्त, 2018

गड़बड़ियां ठीक की गईं

  • WorkManager के कॉम्पोनेंट को साफ़ तौर पर, सीधे बूट होने की सुविधा के बारे में जानकारी नहीं होने के तौर पर लेबल किया गया है, ताकि वे सीधे बूट होने की सुविधा के दौरान चालू न हों. आने वाले समय में, हम WorkManager का एक ऐसा वर्शन उपलब्ध कराएंगे जो सीधे तौर पर बूट के बारे में जानकारी रखता है. b/112665532
  • उस समस्या को ठीक किया गया है जिसकी वजह से, दोबारा कोशिश करने पर काम नहीं हो रहा था. b/112604021
  • समय-समय पर होने वाले काम को बार-बार न होने की समस्या को ठीक किया गया. यह समस्या ऊपर बताई गई समस्या से जुड़ी है. b/112859683
  • ऐप्लिकेशन प्रोसेस पहले से चल रही होने पर, बैकऑफ़ से जुड़ी नीतियों का पालन किया जाता है.
  • Data में अपवाद के मैसेज ठीक किए गए हैं, ताकि यह पता चल सके कि सीमा 10 केबी है.
  • JobScheduler प्रोसेस पूरी होने में लगने वाले समय को ध्यान में रखते हुए, Configuration.setMaxSchedulerLimit(int) की ज़्यादा से ज़्यादा वैल्यू को 50 पर सेट किया गया है. b/112817355

वर्शन 1.0.0-alpha07

16 अगस्त, 2018

गड़बड़ियां ठीक की गईं

  • नेगेटिव सीमाओं वाली संभावित SQL क्वेरी को ठीक किया, जो अनगिनत नतीजे दिखा सकती थी.
  • जिस टास्क को पूरा कर लिया गया है उसकी सभी कॉपी, अब अन्य शेड्यूलर में सही तरीके से रद्द हो जाती हैं. इस वजह से, JobScheduler जॉब की सीमा पार हो गई. b/111569265
  • ConstraintTracker में ConcurrentModificationException को ठीक किया गया. b/112272753
  • Data.getBooleanArray(String) और Data.getIntArray(String) के रिटर्न टाइप के एनोटेशन को @NonNull के बजाय @Nullable में बदला गया. b/112275229

एपीआई में हुए बदलाव

  • Worker अब एक नई क्लास, NonBlockingWorker शुरू करता है. इससे, किसी भी मौजूदा इस्तेमाल पर कोई असर नहीं पड़ता. आने वाले समय में, NonBlockingWorker कस्टम थ्रेडिंग सलूशन के लिए पूरी तरह से काम करने वाली इकाई बन जाएगी.
  • Data.getBooleanArray(String) और Data.getIntArray(String) के रिटर्न टाइप के एनोटेशन को @NonNull के बजाय @Nullable में बदला गया. b/112275229
  • Kotlin एक्सटेंशन: Map.toWorkData() को बंद कर दिया गया है. साथ ही, मौजूदा एपीआई के साथ ज़्यादा बेहतर तरीके से काम करने के लिए, टॉप-लेवल workDataOf(vararg Pair<String, Any?>) जोड़ा गया है.

वर्शन 1.0.0-alpha06

1 अगस्त 2018

गड़बड़ियां ठीक की गईं

  • टास्क शेड्यूल करते समय, डेटाबेस लॉक होने से रोकना. b/111801342
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Doze मोड में होने पर PeriodicWork शेड्यूल के मुताबिक नहीं चलता. b/111469837
  • पाबंदियों को ट्रैक करते समय, रेस कंडीशन को ठीक करें. इसकी वजह से WorkManager क्रैश हो जाता है. googlecodelabs/android-workmanager/issues/56
  • WorkRequest.Builder#build() का इस्तेमाल करते समय, यूनीक WorkRequest बनाएं. b/111408337
  • RescheduleReceiver का इस्तेमाल सिर्फ़ तब चालू करें, जब WorkRequest के लिए इसकी ज़रूरत हो. b/111765853

वर्शन 1.0.0-alpha05

24 जुलाई, 2018

एपीआई में हुए बदलाव

  • WorkManager.getInstance() को अब @Nullable के बजाय @NonNull के साथ एनोटेट किया गया है. इसके बजाय, अगर मैन्युअल तरीके से शुरू करने पर सिंगलटन सही तरीके से शुरू नहीं होता है, तो यह तरीका IllegalStateException दिखाएगा. यह एपीआई में एक बड़ा बदलाव है.
  • नया एपीआई, Configuration.Builder.setMinimumLoggingLevel(int) जोड़ा गया है. इससे, WorkManager के ज़्यादा शब्दों वाले मैसेज को कंट्रोल किया जा सकता है. डिफ़ॉल्ट रूप से, WorkManager Log.INFO और उसके बाद के वर्शन को लॉग करता है.
  • Data.getString() के हस्ताक्षर में बदलाव किया गया है, ताकि अब यह डिफ़ॉल्ट वैल्यू न ले (यह null है). यह एपीआई में एक बड़ा बदलाव है.
  • सिर्फ़ इंटरनल इस्तेमाल के लिए ज़रूरी कुछ तरीकों को @hide के तौर पर मार्क किया गया है. इसमें Constraints कन्स्ट्रक्टर, Data.toByteArray(), और Data.fromByteArray(byte[]) शामिल हैं. यह एपीआई में होने वाला एक बड़ा बदलाव है.

गड़बड़ियां ठीक की गईं

  • WorkManager, अपने-आप बैकअप लेने की सुविधा के चालू होने पर, अब कोई भी काम नहीं करता. इस वजह से, ऐप्लिकेशन क्रैश हो सकता था. b/110564377
  • JobScheduler का इस्तेमाल करते समय, PeriodicWorkRequest को दो बार शेड्यूल करने की समस्या को ठीक किया गया. b/110798652
  • डिवाइस के डॉज़ मोड में जाने के बाद, PeriodicWorkRequests के ठीक से काम न करने की समस्या को ठीक किया गया. b/111469837
  • Firebase JobDispatcher का इस्तेमाल करते समय, शुरुआती देरी से जुड़ी समस्या को ठीक किया गया. b/111141023
  • दौड़ की कुछ संभावित स्थितियों और समय से जुड़ी समस्याओं को ठीक किया गया.
  • जिन BroadcastReceiver की अब ज़रूरत नहीं थी उन्हें सही तरीके से हटा दिया गया.
  • ज़बरदस्ती बंद किए गए ऐप्लिकेशन के रीस्टार्ट होने पर, टास्क को फिर से शेड्यूल करने की परफ़ॉर्मेंस को ऑप्टिमाइज़ किया गया है.
  • WorkRequest को सूची में जोड़ने से पहले या बाद में, TestScheduler.setAllConstraintsMet(UUID) को कॉल करने की अनुमति है. b/111238024

बदलावों की जानकारी

  • WorkManager.getInstance() को अब @Nullable के बजाय @NonNull के साथ एनोटेट किया गया है.
  • Data.getString() के हस्ताक्षर में बदलाव किया गया है, ताकि अब यह डिफ़ॉल्ट वैल्यू न ले (यह null है).
  • सिर्फ़ इंटरनल इस्तेमाल के लिए ज़रूरी कुछ तरीकों को @hide के तौर पर मार्क किया गया है. इसमें Constraints कन्स्ट्रक्टर, Data.toByteArray(), और Data.fromByteArray(byte[]) शामिल हैं.

वर्शन 1.0.0-alpha04

26 जून, 2018

गड़बड़ियां ठीक की गईं

  • AlarmManager के आधार पर लागू करने के दौरान, PeriodicWorkRequest को अब सही तरीके से फिर से शेड्यूल किया जाता है.
  • ज़बरदस्ती बंद करने या रीबूट करने के बाद, सभी वर्कर्स को फिर से शेड्यूल करते समय होने वाली संभावित ANR को ठीक किया गया. b/110507716
  • WorkManager के अलग-अलग एपीआई में, वैल्यू न होने की जानकारी देने वाले एनोटेशन जोड़े गए हैं. b/110344065
  • वर्कर के चलने के दौरान होने वाले ऐसे अपवादों को लॉग करें जिनकी पहचान नहीं हुई है. b/109900862
  • अगर आपको WorkManager के पुराने वर्शन पर वापस जाना है, तो डेटाबेस को मिटाने वाले माइग्रेशन की अनुमति दी गई है. b/74633270
  • डुप्लीकेट इंप्लिसिट टैग बनाने पर, माइग्रेशन क्रैश होने की समस्या को ठीक किया गया. यह समस्या बहुत कम होती है. यह सिर्फ़ तब होती है, जब आपने खुद ही एक ही इंप्लिसिट टैग फ़ॉर्मैट का इस्तेमाल किया हो.

वर्शन 1.0.0-alpha03

19 जून, 2018

गड़बड़ियां ठीक की गईं

  • AlarmManager के आधार पर लागू करने की प्रोसेस में रेस कंडीशन को ठीक किया गया. b/80346526.

  • डिवाइस को रीबूट करने के बाद, JobScheduler का इस्तेमाल करते समय डुप्लीकेट जॉब की समस्या को ठीक किया गया.

  • कॉन्टेंट यूआरआई ट्रिगर वाले जॉब, अब रीबूट के बाद भी बने रहते हैं. b/80234744

  • दस्तावेज़ से जुड़े अपडेट. b/109827628, b/109758949, b/80230748

  • WorkRequest को फिर से सूची में जोड़ने पर क्रैश होने की समस्या को ठीक किया गया. b/109572353.

  • work-runtime-ktx डिपेंडेंसी का इस्तेमाल करते समय, Kotlin कंपाइलर से मिलने वाली चेतावनियों को ठीक किया गया.

  • WorkManager अब Room वर्शन 1.1.1-rc1 का इस्तेमाल करता है.

एपीआई में हुए बदलाव

  • WorkContinuation.getStatuses() का सिंक्रोनस वर्शन getStatusesSync() जोड़ा गया.
  • Worker में, उपयोगकर्ता की ओर से की गई सदस्यता रद्द करने की कार्रवाई और ऑपरेटिंग सिस्टम के अनुरोध पर कुछ समय के लिए सदस्यता रोकने की कार्रवाई के बीच अंतर करने की सुविधा होती है. अगर किसी भी तरह की रोक का अनुरोध किया गया है, तो Worker.isStopped() true दिखाता है. अगर काम को साफ़ तौर पर रद्द कर दिया गया है, तो Worker.isCancelled() true दिखाता है. b/79632247
  • एपीआई 28 पर, JobParameters#getNetwork() के लिए सहायता जोड़ें. इसे Worker.getNetwork() के ज़रिए दिखाया जाता है.
  • Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) जोड़ा गया, ताकि यह तय किया जा सके कि JobScheduler या AlarmManager को कितनी जॉब भेजी जा सकती हैं. इससे, WorkManager आपके सभी उपलब्ध JobScheduler स्लॉट नहीं ले पाएगा.
  • Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) जोड़ा गया, जो JobScheduler के लिए सुरक्षित JobScheduler जॉब आईडी की रेंज तय करने में मदद करता है. b/79996760WorkManager
  • Worker.getRunAttemptCount(), किसी दिए गए Worker के लिए, मौजूदा रन की संख्या दिखाता है. b/79716516
  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) की मदद से, यूनीक PeriodicWorkRequest को सूची में जोड़ा जा सकता है. b/79600647
  • WorkManager.cancelAllWork() सभी Worker को रद्द कर देता है. WorkManager पर निर्भर लाइब्रेरी, WorkManager.getLastCancelAllTimeMillis() का इस्तेमाल करके यह क्वेरी कर सकती हैं कि इस तरीके को पिछली बार कब कॉल किया गया था. इससे, लाइब्रेरी की इंटरनल स्टेटस को और बेहतर तरीके से क्लीनअप किया जा सकता है.
  • इंटरनल डेटाबेस से पूरे हो चुके जॉब हटाने के लिए, WorkManager.pruneWork() जोड़ा गया. b/79950952, b/109710758

ऐप्लिकेशन के काम करने के तरीके में बदलाव

  • सभी WorkRequest के लिए एक इंप्लिसिट टैग जोड़ा गया है. यह Worker के लिए पूरी तरह से क्वालिफ़ाइड क्लास का नाम है. इससे, tag के बिना या id उपलब्ध न होने पर, WorkRequest को हटाया जा सकता है. b/109572351

बदलावों की जानकारी

  • Worker.WorkerResult का नाम बदलकर Worker.Result किया गया.
  • Worker.onStopped में अब एक अतिरिक्त isCancelled पैरामीटर है. जब Worker को साफ़ तौर पर रद्द कर दिया जाता है, तो यह पैरामीटर true पर सेट हो जाता है.

वर्शन 1.0.0-alpha02

24 मई, 2018

गड़बड़ियां ठीक की गईं

  • State.isFinished() पर NullPointerException को ठीक किया गया. b/79550068
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से Worker को Application.onCreate() पर फिर से शेड्यूल किया गया था. b/79660657
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से ओएस की अनुमति से ज़्यादा काम शेड्यूल किया जा सकता था. b/79497378
  • Worker से जुड़े वेक लॉक को बैकग्राउंड थ्रेड में क्लीनअप करने की सुविधा जोड़ी गई.
  • AlarmManager लागू करने के बाद, अब बाकी बचे सभी काम पूरे होने पर, डेटा को सही तरीके से हटा दिया जाता है.
  • क्लीनअप करने से जुड़ी ऐसी एसक्यूएल क्वेरी ठीक की गईं जिनसे अंग्रेज़ी के अलावा अन्य भाषाओं पर असर पड़ा था. b/80065360
  • Data में float के लिए सहायता जोड़ी गई. b/79443878
  • Data.Builder.putAll() अब Builder का एक इंस्टेंस दिखाता है. b/79699162
  • दस्तावेज़ में ज़्यादा Javadoc और गड़बड़ियों को ठीक किया गया. b/79691663

एपीआई में हुए बदलाव

  • Workers को रोकने पर, वे प्रतिक्रिया दे सकते हैं. 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 है.