ফোরগ্রাউন্ড সার্ভিস ডকুমেন্টেশনে অ্যান্ড্রয়েড ফোরগ্রাউন্ড সার্ভিসগুলোর বর্তমান আচরণ বর্ণনা করা হয়েছে। এই ডকুমেন্টেশনটি বেশিরভাগ অ্যাপের জন্য সর্বোত্তম অনুশীলন সম্পর্কে নির্দেশনা দেয়, অ্যাপগুলো অ্যান্ড্রয়েডের সর্বশেষ সংস্করণকে টার্গেট করুক বা না করুক।
এই পৃষ্ঠায় ফোরগ্রাউন্ড সার্ভিসে আসা সাম্প্রতিক কিছু গুরুত্বপূর্ণ পরিবর্তন এবং অ্যান্ড্রয়েড প্ল্যাটফর্মের সর্বশেষ সংস্করণকে টার্গেট না করা অ্যাপগুলোর জন্য এর প্রভাব বর্ণনা করা হয়েছে। অনেক ক্ষেত্রে, নিম্নতর এপিআই লেভেলকে টার্গেট করা অ্যাপগুলোর জন্য যে সেরা অনুশীলনগুলো ঐচ্ছিক ছিল, সেগুলোই এখন উচ্চতর এপিআই লেভেলকে টার্গেট করা অ্যাপগুলোর জন্য বাধ্যতামূলক হয়ে উঠেছে।
অ্যান্ড্রয়েড ১৬ (এপিআই লেভেল ৩৬)
নিম্নলিখিত পরিবর্তনগুলি সেইসব অ্যাপের ক্ষেত্রে প্রযোজ্য যেগুলি অ্যান্ড্রয়েড ১৬ বা তার উচ্চতর সংস্করণে চলে, সেগুলি যে এপিআই লেভেলকেই টার্গেট করুক না কেন:
ফোরগ্রাউন্ড সার্ভিস থেকে শুরু হওয়া ব্যাকগ্রাউন্ড জবগুলোকে এখন অবশ্যই তাদের নিজ নিজ রানটাইম কোটা মেনে চলতে হবে। এর মধ্যে
JobSchedulerদিয়ে সরাসরি শিডিউল করা জব, সেইসাথে WorkManager বাDownloadManagerমতো অন্যান্য লাইব্রেরি দ্বারা তৈরি জবও অন্তর্ভুক্ত।ব্যবহারকারীর কোনো কার্যকলাপের প্রতিক্রিয়ায় ডেটা স্থানান্তর করতে, একটি ব্যবহারকারী-প্রবর্তিত ডেটা স্থানান্তর জব ব্যবহার করার কথা বিবেচনা করুন। এই জবগুলো সাধারণ জব কোটার আওতামুক্ত।
অ্যান্ড্রয়েড ১৫ (এপিআই লেভেল ৩৫)
যেসব অ্যাপ এপিআই লেভেল ৩৫ বা তার বেশি টার্গেট করে, সেগুলোর ক্ষেত্রে নিম্নলিখিত শর্তাবলী প্রযোজ্য:
- একটি
dataSyncফোরগ্রাউন্ড সার্ভিস কতক্ষণ চলতে পারে তার উপর নতুন বিধিনিষেধ রয়েছে। এই বিধিনিষেধগুলো ‘ফোরগ্রাউন্ড সার্ভিস টাইমআউট আচরণ’ অংশে বর্ণনা করা হয়েছে। (অ্যান্ড্রয়েড ১৫-এ নতুন)mediaProcessingফোরগ্রাউন্ড সার্ভিস টাইপের ক্ষেত্রেও অনুরূপ বিধিনিষেধ প্রযোজ্য। -
BOOT_COMPLETEDফোরগ্রাউন্ড সার্ভিসগুলো এখন আর নির্দিষ্ট কিছু ফোরগ্রাউন্ড সার্ভিস চালু করতে পারবে না । - যেসব অ্যাপের
SYSTEM_ALERT_WINDOWপারমিশন থাকে, সেগুলোকে ব্যাকগ্রাউন্ড থেকে ফোরগ্রাউন্ড সার্ভিস চালু করার অনুমতি কেবল তখনই দেওয়া হয়, যদি তাদের বর্তমানে একটি দৃশ্যমান ওভারলে উইন্ডো থাকে (অথবা যদি তারা ব্যাকগ্রাউন্ডে চালু হওয়ার সীমাবদ্ধতা থেকে অব্যাহতির অন্য কোনো শর্ত পূরণ করে)। পূর্বে, এই অ্যাপগুলোর জন্য অব্যাহতির পরিধি আরও ব্যাপক ছিল।
অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪)
যেসব অ্যাপ এপিআই লেভেল ৩৪ বা তার চেয়ে উচ্চতর লেভেলকে টার্গেট করে, সেগুলোর ক্ষেত্রে নিম্নলিখিত শর্তাবলী প্রযোজ্য:
- আপনাকে অবশ্যই সমস্ত ফোরগ্রাউন্ড সার্ভিস এবং তাদের সার্ভিস টাইপ ঘোষণা করতে হবে।
- ফোরগ্রাউন্ড সার্ভিসটি যে ধরনের কাজ করবে, তার জন্য অ্যাপগুলোকে অবশ্যই উপযুক্ত পারমিশন টাইপের জন্য অনুরোধ করতে হবে। প্রতিটি ফোরগ্রাউন্ড সার্ভিস টাইপের একটি সংশ্লিষ্ট পারমিশন টাইপ থাকে। উদাহরণস্বরূপ, যদি কোনো অ্যাপ ক্যামেরা ব্যবহার করে এমন একটি ফোরগ্রাউন্ড সার্ভিস চালু করে, তবে আপনাকে অবশ্যই
FOREGROUND_SERVICEএবংFOREGROUND_SERVICE_CAMERAউভয় পারমিশনের জন্য অনুরোধ করতে হবে। যদি কোনো অ্যাপ এপিআই লেভেল ৩৪ বা তার বেশি টার্গেট করে এবং উপযুক্ত নির্দিষ্ট পারমিশনের জন্য অনুরোধ না করে, তবে সিস্টেম একটিSecurityExceptionথ্রো করে।
অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১)
যেসব অ্যাপ এপিআই লেভেল ৩১ বা তার চেয়ে উচ্চতর লেভেলকে টার্গেট করে, সেগুলোর ক্ষেত্রে নিম্নলিখিত শর্তাবলী প্রযোজ্য:
- কিছু নির্দিষ্ট ব্যতিক্রম ছাড়া, অ্যাপ ব্যাকগ্রাউন্ডে থাকা অবস্থায় ফোরগ্রাউন্ড সার্ভিস চালু করতে পারে না। আরও তথ্যের জন্য এবং এই নিয়মের ব্যতিক্রমগুলো সম্পর্কে জানতে, “ব্যাকগ্রাউন্ড থেকে ফোরগ্রাউন্ড সার্ভিস চালু করার উপর বিধিনিষেধ” দেখুন।
অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০)
যেসব অ্যাপ এপিআই লেভেল ৩০ বা তার বেশি টার্গেট করে, সেগুলোর ক্ষেত্রে নিম্নলিখিত শর্তাবলী প্রযোজ্য:
- যদি কোনো অ্যাপের ফোরগ্রাউন্ড সার্ভিসগুলো ক্যামেরা বা মাইক্রোফোন ব্যবহার করে, তবে অ্যাপটিকে অবশ্যই যথাক্রমে
cameraবাmicrophoneসার্ভিস টাইপ দিয়ে সার্ভিসটি ঘোষণা করতে হবে।
অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯)
যেসব অ্যাপ এপিআই লেভেল ২৯ বা তার চেয়ে উচ্চতর লেভেলকে টার্গেট করে, সেগুলোর ক্ষেত্রে নিম্নলিখিত শর্তাবলী প্রযোজ্য:
- যদি কোনো অ্যাপের ফোরগ্রাউন্ড সার্ভিসগুলো অবস্থানের তথ্য ব্যবহার করে, তাহলে অ্যাপটিকে অবশ্যই
locationসার্ভিস টাইপসহ সার্ভিসটি ঘোষণা করতে হবে।
অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮)
অ্যান্ড্রয়েড ৯-এ FOREGROUND_SERVICE পারমিশনটি চালু করা হয়েছে। অ্যান্ড্রয়েড ৯-এ চালিত যে অ্যাপগুলো ফোরগ্রাউন্ড সার্ভিস ব্যবহার করে, সেগুলোর এই পারমিশনটি থাকা আবশ্যক।
যদি এপিআই লেভেল ২৮ বা তার বেশি টার্গেট করা কোনো অ্যাপ FOREGROUND_SERVICE পারমিশন না চেয়ে একটি ফোরগ্রাউন্ড সার্ভিস তৈরি করার চেষ্টা করে, তাহলে সিস্টেম একটি SecurityException থ্রো করে।