আপনি যখন এমন কাজগুলি সম্পাদন করতে চান যা অ্যাপটি দৃশ্যমান অবস্থা ছেড়ে চলে গেলেও চলতে থাকবে, আমরা জেটপ্যাক লাইব্রেরি ওয়ার্কম্যানেজার ব্যবহার করার পরামর্শ দিই। WorkManager একটি শক্তিশালী শিডিউলিং পদ্ধতির বৈশিষ্ট্য রয়েছে যা অ্যাপ রিস্টার্ট এবং ডিভাইস রিবুট জুড়ে কাজগুলিকে চলতে দেয়।
কাজের ধরন
WorkManager তিন ধরনের কাজ পরিচালনা করে:
- অবিলম্বে : যে কাজগুলি অবিলম্বে শুরু করতে হবে এবং শীঘ্রই সম্পূর্ণ করতে হবে৷ ত্বরান্বিত হতে পারে।
- দীর্ঘমেয়াদী : যে কাজগুলি দীর্ঘ সময় ধরে চলতে পারে, সম্ভাব্যভাবে 10 মিনিটের বেশি।
- ডিফারেবল : নির্ধারিত কাজগুলি যা পরবর্তী সময়ে শুরু হয় এবং পর্যায়ক্রমে চলতে পারে।
চিত্র 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 এর সাথে সম্পর্ক
এই টেবিলটি দেখায় কিভাবে WorkManager অনুরূপ API এর সাথে সম্পর্কিত। এই তথ্য আপনাকে আপনার অ্যাপের প্রয়োজনীয়তার জন্য সঠিক API বেছে নিতে সাহায্য করতে পারে।
API | জন্য প্রস্তাবিত | ওয়ার্কম্যানেজারের সাথে সম্পর্ক |
---|---|---|
করুটিন | সমস্ত অ্যাসিঙ্ক্রোনাস কাজ যা অ্যাপটি দৃশ্যমান অবস্থা ছেড়ে চলে গেলে টিকে থাকার প্রয়োজন নেই৷ | Coroutines হল কোটলিনে মূল থ্রেড ছেড়ে যাওয়ার আদর্শ উপায়। যাইহোক, অ্যাপটি বন্ধ হওয়ার সাথে সাথে তারা বন্ধ হয়ে যায়। অ্যাপ্লিকেশান বন্ধ হওয়ার পরেও যে কাজের জন্য টিকে থাকা উচিত, WorkManager ব্যবহার করুন৷ |
অ্যালার্ম ম্যানেজার | শুধুমাত্র অ্যালার্ম। | WorkManager-এর নিয়মিত কর্মীদের থেকে ভিন্ন, AlarmManager-এর সঠিক অ্যালার্ম ডোজ মোড থেকে একটি ডিভাইসকে জাগিয়ে তোলে। তাই শক্তি এবং সম্পদ ব্যবস্থাপনার ক্ষেত্রে এটি দক্ষ নয়। এটি শুধুমাত্র সুনির্দিষ্ট অ্যালার্ম বা ক্যালেন্ডার ইভেন্টের মতো বিজ্ঞপ্তির জন্য ব্যবহার করুন, পুনরাবৃত্তিমূলক ব্যাকগ্রাউন্ড কাজের জন্য নয়। |
অপ্রচলিত APIগুলি প্রতিস্থাপন করুন
WorkManager API হল FirebaseJobDispatcher
এবং GcmNetworkManager
সহ পূর্ববর্তী Android ব্যাকগ্রাউন্ড শিডিউলিং APIগুলির জন্য প্রস্তাবিত প্রতিস্থাপন৷
শুরু করুন
আপনার অ্যাপে WorkManager ব্যবহার শুরু করতে শুরু করার নির্দেশিকা দেখুন।
অতিরিক্ত সম্পদ
নিম্নলিখিত বিভাগগুলি কিছু অতিরিক্ত সংস্থান প্রদান করে।
ভিডিও
- ওয়ার্কম্যানেজার - MAD দক্ষতা , ভিডিও সিরিজ
- 2018 সালের Android ডেভ সামিট থেকে WorkManager-এর সাথে কাজ করা
- ওয়ার্ক ম্যানেজার: বেসিকের বাইরে , 2019 অ্যান্ড্রয়েড ডেভ সামিট থেকে