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 के साथ-साथ, आर्किटेक्चर के अलग-अलग कॉम्पोनेंट के इस्तेमाल के सबसे सही तरीके दिखाए गए हैं.
कोडलैब
- WorkManager (Kotlin) और (Java) के साथ काम करना
- Advanced WorkManager (Kotlin)
ब्लॉग
- पेश है WorkManager
- WorkManager के बारे में बुनियादी जानकारी
- WorkManager और Kotlin
- WorkManager की समयावधि
- WorkManager को पसंद के मुताबिक बनाना - बुनियादी बातें
- Dagger की मदद से, WorkManager को पसंद के मुताबिक बनाना