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();
   }
}

Result doWork() से वापस आने पर, 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 सबमिट करें

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

Kotlin


WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

Java


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

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

अगले चरण

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

अन्य संसाधन

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

सैंपल

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

कोड लैब

ब्लॉग