WorkManager का इस्तेमाल शुरू करना

WorkManager का इस्तेमाल शुरू करने के लिए, सबसे पहले लाइब्रेरी को अपने Android प्रोजेक्ट में इंपोर्ट करें.

अपने ऐप्लिकेशन की build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:

ग्रूवी

dependencies {
    def work_version = "2.9.1"

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

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

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

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

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

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

Kotlin

dependencies {
    val work_version = "2.9.1"

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

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

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

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

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

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

डिपेंडेंसी जोड़ने और अपने Gradle प्रोजेक्ट को सिंक करने के बाद, अगला चरण यह तय करना है कि कौनसा काम करना है.

काम को परिभाषित करना

Worker क्लास का इस्तेमाल करके, काम के बारे में बताया जाता है. doWork() तरीका, WorkManager की दी गई बैकग्राउंड थ्रेड पर एसिंक्रोनस तरीके से काम करता है.

WorkManager को कोई काम करने के लिए, Worker क्लास को बड़ा करें और doWork() तरीके को बदलें. उदाहरण के लिए, इमेज अपलोड करने वाला Worker बनाने के लिए, ये काम किए जा सकते हैं:

Kotlin

class UploadWorker(appContext: Context, workerParams: WorkerParameters):
       Worker(appContext, workerParams) {
   override fun doWork(): Result {

       // Do the work here--in this case, upload the images.
       uploadImages()

       // Indicate whether the work finished successfully with the Result
       return Result.success()
   }
}

Java

public class UploadWorker extends Worker {
   public UploadWorker(
       @NonNull Context context,
       @NonNull WorkerParameters params) {
       super(context, params);
   }

   @Override
   public Result doWork() {

     // Do the work here--in this case, upload the images.
     uploadImages();

     // Indicate whether the work finished successfully with the Result
     return Result.success();
   }
}

doWork() से मिलने वाला Result, WorkManager सेवा को बताता है कि काम पूरा हुआ या नहीं. साथ ही, काम पूरा न होने पर, यह भी बताता है कि काम को फिर से आज़माना चाहिए या नहीं.

  • Result.success(): काम पूरा हो गया.
  • Result.failure(): काम पूरा नहीं हो सका.
  • Result.retry(): काम पूरा नहीं हो सका. इसे फिर से कोशिश करने की नीति के मुताबिक, किसी और समय आज़माया जाना चाहिए.

WorkRequest बनाना

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

काम को शेड्यूल करने का कोई भी तरीका चुनें, आपको हमेशा WorkRequest का इस्तेमाल करना होगा. Worker, किसी काम की इकाई के बारे में बताता है. वहीं, WorkRequest (और इसके सब-क्लास) बताते हैं कि इसे कैसे और कब चलाना चाहिए. सबसे आसान मामले में, OneTimeWorkRequest का इस्तेमाल किया जा सकता है, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है.

Kotlin

val uploadWorkRequest: WorkRequest =
   OneTimeWorkRequestBuilder<UploadWorker>()
       .build()

Java

WorkRequest uploadWorkRequest =
   new OneTimeWorkRequest.Builder(UploadWorker.class)
       .build();

सिस्टम में WorkRequest सबमिट करना

आखिर में, आपको enqueue() के तरीके का इस्तेमाल करके, WorkRequest को WorkManager पर सबमिट करना होगा.

Kotlin

WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

Java

WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest);

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

अगले चरण

शुरुआती निर्देशों वाली यह गाइड, सिर्फ़ शुरुआती जानकारी देती है. WorkRequest में कुछ और जानकारी भी शामिल की जा सकती है. जैसे, काम को किन सीमाओं के तहत चलाना चाहिए, काम के लिए इनपुट, देरी, और काम को फिर से शुरू करने के लिए बैकऑफ़ नीति. अगले सेक्शन, अपने काम के अनुरोध तय करें में, आपको इन विकल्पों के बारे में ज़्यादा जानकारी मिलेगी. साथ ही, आपको यूनीक और बार-बार होने वाले काम को शेड्यूल करने का तरीका भी पता चलेगा.

अन्य संसाधन

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

सैंपल

  • Sunflower, एक ऐसा डेमो ऐप्लिकेशन है जिसमें WorkManager के साथ-साथ, आर्किटेक्चर के अलग-अलग कॉम्पोनेंट के इस्तेमाल के सबसे सही तरीके दिखाए गए हैं.

कोडलैब

ब्लॉग