WorkManager ব্যবহার শুরু করা

WorkManager ব্যবহার করা শুরু করতে, প্রথমে আপনার Android প্রোজেক্টে লাইব্রেরি ইমপোর্ট করুন।

আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:

গ্রুভি

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"
}

কোটলিন

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")
}

আপনি ডিপেন্ডেন্সি যোগ করে 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()
   }
}

জাভা

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

জাভা

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

সিস্টেমে WorkRequest জমা দিন

অবশেষে, আপনাকে enqueue() পদ্ধতি ব্যবহার করে WorkManager-এ আপনার WorkRequest জমা দিতে হবে।

Kotlin

WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

জাভা

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

আপনার WorkRequest-এ ব্যবহৃত সীমাবদ্ধতা এবং সিস্টেম অপ্টিমাইজেশনের উপর নির্ভর করে ওয়ার্কার ঠিক কখন এক্সিকিউট করা হবে। WorkManager-কে এমনভাবে ডিজাইন করা হয়েছে যাতে এইসব বিধিনিষেধের মধ্যেও এটি সবচেয়ে ভালভাবে কাজ করতে পারে।

পরবর্তী ধাপ

এই শুরু করার নির্দেশিকা শুধুমাত্র প্রাথমিক তথ্য প্রদান করে। WorkRequest-এ অতিরিক্ত তথ্যও অন্তর্ভুক্ত থাকতে পারে, যেমন কোন সীমাবদ্ধতার অধীনে কাজটি চালানো উচিত, কাজের ইনপুট, বিলম্ব এবং কাজটি আবার চেষ্টা করার জন্য ব্যাকঅফ নীতি। পরবর্তী বিভাগ, আপনার কাজের অনুরোধ সংজ্ঞায়িত করুন-এ, আপনি এইসব বিকল্প সম্পর্কে আরও বিশদে জানতে পারবেন এবং সেইসাথে অনন্য এবং পুনরাবৃত্তিমূলক কাজের শিডিউল কীভাবে করতে হয় সেই সম্পর্কেও বুঝতে পারবেন।

অতিরিক্ত রিসোর্স

গাইড ডকুমেন্টেশন ছাড়াও, আপনাকে শুরু করতে সাহায্য করার জন্য বেশ কয়েকটি ব্লগ, কোডল্যাব এবং কোড স্যাম্পেল উপলভ্য আছে।

নমুনা

  • Sunflower, একটি ডেমো অ্যাপ যা WorkManager সহ বিভিন্ন আর্কিটেকচার কম্পোনেন্টের সাথে পেশাদার পদ্ধতি প্রদর্শন করে।

কোডল্যাবস

ব্লগ