ব্যাকগ্রাউন্ড টাস্ক ওভারভিউ

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

এই দস্তাবেজটি আপনার জন্য উপলব্ধ বিভিন্ন বিকল্প ব্যাখ্যা করে, এবং আপনার পরিস্থিতির জন্য সঠিক একটি বেছে নিতে সাহায্য করে।

পরিভাষা

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

যদি একটি অ্যাপ ব্যাকগ্রাউন্ডে চলমান থাকে, তবে সিস্টেম এটির উপর অনেক সীমাবদ্ধতা রাখে। (উদাহরণস্বরূপ, বেশিরভাগ ক্ষেত্রে, পটভূমিতে থাকা একটি অ্যাপ ফোরগ্রাউন্ড পরিষেবাগুলি চালু করতে পারে না ।)

এই নথির উদ্দেশ্যের জন্য, আমরা "টাস্ক" শব্দটি ব্যবহার করব এমন একটি অপারেশন বোঝাতে যা একটি অ্যাপ তার প্রধান কার্যপ্রবাহের বাইরে করছে৷ বোঝাপড়ায় সারিবদ্ধতা নিশ্চিত করতে, আমরা এটিকে তিনটি প্রধান ধরণের কাজের মধ্যে রেখেছি: অ্যাসিঙ্ক্রোনাস কাজ , টাস্ক শিডিউলিং API , এবং ফোরগ্রাউন্ড পরিষেবা

সঠিক বিকল্পটি বেছে নিন

বেশিরভাগ পরিস্থিতিতে, আপনি টাস্কটি যে ক্যাটাগরি ( অসিঙ্ক্রোনাস ওয়ার্ক , টাস্ক শিডিউলিং এপিআই , বা ফোরগ্রাউন্ড পরিষেবা ) এর অধীনে পড়ে তা বের করে আপনার টাস্কের জন্য ব্যবহার করার জন্য সঠিক APIগুলি বের করতে পারেন।

আপনি যদি এখনও নিশ্চিত না হন তবে আপনি আমাদের সরবরাহ করা ফ্লো চার্টগুলি ব্যবহার করতে পারেন যা সিদ্ধান্তে আরও সূক্ষ্মতা যোগ করে। এই বিকল্পগুলির প্রতিটি পরবর্তীতে এই নথিতে আরও বিস্তারিতভাবে বর্ণনা করা হয়েছে।

পটভূমির কাজগুলির জন্য বিবেচনা করার জন্য দুটি প্রধান পরিস্থিতি রয়েছে:

এই দুটি পরিস্থিতিতে তাদের নিজস্ব সিদ্ধান্ত গাছ আছে.

অ্যাসিঙ্ক্রোনাস কাজ

অনেক ক্ষেত্রে, একটি অ্যাপকে শুধুমাত্র সমসাময়িক ক্রিয়াকলাপগুলি করতে হবে যখন এটি অগ্রভাগে চলছে। উদাহরণস্বরূপ, একটি অ্যাপের জন্য একটি সময়-সাপেক্ষ গণনা করতে হতে পারে। যদি এটি UI থ্রেডে গণনা করে থাকে, তাহলে গণনা শেষ না হওয়া পর্যন্ত ব্যবহারকারী অ্যাপটির সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হবেন না; এর ফলে একটি ANR ত্রুটি হতে পারে। এই ধরনের ক্ষেত্রে, অ্যাপটির একটি অ্যাসিঙ্ক্রোনাস কাজের বিকল্প ব্যবহার করা উচিত।

সাধারণ অ্যাসিঙ্ক্রোনাস কাজের বিকল্পগুলির মধ্যে রয়েছে কোটলিন কোরোটিন এবং জাভা থ্রেড; আপনি অ্যাসিঙ্ক্রোনাস কাজের ডকুমেন্টেশনে আরও তথ্য পেতে পারেন। এটি লক্ষ্য করা গুরুত্বপূর্ণ যে ব্যাকগ্রাউন্ড টাস্ক API-এর বিপরীতে, অ্যাসিঙ্ক্রোনাস কাজ শেষ হওয়ার গ্যারান্টি দেওয়া হয় না যদি অ্যাপটি একটি বৈধ জীবনচক্র পর্যায়ে থাকা বন্ধ করে দেয় (উদাহরণস্বরূপ, যদি অ্যাপটি অগ্রভাগ ছেড়ে যায়)।

টাস্ক শিডিউলিং API

টাস্ক শিডিউলিং এপিআইগুলি একটি আরও নমনীয় বিকল্প যখন আপনাকে এমন কাজগুলি করতে হবে যা ব্যবহারকারী অ্যাপটি ছেড়ে গেলেও চালিয়ে যেতে হবে৷ বেশিরভাগ ক্ষেত্রে, ব্যাকগ্রাউন্ড কাজগুলি চালানোর জন্য সর্বোত্তম বিকল্প হল WorkManager ব্যবহার করা, যদিও কিছু ক্ষেত্রে এটি প্ল্যাটফর্ম JobScheduler API ব্যবহার করা উপযুক্ত হতে পারে।

WorkManager হল একটি শক্তিশালী লাইব্রেরি যা আপনাকে আপনার প্রয়োজন অনুযায়ী সহজ বা জটিল কাজগুলি সেট আপ করতে দেয়৷ আপনি ওয়ার্ক ম্যানেজার ব্যবহার করতে পারেন নির্দিষ্ট সময়ে চালানোর জন্য টাস্কগুলি নির্ধারণ করতে, বা টাস্কটি কখন চালানো উচিত তা নির্দিষ্ট করতে। আপনি এমনকি টাস্কের চেইন সেট আপ করতে পারেন, তাই প্রতিটি টাস্ক পালাক্রমে চলে, তার ফলাফলগুলিকে পরেরটিতে পাস করে। উপলব্ধ সমস্ত বিকল্পগুলি বুঝতে, WorkManager বৈশিষ্ট্য তালিকাটি পড়ুন।

ব্যাকগ্রাউন্ডের কাজগুলির জন্য কিছু সাধারণ পরিস্থিতিতে অন্তর্ভুক্ত:

  • সার্ভার থেকে পর্যায়ক্রমে ডেটা আনা হচ্ছে
  • সেন্সর ডেটা আনা হচ্ছে (উদাহরণস্বরূপ, স্টেপ কাউন্টার ডেটা)
  • পর্যায়ক্রমিক অবস্থানের ডেটা পাওয়া (আপনাকে অবশ্যই Android 10 বা উচ্চতর ACCESS_BACKGROUND_LOCATION অনুমতি দিতে হবে)
  • কন্টেন্ট ট্রিগারের উপর ভিত্তি করে কন্টেন্ট আপলোড করা, যেমন ক্যামেরা দ্বারা তৈরি ফটো

ফোরগ্রাউন্ড পরিষেবা

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

একটি ফোরগ্রাউন্ড পরিষেবা তৈরি করার জন্য দুটি পদ্ধতি আছে। আপনি আপনার নিজের Service ঘোষণা করতে পারেন এবং উল্লেখ করতে পারেন যে পরিষেবাটি একটি অগ্রভাগের পরিষেবা Service.startForeground() কল করে। বিকল্পভাবে, আপনি একটি ফোরগ্রাউন্ড পরিষেবা তৈরি করতে WorkManager ব্যবহার করতে পারেন, যেমনটি দীর্ঘদিন ধরে কাজ করা কর্মীদের সমর্থনে আলোচনা করা হয়েছে। যাইহোক, এটা জানা গুরুত্বপূর্ণ যে WorkManager দ্বারা তৈরি একটি ফোরগ্রাউন্ড পরিষেবাকে অন্য যেকোনো ফোরগ্রাউন্ড পরিষেবার মতো একই বিধিনিষেধ মেনে চলতে হবে। ওয়ার্ক ম্যানেজার একটি অগ্রভাগের পরিষেবা তৈরি করা সহজ করার জন্য কিছু সুবিধার API প্রদান করে।

বিকল্প API

সিস্টেমটি বিকল্প API গুলি অফার করে যা আরও নির্দিষ্ট ব্যবহারের ক্ষেত্রে আরও ভাল কাজ করার জন্য ডিজাইন করা হয়েছে। যদি আপনার ব্যবহারের ক্ষেত্রে একটি বিকল্প API বিদ্যমান থাকে, তাহলে আমরা অগ্রভাগের পরিষেবার পরিবর্তে সেই APIটি ব্যবহার করার পরামর্শ দিই কারণ এটি আপনার অ্যাপকে আরও ভাল পারফর্ম করতে সাহায্য করবে। ফোরগ্রাউন্ড পরিষেবার প্রকারের ডকুমেন্টেশন নোট করে যখন একটি নির্দিষ্ট ফোরগ্রাউন্ড পরিষেবা প্রকারের পরিবর্তে ব্যবহার করার জন্য একটি ভাল বিকল্প API থাকে।

বিকল্প API ব্যবহার করার জন্য সবচেয়ে সাধারণ কিছু পরিস্থিতি হল:

ব্যবহারকারীর দ্বারা শুরু করা টাস্ক

ফ্লোচার্ট দেখানো হচ্ছে কিভাবে উপযুক্ত API বেছে নিতে হয়। এই চার্টটি 'ব্যবহারকারীর দ্বারা শুরু করা কাজ' বিভাগে উপাদানটির সংক্ষিপ্ত বিবরণ দেয়।
চিত্র 1 : ব্যবহারকারীর দ্বারা শুরু করা ব্যাকগ্রাউন্ড টাস্ক চালানোর জন্য কীভাবে সঠিক API চয়ন করবেন।

যদি একটি অ্যাপের ব্যাকগ্রাউন্ডের কাজগুলি সম্পাদন করার প্রয়োজন হয়, এবং অ্যাপটি দৃশ্যমান থাকাকালীন ব্যবহারকারী দ্বারা অপারেশন শুরু করা হয়, তাহলে সঠিক পদ্ধতিটি খুঁজে পেতে এই প্রশ্নের উত্তর দিন৷

অ্যাপ্লিকেশানটি ব্যাকগ্রাউন্ডে থাকাকালীন কি টাস্কটি চালিয়ে যেতে হবে?

অ্যাপটি ব্যাকগ্রাউন্ডে থাকাকালীন টাস্কটি চালিয়ে যাওয়ার প্রয়োজন না হলে, আপনার অ্যাসিঙ্ক্রোনাস কাজ ব্যবহার করা উচিত। অ্যাসিঙ্ক্রোনাস কাজ করার জন্য অনেকগুলি বিকল্প রয়েছে। বোঝার গুরুত্বপূর্ণ বিষয় হল অ্যাপটি ব্যাকগ্রাউন্ডে চলে গেলে এই বিকল্পগুলি সব কাজ করা বন্ধ করে দেয়। (অ্যাপটি বন্ধ হয়ে গেলে তারাও বন্ধ হয়ে যায়।) উদাহরণস্বরূপ, একটি সোশ্যাল মিডিয়া অ্যাপ তার বিষয়বস্তু ফিড রিফ্রেশ করতে চাইতে পারে, কিন্তু ব্যবহারকারী যদি স্ক্রীন ছেড়ে চলে যায় তবে এটির অপারেশন শেষ করার প্রয়োজন হবে না।

টাস্ক স্থগিত বা বাধাগ্রস্ত হলে একটি খারাপ ব্যবহারকারীর অভিজ্ঞতা হবে?

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

এটা কি একটি সংক্ষিপ্ত, সমালোচনামূলক কাজ?

যদি টাস্কটি বিলম্বিত করা না যায় এবং এটি দ্রুত সম্পন্ন হয়, আপনি shortService টাইপ সহ একটি ফোরগ্রাউন্ড পরিষেবা ব্যবহার করতে পারেন। অন্যান্য ফোরগ্রাউন্ড পরিষেবাগুলির তুলনায় এই পরিষেবাগুলি তৈরি করা সহজ এবং অনেকগুলি অনুমতির প্রয়োজন হয় না৷ যাইহোক, শর্ট সার্ভিস তিন মিনিটের মধ্যে শেষ করতে হবে।

শুধুমাত্র এই উদ্দেশ্যে একটি বিকল্প API আছে?

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

যাইহোক, যেহেতু ফোরগ্রাউন্ড পরিষেবাগুলি সম্ভাব্যভাবে অনেকগুলি ডিভাইস সংস্থান ব্যবহার করতে পারে, সিস্টেমটি কখন এবং কীভাবে ব্যবহার করা যেতে পারে তার উপর অনেক সীমাবদ্ধতা রাখে। অনেক ক্ষেত্রে, একটি ফোরগ্রাউন্ড পরিষেবা ব্যবহার করার পরিবর্তে, আপনি একটি বিকল্প API ব্যবহার করতে পারেন যা আপনার জন্য কম ঝামেলায় কাজ পরিচালনা করে। উদাহরণ স্বরূপ, যদি ব্যবহারকারী একটি নির্দিষ্ট স্থানে পৌঁছালে আপনার অ্যাপের কোনো ব্যবস্থা নেওয়ার প্রয়োজন হয়, তাহলে আপনার সর্বোত্তম বিকল্প হল ফোরগ্রাউন্ড পরিষেবার মাধ্যমে ব্যবহারকারীর অবস্থান ট্র্যাক করার পরিবর্তে জিওফেন্স API ব্যবহার করা।

একটি ইভেন্টের প্রতিক্রিয়া হিসাবে কাজ

ফ্লোচার্ট দেখানো হচ্ছে কিভাবে উপযুক্ত API বেছে নিতে হয়। এই চার্টটি 'একটি ইভেন্টের প্রতিক্রিয়ায় কাজ' বিভাগে উপাদানটির সংক্ষিপ্ত বিবরণ দেয়।
চিত্র 2 : একটি ইভেন্ট-ট্রিগার করা ব্যাকগ্রাউন্ড টাস্ক চালানোর জন্য কীভাবে সঠিক API চয়ন করবেন।

কখনও কখনও একটি অ্যাপকে ট্রিগারের প্রতিক্রিয়া হিসাবে ব্যাকগ্রাউন্ডের কাজ করতে হয়, যেমন:

এটি একটি বাহ্যিক ট্রিগার হতে পারে (যেমন একটি FCM বার্তা), অথবা এটি অ্যাপের দ্বারা সেট করা একটি অ্যালার্মের প্রতিক্রিয়া হতে পারে। উদাহরণস্বরূপ, একটি গেম একটি FCM বার্তা পেতে পারে যাতে কিছু সম্পদ আপডেট করতে বলা হয়।

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

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

যদি টাস্কটি কয়েক সেকেন্ডের বেশি সময় নেয়, তাহলে টাস্ক শিডিউলিং API ব্যবহার করুন।