स्थायी काम Android Jetpack का हिस्सा है.

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

लगातार किए जाने वाले काम के टाइप

WorkManager तीन तरह के स्थायी काम को हैंडल करता है:

  • तुरंत: ऐसे टास्क जो तुरंत शुरू होने चाहिए और जल्द ही पूरे होने चाहिए. हो सकता है तेज़.
  • लंबे समय तक चलने वाले टास्क: ऐसे टास्क जो ज़्यादा समय तक चल सकते हैं. हालांकि, ऐसे टास्क की अवधि तय सीमा से ज़्यादा हो सकती है 10 मिनट.
  • रद्द किया जा सकने वाला: शेड्यूल किए गए ऐसे टास्क जो बाद में शुरू हुए हैं और चल सकते हैं समय-समय पर.

पहली इमेज में यह बताया गया है कि अलग-अलग तरह के स्थायी काम, एक-दूसरे से कैसे जुड़े हैं कोई दूसरा.

लगातार किया जाने वाला काम तुरंत, लंबे समय तक चलने वाला या टाला जा सकने वाला हो सकता है
पहली इमेज: स्थायी काम के टाइप.

इसी तरह, नीचे दी गई टेबल में अलग-अलग तरह के कामों के बारे में बताया गया है.

टाइप समयावधि ऐक्सेस करने का तरीका
तुरंत एक बार OneTimeWorkRequest और Worker. जल्दी काम करने के लिए, अपने OneTimeWorkRequest पर setExpedited() को कॉल करें.
लंबे समय तक दौड़ना एक बार या बार-बार कोई भी WorkRequest या Worker. नोटिफ़िकेशन को हैंडल करने के लिए वर्कर में setForeground() को कॉल करें.
रद्द किया जा सकता है एक बार या बार-बार PeriodicWorkRequest और Worker.

WorkManager सेट अप करने के तरीके के बारे में ज़्यादा जानने के लिए, अपना WorkRequests गाइड.

WorkManager से जुड़ी सुविधाएं

आसान और एक जैसा एपीआई उपलब्ध कराने के अलावा, WorkManager में अन्य मुख्य फ़ायदों की संख्या:

काम से जुड़े कंस्ट्रेंट

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

बेहतर शेड्यूल बनाने की सुविधा

WorkManager आपको एक बार चलाने के लिए, काम शेड्यूल करने की अनुमति देता है या सुविधाजनक शेड्यूलिंग विंडो का इस्तेमाल करके बार-बार. काम को टैग और नाम दिया जा सकता है इससे यूनीक और बदले जा सकने वाले काम को शेड्यूल किया जा सकता है. साथ ही, उन्हें मॉनिटर या रद्द किया जा सकता है ग्रुप के साथ मिलकर काम करते हैं.

शेड्यूल किया गया काम, अंदरूनी तौर पर मैनेज किए जा रहे SQLite डेटाबेस में सेव किया जाता है और WorkManager यह पक्का करता है कि यह काम बना रहे और उसे फिर से शेड्यूल किया जाए सूचना मिलती है.

इसके अलावा, WorkManager बैटरी बचाने वाली सुविधाओं और सबसे सही तरीकों का पालन करता है जैसे डोज़ मोड, ताकि आपको इसके बारे में चिंता न करनी पड़े.

जल्द से जल्द काम करने की सुविधा

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

सुविधाजनक तरीके से फिर से कोशिश करने की नीति

कभी-कभी काम नहीं करता. WorkManager, फिर से कोशिश करने की ज़रूरत के हिसाब से नीतियां ऑफ़र करता है. इनमें ये नीतियां शामिल हैं कॉन्फ़िगर की जा सकने वाली एक्सपोनेन्शियल बैकऑफ़ नीति.

वर्क चेन

काम से जुड़े मुश्किल कामों के लिए, अलग-अलग काम के टास्क को एक साथ चेन करें. इसके लिए एक आसान इंटरफ़ेस, जिसकी मदद से यह कंट्रोल किया जा सकता है कि कौनसे हिस्से एक क्रम में चलेंगे और जो साथ-साथ चलते हैं.

Kotlin


val continuation = WorkManager.getInstance(context)
    .beginUniqueWork(
        Constants.IMAGE_MANIPULATION_WORK_NAME,
        ExistingWorkPolicy.REPLACE,
        OneTimeWorkRequest.from(CleanupWorker::class.java)
    ).then(OneTimeWorkRequest.from(WaterColorFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(GrayScaleFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(BlurEffectFilterWorker::class.java))
    .then(
        if (save) {
            workRequest<SaveImageToGalleryWorker>(tag = Constants.TAG_OUTPUT)
        } else /* upload */ {
            workRequest<UploadWorker>(tag = Constants.TAG_OUTPUT)
        }
    )

Java


WorkManager.getInstance(...)
.beginWith(Arrays.asList(workA, workB))
.then(workC)
.enqueue();

हर टास्क के लिए, इनपुट और आउटपुट डेटा तय किया जा सकता है. काम को एक साथ चेन करते समय, WorkManager अपने-आप आउटपुट डेटा को पहले टास्क के अगले टास्क पर जाएँ.

बिल्ट-इन थ्रेडिंग इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना)

WorkManager, Coroutines और RxJava के साथ बिना किसी रुकावट के इंटिग्रेट करता है और अपने एसिंक्रोनस एपीआई को प्लग-इन करने की सुविधा देता है.

भरोसेमंद काम के लिए WorkManager का इस्तेमाल करना

WorkManager को ऐसे काम के लिए बनाया गया है जिसे सही तरीके से चलाने के लिए ज़रूरी हो, भले ही जब उपयोगकर्ता किसी स्क्रीन पर जाता है, ऐप्लिकेशन बंद हो जाता है या डिवाइस रीस्टार्ट हो जाता है. इसके लिए उदाहरण:

  • बैकएंड सेवाओं को लॉग या आंकड़े भेजना.
  • ऐप्लिकेशन के डेटा को सर्वर के साथ समय-समय पर सिंक करना.

WorkManager को बैकग्राउंड में होने वाले ऐसे काम के लिए नहीं बनाया गया है जो सुरक्षित तरीके से काम करता हो को खत्म कर दिया जाता है. यह Search Ads 360 के लिए भी एक सामान्य समाधान नहीं है वे सभी काम किए जा सकते हैं जिन्हें तुरंत पूरा करने की ज़रूरत होती है. कृपया बैकग्राउंड की समीक्षा करें प्रोसेस करने की गाइड देखें.

अन्य एपीआई के साथ संबंध

कुछ मामलों में कोरूटीन इस्तेमाल करने का सुझाव दिया जाता है. हालांकि, इस्तेमाल के कुछ मामलों में आपको लगातार काम के लिए उनका इस्तेमाल नहीं करना चाहिए. यह ध्यान रखना ज़रूरी है कि कोरूटीन एक साथ काम करने वाला फ़्रेमवर्क है, जबकि WorkManager स्थायी काम. इसी तरह, आपको AlarmManager का उपयोग केवल घड़ियों या कैलेंडर के लिए करना चाहिए.

एपीआई इन लोगों के लिए सुझाया गया WorkManager से संबंध
कोरूटीन सभी एसिंक्रोनस काम जिन्हें स्थायी बने रहने की ज़रूरत नहीं है. कोरूटीन, मुख्य थ्रेड को Kotlin में छोड़ने का स्टैंडर्ड तरीका है. हालांकि, ऐप्लिकेशन बंद होने के बाद, वे सेव हो जाते हैं. लगातार काम के लिए, WorkManager का इस्तेमाल करें.
अलार्ममैनेजर सिर्फ़ अलार्म. WorkManager के उलट, अलार्मManager किसी डिवाइस को बैटरी बचाएं (डोज़) मोड से जगाता है. इसलिए, यह ऊर्जा और संसाधन प्रबंधन के मामले में ज़्यादा कारगर नहीं है. इसे सिर्फ़ कैलेंडर इवेंट जैसी सूचनाओं या सटीक अलार्म के लिए इस्तेमाल करें. बैकग्राउंड में काम करने के लिए नहीं.

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

पिछले सभी Android डिवाइसों के बजाय, WorkManager API को इस्तेमाल करने का सुझाव दिया जाता है बैकग्राउंड शेड्यूलिंग एपीआई, जिनमें FirebaseJobDispatcher शामिल है, GcmNetworkManager और JobScheduler.

शुरू करें

अपने है.

अन्य संसाधन

इन सेक्शन में कुछ और संसाधन दिए गए हैं.

वीडियो

ब्लॉग

सैंपल