WorkManager

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

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

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

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

Groovy

dependencies {
    def work_version = "2.12.0"

    // (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.12.0"

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

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

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

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

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

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

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

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

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

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

नई समस्या दर्ज करने का तरीका

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

वर्शन 2.12

वर्शन 2.12.0

23 सितंबर, 2026

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

2.11.0 के बाद हुए मुख्य बदलाव:

  • minSdk को एपीआई 23 से एपीआई 24 पर अपडेट कर दिया गया है
  • एक नया आर्टफ़ैक्ट, androidx.work:work-analytics, जोड़ा गया है. यह आपके काम के इतिहास की जांच करने के लिए, एक्सपेरिमेंट के तौर पर Work Metrics API जोड़ता है. WorkMetricsInfoRepository, हर काम के इवेंट के टाइमस्टैंप, कर्मचारी की अवधि, कुल रनटाइम, और रन के प्रयासों के ब्रेकडाउन को WorkMetricsInfo करता है. कॉन्फ़िगर की जा सकने वाली क्वेरी के ज़रिए मेट्रिक पढ़ी जा सकती हैं. इसके अलावा, इन्हें पूरे किए गए काम के Flow के तौर पर भी देखा जा सकता है. इन एपीआई का इस्तेमाल करने के लिए, @ExperimentalWorkMetricsApi में ऑप्ट-इन करना ज़रूरी है.
  • नए एक्सपेरिमेंटल इवेंट लिसनर एपीआई की मदद से, WorkManager के एक्ज़ीक्यूशन और शेड्यूलिंग को सीधे तौर पर मॉनिटर किया जा सकता है. Configuration.Builder अब वर्कर के एक्ज़ीक्यूशन इवेंट (शुरू, खत्म, बंद, और बिना हैंडल किए गए अपवाद) के लिए एक लिसनर और शेड्यूलिंग इवेंट (enqueue, unblock, update, cancellation, और ज़रूरी शर्तें पूरी न हो पाना) के लिए एक लिसनर स्वीकार करता है. ये ऐसे बिल्डिंग ब्लॉक हैं जिन पर work-analytics खुद बना है.

वर्शन 2.12.0-rc01

12 अगस्त, 2026

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

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

  • WorkConstraintsDaoTest क्लास और फ़ाइल के नाम में टाइपिंग की गड़बड़ी को ठीक किया गया. (I0868d)
  • WorkManager स्टार्टअप के दौरान, PackageManagerService में लॉक कंटेंशन कम किया गया. इसके लिए, PackageManagerHelper में कॉम्पोनेंट मेनिफ़ेस्ट की डिफ़ॉल्ट रूप से चालू होने की स्थितियों को क्वेरी किया गया और कैश मेमोरी में सेव किया गया. (Id84ba, b/528755807)
  • उस समस्या को ठीक किया गया है जिसमें वर्कर के चालू होने के दौरान WorkManager.updateWork को कॉल करने पर, एक्ज़ीक्यूशन लाइफ़साइकल इवेंट हुक और टेलीमेट्री ट्रैकिंग तुरंत पोस्ट-अपडेट जनरेशन पर स्विच हो जाती थी. (Ie80e8, b/511074795)

वर्शन 2.12.0-beta01

29 जुलाई, 2026

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

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

  • एक्ज़ीक्यूटर के अपवादों को पकड़ते समय मेमोरी लीक होने की समस्या ठीक की गई (I3404e, b/532588487)
  • RemoteListenableWorker के लिए, रद्द करने की सुविधा को बेहतर बनाया गया है, ताकि सिस्टम की ओर से शुरू किए गए वर्कर, रिमोट कोरूटीन को सही तरीके से रद्द कर सकें और काम को फिर से शेड्यूल कर सकें. वहीं, खुद को रद्द करने वाले रिमोट वर्कर, काम को 'असफल' के तौर पर सही तरीके से मार्क कर सकें. ध्यान दें: फ़िलहाल, इस सुविधा को लाइब्रेरी-ग्रुप के लिए प्रतिबंधित फ़्लैग Configuration.isRemoteCancellationPropagationFixEnabled (डिफ़ॉल्ट रूप से गलत) के पीछे रखा गया है. इससे एक्सपेरिमेंट के तौर पर पुष्टि की जा सकेगी. साथ ही, यह पक्का किया जा सकेगा कि फ़्लैग को हमेशा के लिए हटाने से पहले, भरोसेमंद मेट्रिक स्थिर बनी रहें. (I387f3, b/420724435)

वर्शन 2.12.0-alpha01

15 जुलाई, 2026

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

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

  • मीट्रिक की जानकारी को फ़िल्टर करने के लिए, WorkMetricsQuery API जोड़ा गया (I132b4, b/522338412)
  • WorkMetricsInfo में workerDurationMillis और totalRuntimeMillis को लागू करें, ताकि वर्कर के टास्क पूरे करने में लगने वाले समय और कुल रनटाइम को ट्रैक किया जा सके. (I57f65, b/507212208)
  • WorkMetricsInfoRepository में retentionDuration (Duration, API 26+) और retentionTime/retentionTimeUnit (API 23+) कंस्ट्रक्टर जोड़े गए हैं, ताकि पुरानी मेट्रिक को हटाया जा सके. डिफ़ॉल्ट रूप से, यह अवधि सात दिन होती है. (Ifdf2e, b/522338412)
  • पूरे हो चुके WorkMetricsInfo के लिए, ऐड फ़्लो एपीआई जोड़ा गया (I11ec2, b/507212999)
  • work-analytics क्लास में एक्सपेरिमेंटल एनोटेशन जोड़ा गया (I1a055, b/528112001)
  • androidx.benchmark का स्कोरminSdk अब 24 है. (Ic2a85)
  • WorkMetricsInfo में stopReasonCounts, explicitRetryCount, और runAttemptCount लागू करें. (I95498, b/507212225)
  • काम पूरा होने के इतिहास को ट्रैक करने के लिए, WorkMetricsInfo एपीआई और डेटाबेस स्कीमा लागू करें. इसमें, एनक्यू, अनब्लॉक, पहली बार शुरू होने और खत्म होने के टाइमस्टैंप शामिल हैं. (I163e9, b/479123623, b/507212482)
  • मौजूदा प्रोसेस में, ओपर्च्यूनिस्टिक शेड्यूलिंग की सुविधा बंद करने के लिए एक्सपेरिमेंटल एपीआई जोड़ा गया (I1062d, b/513299442)
  • WorkManager शेड्यूलिंग इवेंट (I14487, b/448485695) को सुनने के लिए, एक्सपेरिमेंटल एपीआई जोड़ा गया
  • WorkInfo में वर्कर क्लास का नाम जोड़ें (I57da1, b/448485695)
  • एक्सपेरिमेंट के तौर पर उपलब्ध इवेंट लिसनर एपीआई (Icaa8e, b/448485695) में ज़्यादा विस्तृत एनोटेशन जोड़ा गया
  • एक नया एपीआई जोड़ा गया है. इससे Data क्लास के इंस्टेंस से, नल वैल्यू वाली स्ट्रिंग ऐरे को वापस पाने की अनुमति मिलती है (I78bc3, b/383071402)
  • work-analytics आर्टफ़ैक्ट बनाएं (Idc7c2, b/465357612)
  • वर्कर के एक्ज़ीक्यूशन से जुड़ी इवेंट के लिए लिसनर सेट करने के लिए, एक्सपेरिमेंटल एपीआई जोड़ा गया (I06b38, b/448485695)

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

  • डिफ़ॉल्ट WM कॉन्फ़िगरेशन (Ic2c42, b/506239869) के लिए, कस्टम थ्रेड पूल के बजाय Dispatchers.Default का इस्तेमाल करें
  • खराब परफ़ॉर्म करने वाले वर्कर को मैनेज करने के लिए, टेस्ट को बेहतर बनाया गया और नए टेस्ट जोड़े गए (I500f3, b/506239869)
  • WorkManager's एक्ज़ीक्यूशन लिसनर डिस्पैच में मौजूद ConcurrentModificationException को ठीक किया गया. (I4cc18, b/506239869)
  • WorkManager में नेटवर्क की पाबंदी से जुड़ी कॉलबैक फ़ंक्शन रजिस्टर करते समय प्रोसेस क्रैश होने की समस्या ठीक की गई है. ऐसा ACCESS_NETWORK_STATE अनुमतियां न होने की वजह से हो रहा था. (I7045a, b/446013734)
  • DEBUG लॉग चालू होने पर, लॉग की जानकारी को बेहतर बनाया गया (Id9e5f, b/491209738)
  • इस बग को ठीक किया गया है. इसकी वजह से, ओएस के साथ फिर से शेड्यूल किए गए काम को शेड्यूल नहीं किया जा सका (I452fc, b/504085166, b/517339607)
  • Configuration.Provider रेफ़रंस दस्तावेज़ का लिंक ठीक किया गया (Ieedb7, b/340913210)
  • इवेंट हुक को कार्रवाइयों के लिए ब्लॉक नहीं किया गया (I27cd8, b/448485695)
  • WorkManager अब सामान्य SQLiteException पर शुरू होने की कोशिश करता है. (I98436, b/485368721)
  • डेवलपर को WorkInfo.STOP_REASON_UNKNOWN से मैप करके, स्टॉप होने की ऐसी वजह का कोड मिल रहा था जो मौजूद नहीं है. इस समस्या को ठीक कर दिया गया है. (I0b175, b/479314734)
  • नेटवर्क की ज़रूरी शर्तें पूरी होने के बावजूद, बैकग्राउंड में नेटवर्क कॉल फ़ेल होने से जुड़ी अन्य समस्याएं ठीक की गईं (Ic7f73, b/445324855)
  • NetworkStateTracker में सुरक्षा से जुड़ी गड़बड़ी ठीक करें. (I4b7ca, b/480123154)
  • यह पक्का किया गया है कि एक्ज़ीक्यूशन हुक को सटीक WorkInfo स्नैपशॉट मिले (I25ebb, b/448485695)
  • उस समस्या को ठीक किया गया है जिसकी वजह से Android 15 पर, बैकग्राउंड नेटवर्क के अनुरोध पूरे नहीं हो पाते थे. (I60f24, I8a0a2, b/452081708) (I5abb7, b/465016918)
  • उस समस्या को ठीक किया गया है जिसकी वजह से, बिना किसी रुकावट के चलने वाले WorkRequest फिर से शेड्यूल नहीं होते थे. (Ia6b92, b/443879071)

वर्शन 2.11

वर्शन 2.11.2

25 मार्च, 2026

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

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

  • नेटवर्क की ज़रूरी शर्तें पूरी होने के बावजूद, बैकग्राउंड में नेटवर्क कॉल फ़ेल होने से जुड़ी अन्य समस्याओं को ठीक किया गया है (Ic7f73, b/445324855)
  • NetworkStateTracker में सुरक्षा से जुड़ी गड़बड़ी ठीक करें. (I4b7ca, b/480123154)
  • उस समस्या को ठीक किया गया है जिसकी वजह से, बिना किसी रुकावट के चलने वाले WorkRequest फिर से शेड्यूल नहीं होते थे. (Ia6b92, b/443879071)

वर्शन 2.11.1

28 जनवरी, 2026

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

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

  • Android 15 और इसके बाद के वर्शन पर कनेक्टिविटी ब्लॉक होने पर, नेटवर्क की स्थिति से जुड़ी पाबंदी को पास होने से रोकें. (I5abb7, b/465016918)
  • नेटवर्क की पाबंदी को ट्रैक करने की सुविधा से जुड़ी समस्या ठीक की गई है. इसमें शुरुआती वैल्यू के लिए, ब्लॉक किए गए स्टेटस को ध्यान में नहीं रखा जाता था. (I8a0a2, b/452081708)
  • Android 15 और इसके बाद के वर्शन पर कनेक्टिविटी ब्लॉक होने के दौरान, नेटवर्क अनुरोध की सीमा से जुड़ी समस्या को ठीक किया गया है. (I60f24, b/452081708)

वर्शन 2.11.0

22 अक्टूबर, 2025

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

2.10.0 के बाद हुए अहम बदलाव:

  • minSdk को एपीआई लेवल 21 से एपीआई लेवल 23 पर अपडेट कर दिया गया है.
  • WorkManager के कॉन्फ़िगरेशन बिल्डर में setRemoteSessionTimeoutMillis एपीआई जोड़ा गया है. इससे यह कॉन्फ़िगर किया जा सकेगा कि RemoteWorkManager सेशन, आखिरी बार इस्तेमाल किए जाने के बाद कितने समय तक चालू रहेगा.

वर्शन 2.11.0-rc01

08 अक्टूबर, 2025

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

वर्शन 2.11.0-beta01

24 सितंबर, 2025

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

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

  • stopRunningWorkWithReason को WorkManager TestDriver में जोड़ें. (Ie53b2, b/439955564)

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

  • लंबित निर्देश होने पर फ़ोरग्राउंड सेवा के रुकने की समस्या ठीक की गई (Iae822, b/432069314)
  • रिमोट को-रूटीन वर्कर की रिमोट सेवा को अनबाइंड करने में आ रही समस्या को ठीक किया गया (I842f2, b/247113322)

वर्शन 2.11.0-alpha01

27 अगस्त, 2025

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

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

  • minSdk को एपीआई 21 से एपीआई 23 पर अपडेट कर दिया गया है (Ibdfca, b/380448311, b/435705964, b/435705223)
  • WorkManager के कॉन्फ़िगरेशन बिल्डर में, एपीआई setRemoteSessionTimeoutMillis को जोड़ा गया है. इससे यह कॉन्फ़िगर किया जा सकेगा कि RemoteWorkManager सेशन, आखिरी बार इस्तेमाल किए जाने के बाद कितने समय तक चालू रहेगा. (Ib23c8)
  • WorkRequest.Builder में एक्सपेरिमेंटल एपीआई जोड़ें, ताकि सिस्टम की वजह से काम में रुकावट आने पर बैकऑफ़ लागू किया जा सके. (Ie2dc7, b/335513480)
  • कस्टम WorkerFactory लागू करने के लिए बनाए जा रहे TestListenableWorkerBuilder से अलग वर्कर क्लास में पास करने के लिए, टेस्ट एपीआई जोड़ें (If6bff, b/389154854)

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

  • ज़रूरत से ज़्यादा आईपीसी (Ie4027, b/427115602) को रोकने के लिए, SharedNetworkCallback में नेटवर्क की क्षमताओं को कैश मेमोरी में सेव करें
  • नेटवर्क की पाबंदी के आकलन से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, पहले वर्क आइटम के बाद के वर्क आइटम को मौजूदा नेटवर्क की सुविधाएं नहीं मिलती थीं. इसके बजाय, टाइम आउट होने के बाद ConstraintsNotMet दिखता था (Ib6a66, b/427115602)

वर्शन 2.10

वर्शन 2.10.5

24 सितंबर, 2025

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

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

  • लंबित निर्देश होने पर फ़ोरग्राउंड सेवा के रुकने की समस्या ठीक की गई (Iae822, b/432069314)

वर्शन 2.10.4

10 सितंबर, 2025

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

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

  • RemoteCoroutineWorker के रिमोट सेवा को अनबाइंड न कर पाने की समस्या को ठीक किया गया (I842f2, b/247113322)

वर्शन 2.10.3

30 जुलाई, 2025

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

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

  • उस समस्या को ठीक किया गया है जिसमें पिछले वर्कर की तरह ही नेटवर्क की पाबंदियों वाले वर्कर, पाबंदियों के पूरा न होने की शिकायत करते थे. (b/427115602).

वर्शन 2.10.2

18 जून, 2025

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

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

  • नेटवर्क अनुरोधों और डिफ़ॉल्ट सुविधाओं के साथ वर्कर को बनाए रखने से जुड़ी समस्या को ठीक किया गया है. इससे, हटाई गई सुविधाओं को फिर से जोड़ा जा सकेगा. साथ ही, नेटवर्क की पाबंदियों वाले वर्कर को गलत तरीके से काम करने से रोका जा सकेगा. (b/409716532)
  • उस बग को ठीक किया गया है जिसकी वजह से नेटवर्क की पाबंदियों वाले वर्कर, पाबंदियां पूरी न होने की वजह से तुरंत काम नहीं कर पाते थे. हालांकि, नेटवर्क और क्षमताएं उपलब्ध थीं. (b/423403088)

वर्शन 2.10.1

23 अप्रैल, 2025

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

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

  • WorkManager के रजिस्ट्रेशन से TooManyRequestsException के बाहर होने की संभावना को कम करें. NetworkCallback का इस्तेमाल, कंस्ट्रेंट ट्रैकिंग के लिए किया जाता है. (b/231499040, b309d5).

वर्शन 2.10.0

30 अक्टूबर, 2024

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

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

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

वर्शन 2.10.0-rc01

24 अक्टूबर, 2024

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

वर्शन 2.10.0-beta01

2 अक्टूबर, 2024

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

वर्शन 2.10.0-alpha04

18 सितंबर, 2024

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

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

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

वर्शन 2.10.0-alpha03

4 सितंबर, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.10.0-alpha02

17 अप्रैल, 2024

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

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

  • WorkManager में कॉन्फ़िगर किए जा सकने वाले @RestrictTo Tracer के ज़रिए, ट्रेस स्पैन को भेजने की सुविधा जोड़ी गई है. (I17d7f, b/260214125)
  • Configuration.workerCoroutineContext को डिसपैचर को कंट्रोल करने के लिए जोड़ा गया था. इसमें CoroutineWorker को एक्ज़ीक्यूट किया जाता है. इससे WorkManager में Dispatchers.Default का इस्तेमाल पूरी तरह से बंद करने में मदद मिलती है. (Icd1b7)
  • Workers के लिए कस्टम अपवाद हैंडलर जोड़े गए (Ib1b74, b/261190695)
  • अब 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 की मदद से जांचने की क्षमता. अब LiveData के बजाय, वर्कर की प्रोग्रेस को फ़्लो के ज़रिए WorkManager.getWorkInfosFlow और इसी तरह के अन्य तरीकों से देखा जा सकता है.
  • अब WorkManager यह जानकारी देता है कि किसी वर्कर को पहले क्यों रोका गया था. इसे वर्कर से getStopReason() तरीके से या WorkInfo से getStopReason() तरीके से क्वेरी किया जा सकता है.
  • setNextScheduleTimeOverride की मदद से, समय-समय पर काम करने वाले लोगों के लिए सटीक शेड्यूल बनाना. इससे, समय-समय पर होने वाले अगले टास्क की शेड्यूल का डाइनैमिक तरीके से हिसाब लगाया जा सकता है. इसका इस्तेमाल, अडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राय बिहेवियर जैसी ऐडवांस सुविधाओं को लागू करने के लिए किया जा सकता है. इसके अलावा, इसका इस्तेमाल हर सुबह उपयोगकर्ता के उठने से पहले, न्यूज़फ़ीड वर्कर को चलाने के लिए किया जा सकता है. इन तकनीकों के साथ ExistingPeriodicWorkPolicy.UPDATE का इस्तेमाल किया जाना चाहिए, ताकि अगले वर्कर को शेड्यूल करते समय, मौजूदा वर्कर को रद्द न किया जा सके.
  • WorkManager की टेस्टिंग, थ्रेडिंग मैचिंग प्रोडक्शन के साथ. ExecutorsMode.PRESERVE_EXECUTORS का इस्तेमाल initializeTestWorkManager में किया जा सकता है, ताकि Configuration में सेट किए गए एक्ज़ीक्यूटर को सुरक्षित रखा जा सके और असली मुख्य थ्रेड का इस्तेमाल किया जा सके.
  • CoroutineWorker जैसे Coroutines API को, अतिरिक्त आर्टफ़ैक्ट work-runtime-ktx से मुख्य आर्टफ़ैक्ट work-runtime में ले जाया गया है. work-runtime-ktx अब खाली है.

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

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

वर्शन 2.9.0-rc01

18 अक्टूबर, 2023

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

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

वर्शन 2.9.0-beta01

6 सितंबर, 2023

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

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

वर्शन 2.9.0-alpha02

26 जुलाई, 2023

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

नई सुविधाएं

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

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

  • stopReason को WorkInfo में जोड़ा गया. यह वर्कर के चलने के बाद stopReason उपलब्ध कराता है. यह रिपोर्टिंग stopReason में काम आ सकता है, क्योंकि वर्कर के बंद होने के बाद, ऐप्लिकेशन को बहुत तेज़ी से बंद किया जा सकता है. (I21386)
  • कॉन्फ़िगरेशन के ज़रिए Clock को सेट करने की अनुमति दें. साथ ही, इसका इस्तेमाल Worker की जांचों के क्रम को तय करने के लिए करें. (Ic586e)
  • ListenableWorker में getStopReason() तरीका जोड़ा गया है. इससे यह पता चलता है कि वर्कर को क्यों रोका गया था. (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 की मदद से जांचने की क्षमता. अब LiveData के बजाय, वर्कर की प्रोग्रेस को फ़्लो के ज़रिए WorkManager.getWorkInfosFlow और इसी तरह के अन्य तरीकों से देखा जा सकता है.
  • setNextScheduleTimeOverride की मदद से, समय-समय पर काम करने वाले लोगों के लिए सटीक शेड्यूल बनाना. इससे, समय-समय पर होने वाले अगले टास्क की शेड्यूल का डाइनैमिक तरीके से हिसाब लगाया जा सकता है. इसका इस्तेमाल, अडैप्टिव रीफ़्रेश टाइम, कस्टम रीट्राय बिहेवियर जैसी ऐडवांस सुविधाओं को लागू करने के लिए किया जा सकता है. इसके अलावा, इसका इस्तेमाल हर सुबह उपयोगकर्ता के उठने से पहले, न्यूज़फ़ीड वर्कर को चलाने के लिए किया जा सकता है. इन तकनीकों के साथ ExistingPeriodicWorkPolicy.UPDATE का इस्तेमाल किया जाना चाहिए, ताकि अगले वर्कर को शेड्यूल करते समय, मौजूदा वर्कर को रद्द न किया जा सके.
  • WorkManager, थ्रेडिंग मैचिंग प्रोडक्शन के साथ टेस्टिंग कर रहा है. ExecutorsMode.PRESERVE_EXECUTORS का इस्तेमाल, Configuration में सेट किए गए एक्ज़ीक्यूटर को बनाए रखने और असली मुख्य थ्रेड का इस्तेमाल करने के लिए किया जा सकता है.
  • कोरूटीन एपीआई, जैसे कि CoroutineWorker को अतिरिक्त आर्टफ़ैक्ट work-runtime-ktx से मुख्य आर्टफ़ैक्ट work-runtime में ट्रांसफ़र कर दिया गया है. work-runtime-ktx अब खाली है.

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

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

वर्शन 2.8

वर्शन 2.8.1

22 मार्च, 2023

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

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

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

वर्शन 2.8.0

8 फ़रवरी, 2023

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

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8.0-alpha02

6 अप्रैल, 2022

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

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

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

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

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

वर्शन 2.7

वर्शन 2.7.1

17 नवंबर, 2021

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

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

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

वर्शन 2.7.0

13 अक्टूबर, 2021

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

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

  • WorkManager, Android 12 में फ़ोरग्राउंड सेवा से जुड़ी पाबंदियों को लागू करने के लिए, नया 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 के इस्तेमाल से जुड़ी समस्या को कम किया गया है.

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

  • Android 12 (S) के लिए, प्लैटफ़ॉर्म के एपीआई स्थिर हैं. इसलिए, @ExperimentalExpeditedWork एपीआई हटाएं. (aosp/1792806)

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

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

वर्शन 2.7.0-alpha05

21 जुलाई, 2021

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

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

वर्शन 2.7.0-alpha04

2 जून, 2021

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

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

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

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

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

वर्शन 2.7.0-alpha03

21 अप्रैल, 2021

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

नई सुविधाएं

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

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

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

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

वर्शन 2.7.0-alpha02

10 मार्च, 2021

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

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

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

वर्शन 2.7.0-alpha01

18 फ़रवरी, 2021

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

नई सुविधाएं

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

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

    यह एपीआई, setForegroundAsync(...) / setForeground(...) एपीआई की जगह लेगा. ये एपीआई अब बंद कर दिए गए हैं.

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

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

  • तेज़ WorkRequest की सुविधा जोड़ी गई.

वर्शन 2.6.0

वर्शन 2.6.0

1 सितंबर, 2021

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

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

  • WorkManager को शुरू करने के लिए, अब androidx.startup का इस्तेमाल किया जाता है. अगर आपने tools:node="remove" का इस्तेमाल किया है, तो WorkManager को शुरू करने के लिए 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>
    

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

  • एक Result.getOutputData() एपीआई जोड़ें, जो ListenableWorker का outputData दिखाता है. (Ie51e3)

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

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

वर्शन 2.5.0

वर्शन 2.5.0

27 जनवरी, 2021

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

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

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

वर्शन 2.5.0-rc01

13 जनवरी, 2021

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

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

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

वर्शन 2.5.0-beta02

2 दिसंबर, 2020

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

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

  • androidx.work:work-multiprocess में मौजूद एक बग को ठीक किया गया है. इस बग की वजह से, WorkManager डेज़िग्नेटेड प्रोसेस से बाइंड करने की कोशिश करते समय, कॉलिंग थ्रेड को अनजाने में ब्लॉक कर देता था. (aosp/1475538)
  • PeriodicWorkRequest के सही तरीके से मिलान न होने की गड़बड़ी को ठीक किया गया है. (b/172475041, aosp/1489577)
  • setForeground* एपीआई का इस्तेमाल करते समय, फ़ोरग्राउंड सेवा को बंद करने पर प्लैटफ़ॉर्म में आने वाली गड़बड़ी को ठीक करने का तरीका जोड़ा गया. (b/170924044, aosp/1489901)

वर्शन 2.5.0-beta01

28 अक्टूबर, 2020

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

नई सुविधाएं

  • WorkManager, प्रोसेस में मौजूद शेड्यूलर से पिक अप किए जा सकने वाले WorkRequest की संख्या को अपने-आप कम कर देता है. अनुरोधों को अब भी फ़र्स्ट इन फ़र्स्ट आउट (पहले आओ, पहले पाओ) के क्रम में पूरा किया जाता है. (aosp/1455228)
  • WorkManager, ऐप्लिकेशन के डेटास्टोर की स्थिति खराब होने पर उसे ठीक करने की कोशिश करता है. (aosp/1463103)

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

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

वर्शन 2.5.0-alpha03

14 अक्टूबर, 2020

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

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

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

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

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

वर्शन 2.5.0-alpha02

16 सितंबर, 2020

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

नई सुविधाएं

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

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

  • WorkManager अब उन पूरे हो चुके WorkRequests को ज़्यादा तेज़ी से हटाता है जिनकी कोई भी डिपेंडेंसी पूरी नहीं हुई है. बफ़र अवधि को 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)

बाहरी योगदान

वर्शन 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 के साइज़ तक सीमित है. इसका मतलब है कि ऐप्लिकेशन के फ़ोरग्राउंड में होने पर, ऐप्लिकेशन अब ज़्यादा WorkRequest को पूरा कर सकता है. फ़ोरग्राउंड में देर से शुरू होने वाले काम को मैनेज करने के लिए, WorkManager एक नया कॉन्फ़िगर किया जा सकने वाला RunnableScheduler भी लॉन्च करता है. (aosp/1185778)
  • WorkManager अब RxJava 3 के साथ काम करता है. RxJava 3 का इस्तेमाल करने के लिए, आपको यह डिपेंडेंसी शामिल करनी होगी: implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
  • WorkQuery का इस्तेमाल करके, WorkInfo के लिए क्वेरी करने की सुविधा जोड़ी गई है. यह तब काम आता है, जब डेवलपर को एक साथ कई एट्रिब्यूट के कॉम्बिनेशन के हिसाब से WorkInfo के लिए क्वेरी करनी होती है. ज़्यादा जानकारी के लिए, WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...) या WorkQuery.Builder.fromUniqueWorkNames(...) देखें. (aosp/1253230, b/143847546)
  • WorkManager से गड़बड़ी की जानकारी का अनुरोध करने की सुविधा जोड़ें. इसके लिए, इनका इस्तेमाल करें:

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

    इससे कई तरह की काम की जानकारी मिलती है. जैसे:

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

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

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

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

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

  • लिंट के नए नियम, जो इन बातों को लागू करते हैं:

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

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

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

वर्शन 2.4.0-rc01

24 जून, 2020

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

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

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

वर्शन 2.4.0-beta01

20 मई, 2020

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

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

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

वर्शन 2.4.0-alpha03

29 अप्रैल, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.4.0-alpha02

1 अप्रैल, 2020

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

नई सुविधाएं

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

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

  • WorkQuery का इस्तेमाल करके, WorkInfo के लिए क्वेरी करने की सुविधा जोड़ी गई है. यह तब काम आता है, जब डेवलपर को एक साथ कई एट्रिब्यूट के कॉम्बिनेशन के हिसाब से WorkInfo के लिए क्वेरी करनी होती है. ज़्यादा जानकारी के लिए, WorkQuery.Builder withStates(...), WorkQuery.Builder withTags(...) या WorkQuery.Builder withUniqueWorkNames(...) देखें. (aosp/1253230, b/143847546)

  • setForegroundAsync() को किए गए ऐसे कॉल जो ListenableWorker के पूरा होने से पहले पूरे नहीं होते हैं उन्हें अब ListenableFuture पर दिखाए गए IllegalStateException के ज़रिए सिग्नल दिया जाएगा. (aosp/1262743)

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

  • लिंट के उस नियम को ठीक किया गया है जो PeriodicWorkRequest के लिए, अमान्य इंटरवल की अवधि की जांच करता है. (aosp/1254846, b/152606442)

वर्शन 2.4.0-alpha01

4 मार्च, 2020

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

नई सुविधाएं

  • WorkManager में प्रोसेस असाइन करने की सुविधा अब ज़्यादा बेहतर हो गई है. पहले, प्रोसेस में मौजूद शेड्यूलर सिर्फ़ ऐसे काम को पूरा करने के बारे में सोचता था जो देर से शुरू नहीं हुआ था और जिसकी शर्तें पूरी हो गई थीं. अब प्रोसेस में मौजूद शेड्यूलर, WorkRequest को ट्रैक करता है. इन्हें आने वाले समय में लागू किया जा सकता है. इनमें PeriodicWorkRequest भी शामिल हैं. प्रोसेस में मौजूद शेड्यूलर, शेड्यूल करने की सीमाओं का भी पालन नहीं करता. हालांकि, यह अब भी WorkManager के इस्तेमाल किए जा रहे Executor के साइज़ तक सीमित है. इसका मतलब है कि ऐप्लिकेशन अब फ़ोरग्राउंड में होने पर, ज़्यादा WorkRequest को लागू कर सकता है. (aosp/1185778)

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

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

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

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

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

  • कस्टम RunnableScheduler जोड़ने की सुविधा उपलब्ध कराएं, ताकि उन WorkRequests को ट्रैक किया जा सके जिन्हें आने वाले समय में लागू करना है. इसका इस्तेमाल, प्रोसेस में मौजूद शेड्यूलर करता है. (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 मिनट की समयावधि खत्म होने के बाद, लंबे समय तक चलने वाले Workers के कई इंस्टेंस चल रहे थे. (aosp/1247484, b/150553353)
  • WorkManager के लिंट IssueRegistry को ठीक किया गया. योगदान देने के लिए, Slack के @ZacSweers का धन्यवाद. (aosp/1217923)

वर्शन 2.3.3

वर्शन 2.3.3

4 मार्च, 2020

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

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

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

वर्शन 2.3.2

वर्शन 2.3.2

19 फ़रवरी, 2020

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

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

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

वर्शन 2.3.1

वर्शन 2.3.1

5 फ़रवरी, 2020

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

22 जनवरी, 2020

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

2.2.0 के बाद हुए मुख्य बदलाव

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

वर्शन 2.3.0-rc01

8 जनवरी, 2020

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

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

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

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

वर्शन 2.3.0-beta02

18 दिसंबर, 2019

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.3.0-beta01

20 नवंबर, 2019

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

नई सुविधाएं

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

वर्शन 2.3.0-alpha03

23 अक्टूबर, 2019

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0-alpha02

9 अक्टूबर, 2019

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

नई सुविधाएं

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

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

  • Data में मौजूद containsKey एपीआई का नाम बदलकर 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() API की मदद से प्रोग्रेस सेट कर सकते हैं. साथ ही, CoroutineWorker में suspend-ing setProgress API और RxWorker में setProgress जोड़ा गया है, जो Single<Void> दिखाता है. इन नए एपीआई की मदद से, वर्कर WorkInfo के ज़रिए काम की प्रोग्रेस की जानकारी दे सकते हैं. इसके लिए, getProgress एपीआई का इस्तेमाल किया जाता है. (b/79481554)
  • Data में एक containsKey() एपीआई होता है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि Worker में इनपुट किए गए डेटा में, अनुमानित टाइप वाली कुंजियां हैं. (b/117136838)
  • Data को अब Data.toByteArray() और Data.fromByteArray() का इस्तेमाल करके क्रम से लगाया जा सकता है. ध्यान दें कि Data के साथ वर्शनिंग की कोई गारंटी नहीं होती. इसलिए, आपको इसे बनाए नहीं रखना चाहिए या इसका इस्तेमाल ऐप्लिकेशन के बीच आईपीसी के लिए नहीं करना चाहिए. इनका इस्तेमाल सिर्फ़ एक ही ऐप्लिकेशन की कई प्रोसेस के बीच सुरक्षित तरीके से किया जा सकता है.
  • Configuration.setInputMergerFactory के ज़रिए InputMergerFactory तय करने की सुविधा जोड़ी गई. (b/133273159)

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

  • अगर WorkerFactory, ListenableWorker का ऐसा इंस्टेंस दिखाता है जिसे पहले ही शुरू किया जा चुका है, तो WorkManager, IllegalStateException का इंस्टेंस दिखाएगा. (b/139554406)
  • ListenableWorker में ListenableFuture रद्द करने और onStopped() कॉलबैक से जुड़े दस्तावेज़ों में अपडेट. (b/138413671)

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

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

वर्शन 2.2.0

वर्शन 2.2.0

15 अगस्त, 2019

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

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

2.1.0 से 2.2.0 में हुए ज़रूरी बदलाव

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

वर्शन 2.2.0-rc01

30 जुलाई, 2019

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

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

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

वर्शन 2.2.0-beta02

19 जुलाई, 2019

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

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

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

वर्शन 2.2.0-beta01

17 जुलाई, 2019

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

नई सुविधाएं

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

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

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

वर्शन 2.1.0

वर्शन 2.1.0

11 जुलाई, 2019

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

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

  • work-runtime-ktx के लिए अब Java 8 की ज़रूरत होती है. अगर आपको कोई समस्या आती है, तो अपने build.gradle में यह जानकारी जोड़ें: kotlinOptions { jvmTarget = "1.8" }
  • WorkManager के लिए, मांग पर शुरू होने की सुविधा जोड़ी गई है. इससे WorkManager सिर्फ़ तब शुरू होगा, जब इसे रेफ़रंस किया जाएगा. b/127497100 मांग पर शुरू होने वाले प्रोजेक्ट को सेट अप करने के लिए:
    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
  • WorkManager, Configuration.Builder.setTaskExecutor का इस्तेमाल करके अपने सभी इंटरनल बुक-कीपिंग के लिए इस्तेमाल किए जाने वाले 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 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.

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

  • TestListenableWorkerBuilder अब ListenableWorker के इंस्टेंस बनाते समय, सही 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 को लागू करने में ओईएम से जुड़ी गड़बड़ियों को ठीक करने का तरीका.
  • AlarmManager पर आधारित शेड्यूलर में सुधार किए गए हैं. इससे सेवा के लाइफ़टाइम से जुड़ी उन समस्याओं को ठीक किया गया है जिनकी वजह से पहले कभी-कभी क्रैश हो जाता था. (b/133313734)

वर्शन 2.1.0-alpha02

16 मई, 2019

WorkManager 2.1.0-alpha02 रिलीज़ हो गया है. इस वर्शन में कई नए एपीआई शामिल हैं.

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

  • PeriodicWorkRequest अब शुरुआती देरी के साथ काम करते हैं. शुरुआती देरी सेट करने के लिए, PeriodicWorkRequest.Builder पर setInitialDelay तरीके का इस्तेमाल किया जा सकता है. b/111404867

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

  • WorkManager, Configuration.Builder.setTaskExecutor का इस्तेमाल करके अपने सभी इंटरनल बुक-कीपिंग के लिए इस्तेमाल किए जाने वाले Executor को पसंद के मुताबिक बनाने की सुविधा जोड़ी गई है.

  • WorkRequest.keepResultsForAtLeast (b/130638001), मांग पर शुरू होने की सुविधा, और PeriodicWorkRequest.Builder (b/131711394) के बारे में बेहतर दस्तावेज़ उपलब्ध कराए गए.

वर्शन 2.1.0-alpha01

24 अप्रैल, 2019

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

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

  • WorkManager के लिए, मांग पर शुरू होने की सुविधा जोड़ी गई है. इससे WorkManager सिर्फ़ तब शुरू होगा, जब इसे रेफ़रंस किया जाएगा. b/127497100 मांग पर शुरू होने वाले प्रोजेक्ट को सेट अप करने के लिए:
    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 रिलीज़ हो गया है. इस वर्शन में कुछ गड़बड़ियां ठीक की गई हैं. Legacy 1.x वर्शन के उपयोगकर्ताओं को, इनमें से कुछ बदलाव 1.0.1-rc01 में भी दिखेंगे.

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

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

वर्शन 2.0.0

वर्शन 2.0.0

20 मार्च, 2019

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

वर्शन 2.0.0-rc01

7 मार्च, 2019

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

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

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
  • जॉबशेड्यूलर से पहले के एपीआई पर, कंस्ट्रेंट ट्रैकिंग की सुविधा बंद न होने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. 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

  • Workers जो बिना जांच किए गए 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 (एपीआई) या इससे पहले के वर्शन पर काम करने वाले डिवाइसों पर, ConcurrentModificationException ठीक किया गया. यह 1.0.0-beta02 में की गई समस्या को ठीक करने की प्रोसेस को आगे बढ़ाने के लिए है. b/121345393
  • हमने अपने मेनिफ़ेस्ट में कुछ कॉम्पोनेंट के लिए exported=false जोड़ा है. इन कॉम्पोनेंट में यह एनोटेशन मौजूद नहीं था.
  • पैकेज-लेवल के दस्तावेज़ में, इस बारे में जानकारी शामिल की गई है कि WorkManager, ओएस के साथ कैसे इंटरैक्ट करता है.

वर्शन 1.0.0-beta02

15 जनवरी, 2019

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

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

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

वर्शन 1.0.0-beta01

19 दिसंबर, 2018

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

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

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

वर्शन 1.0.0-alpha13

12 दिसंबर, 2018

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

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

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

एपीआई में हुए ऐसे बदलाव जिनसे मौजूदा सिस्टम पर असर पड़ता है

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

वर्शन 1.0.0-alpha12

5 दिसंबर, 2018

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

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

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

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

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

एपीआई में हुए ऐसे बदलाव जिनसे मौजूदा सिस्टम पर असर पड़ता है

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

वर्शन 1.0.0-alpha11

8 नवंबर, 2018

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

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

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

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

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

एपीआई में हुए ऐसे बदलाव जिनसे मौजूदा सिस्टम पर असर पड़ता है

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

वर्शन 1.0.0-alpha10

11 अक्टूबर, 2018

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

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

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

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

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

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

एपीआई में हुए ऐसे बदलाव जिनसे मौजूदा सिस्टम पर असर पड़ता है

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

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

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

  • अब रनटाइम पर अपने Worker इंस्टेंस बनाए जा सकते हैं. इसके लिए, WorkManager.Configuration के हिस्से के तौर पर WorkerFactory तय करें. फ़ॉलबैक फ़ैक्ट्री 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

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

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

नुकसान पहुंचा सकने वाले बदलाव

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

वर्शन 1.0.0-alpha04

26 जून, 2018

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

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

वर्शन 1.0.0-alpha03

19 जून, 2018

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

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

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

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

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

  • WorkRequest को फिर से कतार में लगाते समय क्रैश होने की समस्या को ठीक किया गया है. b/109572353.

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

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

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

  • WorkContinuation.getStatuses() के सिंक्रोनस वर्शन getStatusesSync() को जोड़ा गया.
  • Worker में, उपयोगकर्ता की ओर से रद्द किए गए अनुरोध और ओएस की ओर से अस्थायी तौर पर रोके गए अनुरोध के बीच अंतर करने की सुविधा है. अगर किसी तरह के स्टॉप का अनुरोध किया गया है, तो Worker.isStopped(), true दिखाता है. Worker.isCancelled(), काम के रद्द होने पर true दिखाता है. b/79632247
  • एपीआई 28 पर JobParameters#getNetwork() के लिए सहायता जोड़ी गई. इसे Worker.getNetwork() के ज़रिए दिखाया जाता है.
  • Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) जोड़ा गया है, ताकि यह तय किया जा सके कि JobScheduler या AlarmManager को कितनी नौकरियां भेजी जा सकती हैं. इससे WorkManager को आपके सभी उपलब्ध JobScheduler स्लॉट लेने से रोका जा सकता है.
  • Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) जोड़ा गया है. इससे WorkManager के लिए सुरक्षित JobScheduler जॉब आईडी की रेंज तय करने में मदद मिलती है. b/79996760
  • 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 पैरामीटर है. इसे true पर तब सेट किया जाता है, जब Worker को साफ़ तौर पर रद्द कर दिया गया हो.

वर्शन 1.0.0-alpha02

24 मई, 2018

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

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

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

  • Worker को बंद किए जाने पर प्रतिक्रिया मिल सकती है. Worker.isStopped() का इस्तेमाल यह देखने के लिए किया जा सकता है कि Worker को रोक दिया गया है या नहीं. Worker.onStopped() का इस्तेमाल, कम समय में डेटा को व्यवस्थित करने के लिए किया जा सकता है.
  • Worker.getTags() API, 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 है.