অ্যান্ড্রয়েড জেটপ্যাকের ওয়ার্কম্যানেজার অংশের সাথে কাজগুলি নির্ধারণ করুন।

ওয়ার্ক ম্যানেজার হল অবিরাম কাজের জন্য প্রস্তাবিত সমাধান। অ্যাপ্লিকেশান রিস্টার্ট এবং সিস্টেম রিবুটের মাধ্যমে নির্ধারিত থাকলে কাজ স্থায়ী হয়। যেহেতু বেশিরভাগ ব্যাকগ্রাউন্ড প্রসেসিং ক্রমাগত কাজের মাধ্যমে সর্বোত্তমভাবে সম্পন্ন করা হয়, তাই WorkManager হল পটভূমি প্রক্রিয়াকরণের জন্য প্রাথমিক সুপারিশকৃত API।

অবিরাম কাজের ধরন

ওয়ার্ক ম্যানেজার তিন ধরনের অবিরাম কাজ পরিচালনা করে:

  • অবিলম্বে : যে কাজগুলি অবিলম্বে শুরু করতে হবে এবং শীঘ্রই সম্পূর্ণ করতে হবে৷ ত্বরান্বিত হতে পারে।
  • দীর্ঘমেয়াদী : যে কাজগুলি দীর্ঘ সময় ধরে চলতে পারে, সম্ভাব্যভাবে 10 মিনিটের বেশি।
  • ডিফারেবল : নির্ধারিত কাজগুলি যা পরবর্তী সময়ে শুরু হয় এবং পর্যায়ক্রমে চলতে পারে।

চিত্র 1 রূপরেখা দেয় কিভাবে বিভিন্ন ধরণের অবিরাম কাজ একে অপরের সাথে সম্পর্কিত।

অবিরাম কাজ অবিলম্বে, দীর্ঘ চলমান, বা বিলম্বিত হতে পারে
চিত্র 1 : অবিরাম কাজের ধরন।

একইভাবে, নিচের টেবিলে বিভিন্ন ধরনের কাজের রূপরেখা দেওয়া হয়েছে।

টাইপ পর্যায়ক্রমিকতা কিভাবে অ্যাক্সেস করতে হবে
তাৎক্ষণিক একবার OneTimeWorkRequest এবং Worker

দ্রুত কাজের জন্য, আপনার OneTimeWorkRequest-এ setExpedited() কল করুন।

লং রানিং এক সময় বা পর্যায়ক্রমিক যেকোনো WorkRequest বা Worker । বিজ্ঞপ্তিটি পরিচালনা করতে ওয়ার্কারে setForeground() কল করুন।
স্থগিত এক সময় বা পর্যায়ক্রমিক PeriodicWorkRequest এবং Worker

ওয়ার্ক ম্যানেজার কীভাবে সেট আপ করবেন সে সম্পর্কে আরও তথ্যের জন্য, আপনার কাজের অনুরোধের সংজ্ঞা নির্দেশিকা দেখুন।

বৈশিষ্ট্য

একটি সহজ এবং আরও সামঞ্জস্যপূর্ণ API প্রদানের পাশাপাশি, ওয়ার্কম্যানেজারের অন্যান্য মূল সুবিধা রয়েছে:

কাজের সীমাবদ্ধতা

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

শক্তিশালী সময়সূচী

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

নির্ধারিত কাজ একটি অভ্যন্তরীণভাবে পরিচালিত SQLite ডাটাবেসে সংরক্ষণ করা হয় এবং WorkManager নিশ্চিত করে যে এই কাজটি টিকে থাকে এবং ডিভাইস রিবুট জুড়ে পুনরায় নির্ধারিত হয়।

উপরন্তু, WorkManager শক্তি-সংরক্ষণ বৈশিষ্ট্য এবং Doze মোডের মতো সেরা অনুশীলনগুলি মেনে চলে, তাই আপনাকে এটি নিয়ে চিন্তা করতে হবে না৷

ত্বরান্বিত কাজ

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

নমনীয় পুনরায় চেষ্টা নীতি

কখনও কখনও কাজ ব্যর্থ হয়। WorkManager একটি কনফিগারযোগ্য সূচকীয় ব্যাকঅফ নীতি সহ নমনীয় পুনঃপ্রচার নীতি অফার করে।

কাজ চেইনিং

জটিল সম্পর্কিত কাজের জন্য, একটি স্বজ্ঞাত ইন্টারফেস ব্যবহার করে পৃথক পৃথক কাজের কাজগুলিকে একসাথে চেইন করুন যা আপনাকে কোন টুকরোগুলি ক্রমানুসারে চলে এবং কোনটি সমান্তরালভাবে চলে তা নিয়ন্ত্রণ করতে দেয়।

কোটলিন


val continuation = WorkManager.getInstance(context)
    .beginUniqueWork(
        Constants.IMAGE_MANIPULATION_WORK_NAME,
        ExistingWorkPolicy.REPLACE,
        OneTimeWorkRequest.from(CleanupWorker::class.java)
    ).then(OneTimeWorkRequest.from(WaterColorFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(GrayScaleFilterWorker::class.java))
    .then(OneTimeWorkRequest.from(BlurEffectFilterWorker::class.java))
    .then(
        if (save) {
            workRequest<SaveImageToGalleryWorker>(tag = Constants.TAG_OUTPUT)
        } else /* upload */ {
            workRequest<UploadWorker>(tag = Constants.TAG_OUTPUT)
        }
    )

জাভা


WorkManager.getInstance(...)
.beginWith(Arrays.asList(workA, workB))
.then(workC)
.enqueue();

প্রতিটি কাজের জন্য, আপনি সেই কাজের জন্য ইনপুট এবং আউটপুট ডেটা সংজ্ঞায়িত করতে পারেন। কাজ একসাথে চেইন করার সময়, WorkManager স্বয়ংক্রিয়ভাবে আউটপুট ডেটা একটি কাজের কাজ থেকে পরবর্তীতে প্রেরণ করে।

অন্তর্নির্মিত থ্রেডিং ইন্টারঅপারেবিলিটি

WorkManager Coroutines এবং RxJava- এর সাথে নির্বিঘ্নে সংহত করে এবং আপনার নিজস্ব অ্যাসিঙ্ক্রোনাস API গুলি প্লাগ করার নমনীয়তা প্রদান করে।

নির্ভরযোগ্য কাজের জন্য WorkManager ব্যবহার করুন

WorkManager এমন কাজের জন্য উদ্দিষ্ট যেটি নির্ভরযোগ্যভাবে চালানোর জন্য প্রয়োজন হয় এমনকি যদি ব্যবহারকারী একটি স্ক্রীন থেকে নেভিগেট করে, অ্যাপটি প্রস্থান করে বা ডিভাইস পুনরায় চালু হয়। উদাহরণ স্বরূপ:

  • ব্যাকএন্ড পরিষেবাগুলিতে লগ বা বিশ্লেষণ পাঠানো হচ্ছে।
  • পর্যায়ক্রমে একটি সার্ভারের সাথে অ্যাপ্লিকেশন ডেটা সিঙ্ক করা হচ্ছে।

WorkManager প্রক্রিয়ার মধ্যে থাকা ব্যাকগ্রাউন্ড কাজের জন্য নয় যেটি অ্যাপ প্রক্রিয়াটি চলে গেলে নিরাপদে বন্ধ করা যেতে পারে। এটি অবিলম্বে কার্যকর করা প্রয়োজন এমন সমস্ত কাজের জন্য একটি সাধারণ সমাধানও নয়। কোন সমাধান আপনার চাহিদা পূরণ করে তা দেখতে অনুগ্রহ করে পটভূমি প্রক্রিয়াকরণ গাইড পর্যালোচনা করুন।

অন্যান্য API এর সাথে সম্পর্ক

কোরোটিনগুলি নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রস্তাবিত সমাধান হলেও, আপনার ক্রমাগত কাজের জন্য সেগুলি ব্যবহার করা উচিত নয়। এটা মনে রাখা গুরুত্বপূর্ণ যে coroutines হল একটি সামঞ্জস্যপূর্ণ কাঠামো, যেখানে WorkManager হল একটি লাইব্রেরি যা অবিরাম কাজের জন্য। একইভাবে, আপনার শুধুমাত্র ঘড়ি বা ক্যালেন্ডারের জন্য AlarmManager ব্যবহার করা উচিত।

API জন্য প্রস্তাবিত ওয়ার্কম্যানেজারের সাথে সম্পর্ক
করুটিন সমস্ত অ্যাসিঙ্ক্রোনাস কাজ যা স্থায়ী হওয়ার প্রয়োজন নেই। Coroutines হল কোটলিনে মূল থ্রেড ছেড়ে যাওয়ার আদর্শ উপায়। যাইহোক, অ্যাপটি বন্ধ হয়ে গেলে তারা মেমরি ছেড়ে যায়। অবিরাম কাজের জন্য, WorkManager ব্যবহার করুন।
অ্যালার্ম ম্যানেজার শুধুমাত্র অ্যালার্ম। WorkManager থেকে ভিন্ন, AlarmManager একটি ডিভাইসকে Doze মোড থেকে জাগিয়ে তোলে। তাই শক্তি এবং সম্পদ ব্যবস্থাপনার ক্ষেত্রে এটি দক্ষ নয়। এটি শুধুমাত্র সুনির্দিষ্ট অ্যালার্ম বা ক্যালেন্ডার ইভেন্টের মতো বিজ্ঞপ্তির জন্য ব্যবহার করুন — ব্যাকগ্রাউন্ডের কাজ নয়।

অপ্রচলিত APIগুলি প্রতিস্থাপন করা হচ্ছে

WorkManager API হল FirebaseJobDispatcher , GcmNetworkManager , এবং কাজের সময়সূচী সহ সমস্ত পূর্ববর্তী Android ব্যাকগ্রাউন্ড শিডিউলিং API-এর জন্য প্রস্তাবিত প্রতিস্থাপন৷

শুরু হচ্ছে

আপনার অ্যাপে WorkManager ব্যবহার শুরু করতে শুরু করার নির্দেশিকা দেখুন।

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

WorkManager সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন৷

নমুনা

ভিডিও

ব্লগ

{% শব্দার্থে %} {% endverbatim %}
  • দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়
  • অ্যাপ স্টার্টআপ
{% শব্দার্থে %}
{% endverbatim %}