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

কোটলিন

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

একবার আপনি নির্ভরতা যোগ করেছেন এবং আপনার গ্রেডল প্রকল্প সিঙ্ক্রোনাইজ করেছেন, পরবর্তী পদক্ষেপটি চালানোর জন্য কিছু কাজ সংজ্ঞায়িত করা।

কাজের সংজ্ঞা দাও

Worker শ্রেণী ব্যবহার করে কাজ সংজ্ঞায়িত করা হয়। doWork() পদ্ধতিটি WorkManager দ্বারা প্রদত্ত একটি ব্যাকগ্রাউন্ড থ্রেডে অ্যাসিঙ্ক্রোনাসভাবে চলে।

WorkManager চালানোর জন্য কিছু কাজ তৈরি করতে, Worker ক্লাস প্রসারিত করুন এবং doWork() পদ্ধতিটি ওভাররাইড করুন। উদাহরণস্বরূপ, ছবি আপলোড করে এমন একজন Worker তৈরি করতে, আপনি নিম্নলিখিতগুলি করতে পারেন:

কোটলিন


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 ওয়ার্কম্যানেজার পরিষেবাকে জানায় যে কাজটি সফল হয়েছে কিনা এবং ব্যর্থতার ক্ষেত্রে, কাজটি পুনরায় চেষ্টা করা উচিত কিনা।

  • Result.success() : কাজটি সফলভাবে শেষ হয়েছে।
  • Result.failure() : কাজ ব্যর্থ হয়েছে।
  • Result.retry() : কাজ ব্যর্থ হয়েছে এবং এটির পুনঃপ্রচার নীতি অনুসারে অন্য সময়ে চেষ্টা করা উচিত।

একটি কাজের অনুরোধ তৈরি করুন

একবার আপনার কাজ সংজ্ঞায়িত করা হলে, এটি চালানোর জন্য ওয়ার্ক ম্যানেজার পরিষেবার সাথে নির্ধারিত হতে হবে। আপনি কিভাবে আপনার কাজের সময়সূচী করেন তাতে WorkManager অনেক নমনীয়তা প্রদান করে। আপনি এটি নির্দিষ্ট সময়ের ব্যবধানে পর্যায়ক্রমে চালানোর জন্য নির্ধারণ করতে পারেন, অথবা আপনি এটি শুধুমাত্র একবার চালানোর জন্য নির্ধারণ করতে পারেন।

তবে আপনি কাজের সময়সূচী বেছে নিন, আপনি সর্বদা একটি WorkRequest ব্যবহার করবেন। একজন Worker কাজের একক সংজ্ঞায়িত করার সময়, একটি WorkRequest (এবং এর সাবক্লাসগুলি) সংজ্ঞায়িত করে কিভাবে এবং কখন এটি চালানো উচিত। সবচেয়ে সহজ ক্ষেত্রে, আপনি একটি OneTimeWorkRequest ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

কোটলিন


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

জাভা


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

সিস্টেমে কাজের অনুরোধ জমা দিন

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

কোটলিন


WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

জাভা


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

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

পরবর্তী পদক্ষেপ

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

অতিরিক্ত সম্পদ

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

নমুনা

  • WorkManagerSample , একটি সহজ ইমেজ-প্রসেসিং অ্যাপ।
  • সানফ্লাওয়ার , একটি ডেমো অ্যাপ যা ওয়ার্ক ম্যানেজার সহ বিভিন্ন আর্কিটেকচার উপাদানগুলির সাথে সেরা অনুশীলনগুলি প্রদর্শন করে৷

কোডল্যাব

ব্লগ