Foreground Service: এটি কী, প্রকার এবং কার্যপ্রণালী

লেখক: IT Sectr প্রকাশিত: 2026-03-28 পড়ার সময়: 11 মিনিট

Foreground Service একটি Android পরিষেবা যা ব্যবহারকারীকে দৃশ্যমান বাধ্যতামূলক বিজ্ঞপ্তি সহ স্টেটস বারে দীর্ঘস্থায়ী অপারেশন সম্পাদন করে। Background Service-এর বিপরীতে, যা সিস্টেম সম্পদের অভাবে বন্ধ করতে পারে, Foreground Service উচ্চ অগ্রাধিকার পায় এবং সীমিত মেমরির অবস্থাতেও কাজ চালিয়ে যায়। Android Developers, 2025 ডকুমেন্টেশন অনুসারে, Foreground Service Android 12 এবং তার পরবর্তী ডিভাইসগুলিতে দীর্ঘস্থায়ী কাজ সম্পাদনের একমাত্র নির্ভরযোগ্য উপায় হিসাবে রয়ে গেছে।

মুখ্য বিষয়

  • Foreground Service — বাধ্যতামূলক বিজ্ঞপ্তি সহ পরিষেবা যা স্টেটস বারে ব্যবহারকারীকে দৃশ্যমান
  • Notification — বাধ্যতামূলক উপাদান, যা ছাড়া সিস্টেম পরিষেবা শুরু করতে দেবে না
  • অগ্রাধিকার — Background Service-এর বিপরীতে, Foreground Service মেমরি কম হলে বন্ধ হয় না
  • Android 12+ — foreground service-কে background থেকে শুরু করার উপর বিধিনিষেধ আরোপ করা হয়েছে
  • Foreground Service Type — টার্গেট API 34+ এর জন্য পরিষেবার ধরনের বাধ্যতামূলক ঘোষণা

Foreground Service কী

Foreground Service একটি Android কম্পোনেন্ট যা এমন অপারেশন সম্পাদনের জন্য ডিজাইন করা হয়েছে যা ব্যবহারকারী জানেন এবং দেখতে পারেন। এটি নোটিফিকেশন প্যানেলে একটি স্থায়ী বিজ্ঞপ্তি প্রদর্শন করে যা সোয়াইপ করে সরানো যায় না — এটি ততক্ষণ সক্রিয় থাকে যতক্ষণ পরিষেবা চলছে। এটি একটি ব্যাকগ্রাউন্ড পরিষেবা থেকে মূল পার্থক্য, যা ব্যবহারকারীর অজান্তেই কাজ করে।

Android সিস্টেম Foreground Service-কে একটি গুরুত্বপূর্ণ প্রক্রিয়া হিসাবে বিবেচনা করে। যখন RAM কম হয়, প্ল্যাটফর্ম প্রথমে Background Services বন্ধ করে, তারপর ক্যাশেড Activities, এবং শুধুমাত্র অসাধারণ ক্ষেত্রে — Foreground Service। OOM Killer এই ধরনের পরিষেবাকে ADJ স্তর 2 প্রদান করে, যা কার্যকরীভাবে এর জোরপূর্বক বন্ধ করা অসম্ভব করে তোলে।

Foreground Service শুরু করার জন্য, ডেভেলপারকে পরিষেবা তৈরির কয়েক সেকেন্ডের মধ্যে startForeground() মেথড কল করতে হবে, অন্যথায় সিস্টেম একটি ForegroundServiceDidNotStartInTimeException ব্যতিক্রম তৈরি করবে। এটি প্ল্যাটফর্মের একটি কঠোর প্রয়োজনীয়তা যা অঘোষিত ব্যাকগ্রাউন্ড কাজ প্রতিরোধের জন্য চালু করা হয়েছে।

ইতিহাস

Foreground Service প্রক্রিয়াটি Android 1.0-তে প্রথম SDK-এর সাথে চালু হয়েছিল, কিন্তু বাধ্যতামূলক বিজ্ঞপ্তি Android 9 (API 28)-এ দেখা যায়। তার আগে, একটি পরিষেবা ব্যবহারকারীর দৃশ্যমান ইন্ডিকেটর ছাড়াই ফোরগ্রাউন্ডে চলতে পারত। Android 9 থেকে শুরু করে, Google প্রয়োজনীয়তা কঠোর করেছে: startForeground কল করা যেকোনো অ্যাপ্লিকেশনকে পরিষেবা শুরুর 5 সেকেন্ডের মধ্যে একটি বিজ্ঞপ্তি প্রদান করতে হবে।

Android 12 (API 31)-এ Foreground Service-কে ব্যাকগ্রাউন্ড কনটেক্সট থেকে শুরু করার উপর বিধিনিষেধ যোগ করা হয়েছে — এখন অনেক পরিস্থিতির জন্য FOREGROUND_SERVICE_SPECIAL_USE অনুমতি প্রয়োজন। Android 14 (API 34) ম্যানিফেস্টে foregroundServiceType-এর বাধ্যতামূলক ঘোষণা চালু করেছে, যা পরিষেবা আর্কিটেকচারকে আরও স্বচ্ছ এবং অনুমানযোগ্য করেছে।

Foreground Service কীভাবে কাজ করে

Foreground Service-এর কাজের প্রক্রিয়া তিনটি মূল ধাপের উপর ভিত্তি করে: পরিষেবা তৈরি, বিজ্ঞপ্তি সংযুক্ত করা এবং কাজ সম্পাদন। পরিষেবাটি Service ক্লাস থেকে উত্তরাধিকার লাভ করে এবং onStartCommand() মেথড ওভাররাইড করে, যেখানে একটি আইডেন্টিফায়ার এবং Notification অবজেক্ট সহ startForeground() কল করা হয়।

startForeground() কল করার পর, সিস্টেম পরিষেবা প্রক্রিয়াটিকে উন্নত বেঁচে থাকার অগ্রাধিকার সহ ফোরগ্রাউন্ড গ্রুপে নিয়ে যায়। এর মানে Android RAM লোড নির্বিশেষে প্রক্রিয়াটি চালু রাখার চেষ্টা করবে। Foreground Service সাধারণ অবস্থায় সিস্টেম দ্বারা বন্ধ করা যায় না — শুধুমাত্র ব্যবহারকারী বিজ্ঞপ্তি সরালে বা স্পষ্টভাবে stopSelf() কল করলে।

Foreground Service-এর জীবনচক্র onCreate(), onStartCommand() এবং onDestroy() মেথডের মাধ্যমে পরিচালিত হয়। onStartCommand()-এ, ডেভেলপার প্রক্রিয়া বন্ধ হওয়ার পুনরারম্ভ কৌশল নির্ধারণ করে — START_STICKY ধ্রুবক সিস্টেমকে সম্পদ পুনরুদ্ধারের পর পরিষেবা পুনরায় তৈরি করতে বাধ্য করে, যেখানে START_NOT_STICKY স্বয়ংক্রিয় পুনরারম্ভ প্রতিরোধ করে।

জীবনচক্র এবং অবস্থা

Foreground Service শুরু হলে, ক্রমান্বয়ে ধাপগুলি সম্পাদিত হয়: startService() কল, onCreate()-এ Service অবজেক্ট তৈরি, onStartCommand()-এ Intent প্রক্রিয়াকরণ এবং Notification অবজেক্ট সহ startForeground() কল। যদি পরিষেবা ইতিমধ্যে চলছে এবং নতুন Intent আসে, শুধুমাত্র onStartCommand() পুনরায় কল হয় — onCreate() পরিষেবার জীবনে একবারই সম্পাদিত হয়।

Foreground Service বন্ধ করা REMOVE_NOTIFICATION ফ্ল্যাগ সহ stopForeground()-এর মাধ্যমে হয়, যা স্টেটস বার থেকে বিজ্ঞপ্তি লুকিয়ে রাখে। বিজ্ঞপ্তি সরানোর সাথে সাথে, সিস্টেম পরিষেবাটিকে ফোরগ্রাউন্ড হিসেবে বিবেচনা করা বন্ধ করতে পারে এবং এর অগ্রাধিকার Background Service-এ কমিয়ে দিতে পারে, যা প্রক্রিয়াটিকে বন্ধের জন্য ঝুঁকিপূর্ণ করে তোলে।

PowerManager-এর সাথে ইন্টারঅ্যাকশন

PowerManager Foreground Service-এর কাজে গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ Android-এর পাওয়ার সেভিং মোড (Doze, App Standby) কাজ সম্পাদনের ক্ষমতা সীমিত করতে পারে। ফোরগ্রাউন্ড অবস্থায় থাকলেও, পরিষেবা ব্যাটারি নীতির অধীন — নেটওয়ার্ক অনুরোধ বিলম্বিত হতে পারে এবং টাইমার Doze উইন্ডোর সাথে সিঙ্ক হতে পারে। বিলম্ব সহনশীল দীর্ঘস্থায়ী অপারেশনের জন্য, WorkManager-এর সাথে সংমিশ্রণে Foreground Service ব্যবহার করার সুপারিশ করা হয়।

Foreground Service-এর প্রধান প্রকার

Android 14 (API 34) থেকে শুরু করে, Google ম্যানিফেস্টে Foreground Service প্রকারের বাধ্যতামূলক ঘোষণা চালু করেছে। প্রতিটি প্রকার একটি অনুমোদিত ব্যবহারের পরিস্থিতি নির্ধারণ করে — সিস্টেম ঘোষিত প্রকার এবং প্রকৃত পরিষেবা আচরণের মধ্যে সামঞ্জস্য যাচাই করে। মোট 9টি প্রকার রয়েছে, তবে সবচেয়ে বেশি ব্যবহৃত নিম্নলিখিতগুলি।

dataSync

dataSync প্রকারটি ডিভাইস এবং সার্ভারের মধ্যে ডেটা সিঙ্ক্রোনাইজেশন, ফাইল স্থানান্তর এবং ব্যাকআপের জন্য ডিজাইন করা হয়েছে। উদাহরণের মধ্যে ক্লাউড স্টোরেজে ফটো আপলোড, Firebase-এর সাথে ডেটাবেস সিঙ্ক বা রিমোট সার্ভারে লগ আপলোড অন্তর্ভুক্ত। এই প্রকারের জন্য অ্যাট্রিবিউট android:foregroundServiceType="dataSync"-এর মাধ্যমে ম্যানিফেস্টে যৌক্তিকতা নির্দিষ্ট করা বাধ্যতামূলক।

mediaPlayback

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

location

location প্রকারটি জিওলোকেশন পরিষেবার জন্য — নেভিগেশন অ্যাপ, কার্যকলাপ ট্র্যাকিং, জিওফেন্সিং। Android 14+-এর জন্য FOREGROUND_SERVICE_LOCATION অনুমতি ঘোষণা এবং ম্যানিফেস্টে প্রকার নির্দিষ্ট করা প্রয়োজন। অ্যাপ্লিকেশনের রানটাইমে একটি সক্রিয় অবস্থান অনুমতি থাকতে হবে, অন্যথায় সিস্টেম পরিষেবা শুরু করতে অস্বীকার করবে।

প্রকারঅনুমতিব্যবহারের উদাহরণ
dataSyncFOREGROUND_SERVICE_DATA_SYNCক্লাউডের সাথে ফাইল সিঙ্ক
mediaPlaybackFOREGROUND_SERVICE_MEDIA_PLAYBACKব্যাকগ্রাউন্ডে মিউজিক প্লেয়ার
locationFOREGROUND_SERVICE_LOCATIONগাড়ি চালানোর সময় GPS নেভিগেশন
cameraFOREGROUND_SERVICE_CAMERAভিডিও নজরদারি অ্যাপ্লিকেশন
connectedDeviceFOREGROUND_SERVICE_CONNECTED_DEVICEBLE ডিভাইসের সাথে কাজ

Foreground Service বনাম Background Service

মূল পার্থক্য Foreground এবং Background Service-এর মধ্যে একটি দৃশ্যমান বিজ্ঞপ্তি এবং বেঁচে থাকার অগ্রাধিকারের উপস্থিতি। Background Service মেমরি কম হলে সিস্টেম যে কোনো সময় বন্ধ করতে পারে, যেখানে Foreground Service Android Low Memory Killer প্রক্রিয়ায় উন্নত প্রক্রিয়া adj-স্তর-এর কারণে কাজ চালিয়ে যায়।

Background Service-এর বিজ্ঞপ্তির প্রয়োজন হয় না এবং এটি ব্যবহারকারীর অজান্তে চলতে পারে। তবে, Android 8 (API 26) থেকে শুরু করে, Google ব্যাকগ্রাউন্ড পরিষেবাগুলি উল্লেখযোগ্যভাবে সীমাবদ্ধ করেছে: ব্যাকগ্রাউন্ড কনটেক্সট থেকে startService() আর কাজ করে না, এবং Context.startForegroundService() যেকোনো পরিষেবা শুরু করার জন্য বাধ্যতামূলক হয়েছে যা ফোরগ্রাউন্ডে যাওয়ার পরিকল্পনা করে। সিস্টেম ব্যাকগ্রাউন্ড এক্সিকিউশন লিমিটও চালু করেছে — একটি টাইমার (বর্তমানে 10 মিনিট) যার পরে Background Service জোরপূর্বক বন্ধ করা হয়।

Foreground Service, এর বিপরীতে, কোনো সময়সীমা নেই। পরিষেবা ঘন্টা বা দিন ধরে চলতে পারে — যতক্ষণ না ব্যবহারকারী এটি স্পষ্টভাবে বন্ধ করে বা ডিভাইস রিবুট করে। এটি Foreground Service-কে সেই অ্যাপ্লিকেশনগুলির জন্য সর্বোত্তম পছন্দ করে যা ক্রমাগত ব্যাকগ্রাউন্ড কাজ প্রয়োজন: মিউজিক প্লেয়ার, কার্যকলাপ ট্র্যাকার, VoIP কল অ্যাপ্লিকেশন।

তুলনামূলক সারণী

প্যারামিটারForeground ServiceBackground Service
বিজ্ঞপ্তিবাধ্যতামূলকপ্রয়োজন নেই
জীবনকালকোনো সীমা নেই10 মিনিট পর্যন্ত (API 26+)
সিস্টেম অগ্রাধিকারউচ্চ (ADJ 2)নিম্ন (ADJ 8+)
API 26+ লঞ্চstartForegroundService()ব্যাকগ্রাউন্ড থেকে নিষিদ্ধ

Android 12+-এ প্রয়োজনীয়তা

Android 12 (API 31) থেকে শুরু করে, Google Foreground Service শুরু করার উপর উল্লেখযোগ্য বিধিনিষেধ আরোপ করেছে। প্রধান পরিবর্তন হল বেশিরভাগ পরিষেবার প্রকারের জন্য ব্যাকগ্রাউন্ড কনটেক্সট থেকে startForegroundService() কল করার নিষেধাজ্ঞা। ব্যতিক্রম শুধুমাত্র তখনই প্রযোজ্য যখন ব্যবহারকারী স্পষ্টভাবে সম্মতি দিয়েছেন (উদাহরণস্বরূপ, FOREGROUND_SERVICE_SPECIAL_USE অনুমতির মাধ্যমে) বা যখন পরিষেবা BOOT_COMPLETED ব্রডকাস্ট ইন্টেন্টের প্রতিক্রিয়ায় শুরু হয়।

API 34+ টার্গেট করা অ্যাপ্লিকেশন ম্যানিফেস্টে প্রতিটি ঘোষিত পরিষেবার জন্য একটি foregroundServiceType ব্লক থাকতে বাধ্য। উদাহরণস্বরূপ, ডেটা সিঙ্ক পরিষেবার জন্য, android:foregroundServiceType="dataSync" নির্দিষ্ট করুন। যদি প্রকার নির্দিষ্ট না থাকে, সিস্টেম পরিষেবাটিকে অকার্যকর বিবেচনা করে এবং শুরু করার চেষ্টায় MissingForegroundServiceTypeException নিক্ষেপ করে। Google Play প্রকারের সামঞ্জস্যও যাচাই করে এবং অমিলের ক্ষেত্রে প্রকাশনা প্রত্যাখ্যান করতে পারে।

Android 14+-এর জন্য অনুমতি

Android 14 (API 34)-এ, প্রতিটি Foreground Service প্রকারের জন্য একটি পৃথক অনুমতি রয়েছে। ডেভেলপারকে সেগুলি ম্যানিফেস্টে ঘোষণা করতে হবে এবং পরিষেবা শুরুর আগে রানটাইমে অনুরোধ করতে হবে। dataSync-এর জন্য FOREGROUND_SERVICE_DATA_SYNC এবং mediaPlayback-এর জন্য FOREGROUND_SERVICE_MEDIA_PLAYBACK প্রয়োজন। ব্যবহারকারী সেটিংসে অনুমতি প্রত্যাহার করতে পারে, যা সক্রিয় পরিষেবা বন্ধ করবে।

Google Android 14-এ Foreground Service নোটিফিকেশন টাইমআউট প্রক্রিয়াও চালু করেছে: যদি পরিষেবা তৈরির 10 সেকেন্ডের মধ্যে startForeground() কল না করে, সিস্টেম একটি ব্যতিক্রম তৈরি করে। এই কঠোরকরণ সেই অ্যাপ্লিকেশনগুলির মোকাবেলার জন্য যা বিজ্ঞপ্তি কল বিলম্বিত করে বা এড়িয়ে যায়, কার্যকরভাবে Foreground-এর ছদ্মবেশে Background Service হিসাবে কাজ করে।

Foreground Service-এর ব্যবহারের ক্ষেত্র

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

মিডিয়া প্লেয়ার এবং অডিও স্ট্রিমিং

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

GPS ট্র্যাকার এবং নেভিগেশন

নেভিগেশন অ্যাপ্লিকেশন ক্রমাগত স্থানাঙ্ক ট্র্যাকিংয়ের জন্য location প্রকারের Foreground Service ব্যবহার করে। পরিষেবা বর্তমান গতি, ভ্রমণ সময় এবং ট্র্যাকিং বন্ধের বোতাম সহ একটি বিজ্ঞপ্তি প্রদর্শন করে। Foreground Service ছাড়া, সিস্টেম কয়েক মিনিটের মধ্যে ব্যাকগ্রাউন্ডে স্থানাঙ্ক প্রাপ্তি বন্ধ করে দেবে, যা নেভিগেশন অসম্ভব করে তুলবে।

VoIP কল

ভয়েস এবং ভিডিও কল অ্যাপ্লিকেশন — VoIP ক্লায়েন্ট — সক্রিয় সংযোগ বজায় রাখতে Foreground Service ব্যবহার করে। phoneCall প্রকারের (Android 14 থেকে) পরিষেবা নিশ্চিত করে যে অ্যাপ্লিকেশন ছোট করার সময় কল বিচ্ছিন্ন না হয়। বিজ্ঞপ্তি কলের সময়কাল এবং মাইক্রোফোন ও স্পিকার নিয়ন্ত্রণ প্রদর্শন করে।

  • মিডিয়া প্লেয়ার — অডিও স্ট্রিমিং, পডকাস্ট, ব্যাকগ্রাউন্ড সহ ভিডিও প্লেয়ার
  • নেভিগেশন — GPS ট্র্যাকিং, জিওফেন্সিং, ড্রাইভিং নেভিগেটর
  • VoIP কল — Skype, Zoom, Telegram — সক্রিয় কল বজায় রাখা
  • ফিটনেস ট্র্যাকার — পদক্ষেপ গণনা, হৃদস্পন্দন পর্যবেক্ষণ, ওয়ার্কআউট
  • সিঙ্ক্রোনাইজেশন — ফটো আপলোড, ডেটা ব্যাকআপ, অফলাইন সামগ্রী আপডেট

Kotlin-এ Foreground Service তৈরি

আসুন ডেটা সিঙ্ক্রোনাইজেশনের জন্য Kotlin-এ একটি Foreground Service তৈরি করা দেখি। পরিষেবাটি একটি Activity থেকে লঞ্চ হবে, অগ্রগতি সহ একটি নোটিফিকেশন প্রদর্শন করবে এবং সমাপ্তির পরে সঠিকভাবে শেষ হবে। উদাহরণটি সমস্ত বাধ্যতামূলক উপাদান প্রদর্শন করে: ম্যানিফেস্ট ঘোষণা, নোটিফিকেশন চ্যানেল, startForeground() কল এবং foregroundServiceType হ্যান্ডলিং।

kotlin
class SyncService : Service() {

    companion object {
        const val CHANNEL_ID = "sync_channel"
        const val NOTIFICATION_ID = 1001
    }

    override fun onCreate() {
        super.onCreate()
        createNotificationChannel()
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        val notification = buildNotification()
        startForeground(NOTIFICATION_ID, notification)
        performSync()
        return START_STICKY
    }

    private fun createNotificationChannel() {
        val channel = NotificationChannel(
            CHANNEL_ID,
            "সিঙ্ক্রোনাইজেশন",
            NotificationManager.IMPORTANCE_LOW
        ).apply {
            description = "ডেটা সিঙ্ক চ্যানেল"
        }
        val manager = getSystemService(NotificationManager::class.java)
        manager.createNotificationChannel(channel)
    }

    private fun buildNotification(): Notification {
        return NotificationCompat.Builder(this, CHANNEL_ID)
            .setContentTitle("সিঙ্ক্রোনাইজেশন")
            .setContentText("সার্ভারে ডেটা আপলোড")
            .setSmallIcon(R.drawable.ic_sync)
            .setOngoing(true)
            .build()
    }

    private fun performSync() {
        GlobalScope.launch(Dispatchers.IO) {
            // সিঙ্ক অনুকরণ
            delay(5000)
            stopForeground(Service.STOP_FOREGROUND_REMOVE)
            stopSelf()
        }
    }

    override fun onBind(intent: Intent): IBinder? = null
}

ম্যানিফেস্টে পরিষেবা ঘোষণা

Android 12+ এ পরিষেবার সঠিক কাজ করার জন্য, আপনাকে Foreground Service AndroidManifest.xml-এ প্রকার এবং প্রয়োজনীয় অনুমতি সহ ঘোষণা করতে হবে। foregroundServiceType অ্যাট্রিবিউট টার্গেট API 34+-এর জন্য বাধ্যতামূলক, এবং FOREGROUND_SERVICE_DATA_SYNCPOST_NOTIFICATIONS অনুমতি রানটাইমে অনুরোধ করতে হবে।

xml
<!-- AndroidManifest.xml -->
<uses-permission
    android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
    android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission
    android:name="android.permission.POST_NOTIFICATIONS" />

<application ...>
    <service
        android:name=".SyncService"
        android:foregroundServiceType="dataSync"
        android:exported="false" />
</application>

সীমাবদ্ধতা এবং বিকল্প

অত্যন্ত নির্ভরযোগ্যতা সত্ত্বেও, Foreground Service-এর সীমাবদ্ধতা রয়েছে। প্রধানটি হল ব্যবহারকারীর কাছে দৃশ্যমানতা। অ্যাপ্লিকেশন বিজ্ঞপ্তি ছাড়া ব্যাকগ্রাউন্ডে দীর্ঘস্থায়ী কাজ সম্পাদন করতে পারে না, যা UX দৃষ্টিকোণ থেকে সর্বদা গ্রহণযোগ্য নয়। উপরন্তু, সিস্টেম কিছু প্রকারের জন্য সময়সীমা অতিক্রম করলে Foreground Service-ও জোরপূর্বক বন্ধ করতে পারে — উদাহরণস্বরূপ, dataSync কয়েক ঘন্টা অপারেশনে সীমাবদ্ধ।

Foreground Service-এর একটি বিকল্প হল WorkManager, বিলম্বিত এবং ব্যাকগ্রাউন্ড কাজের জন্য একটি Android Jetpack লাইব্রেরি। WorkManager ডিভাইস রিবুটের পরেও কাজ সম্পাদনের গ্যারান্টি দেয় এবং কাজের চেইন, পর্যায়ক্রমিক অপারেশন এবং নেটওয়ার্ক ও ব্যাটারি সীমাবদ্ধতা সমর্থন করে। বেশিরভাগ ব্যাকগ্রাউন্ড অপারেশনের জন্য, Google সরাসরি পরিষেবার পরিবর্তে WorkManager সুপারিশ করে।

JobScheduler কাজ শিডিউলের জন্য Android-এ নির্মিত API। এটি সেই অপারেশনগুলির জন্য উপযুক্ত যা স্থগিত করা যেতে পারে: Wi-Fi সিঙ্ক্রোনাইজেশন, চার্জার সংযুক্ত হলে ডেটা ডাউনলোড। JobScheduler ব্যাটারি বাঁচাতে কাজগুলো উইন্ডোতে গ্রুপ করে, Foreground Service-এর বিপরীতে যা পাওয়ার সেভিং অবস্থা নির্বিশেষে ক্রমাগত চলে।

ছোট কাজের জন্য (10–15 সেকেন্ড পর্যন্ত), আপনি বিলম্বিত সম্পাদন সহ WorkManager থেকে CoroutineWorker ব্যবহার করতে পারেন। যদি একটি কাজ নির্দিষ্ট সময়ে কঠোরভাবে সম্পাদন করতে হয়, BroadcastReceiver-এর সাথে AlarmManager ব্যবহার করা হয়। এইভাবে, Foreground Service দীর্ঘস্থায়ী ক্রমাগত অপারেশনের একটি সমাধান, সমস্ত ব্যাকগ্রাউন্ড পরিস্থিতির জন্য একটি সার্বজনীন সরঞ্জাম নয়।

  • WorkManager — রিবুট সমর্থন সহ বিলম্বিত এবং নিশ্চিত কাজের জন্য
  • JobScheduler — নেটওয়ার্ক এবং ব্যাটারি অবস্থা বিবেচনা করে কাজ শিডিউলের জন্য
  • AlarmManager — নির্দিষ্ট সময়ে কাজ সম্পাদনের জন্য
  • CoroutineWorker — করুটিন সমর্থন সহ ছোট ব্যাকগ্রাউন্ড অপারেশনের জন্য

সচরাচর জিজ্ঞাসিত প্রশ্ন

Android-এ Foreground Service কী?

Foreground Service হল একটি Android পরিষেবা যার স্টেটস বারে স্থায়ী বিজ্ঞপ্তি রয়েছে যা ব্যবহারকারীর দৃশ্যমান দীর্ঘস্থায়ী কাজ সম্পাদন করে। এর উচ্চ বেঁচে থাকার অগ্রাধিকার রয়েছে এবং Background Service-এর বিপরীতে, মেমরি কম হলে সিস্টেম এটি বন্ধ করে না।

Foreground Service কীভাবে Background Service থেকে আলাদা?

Foreground Service একটি বাধ্যতামূলক বিজ্ঞপ্তি প্রদর্শন করে, এর কোনো সময়সীমা নেই এবং সিস্টেম বন্ধ থেকে সুরক্ষিত। Background Service ব্যবহারকারীর অদৃশ্য, 10 মিনিট পর্যন্ত (API 26+) চলে এবং যেকোনো সময় Low Memory Killer দ্বারা বন্ধ হতে পারে।

Android 14-এ Foreground Service-এর কী কী প্রকার রয়েছে?

Android 14 9টি প্রকার নির্ধারণ করে: dataSync, mediaPlayback, location, camera, connectedDevice, phoneCall, microphone, health এবং remoteMessaging। প্রতিটি প্রকারের জন্য একটি সংশ্লিষ্ট অনুমতি এবং ম্যানিফেস্টে foregroundServiceType অ্যাট্রিবিউটের মাধ্যমে ঘোষণা প্রয়োজন।

startForeground সময়মতো কল না করলে কী হয়?

যদি পরিষেবা তৈরির 10 সেকেন্ডের মধ্যে startForeground() কল না করে (Android 14), সিস্টেম একটি ForegroundServiceDidNotStartInTimeException ব্যতিক্রম তৈরি করে এবং জোরপূর্বক পরিষেবা বন্ধ করে। অ্যাপ্লিকেশনটি ANR (Application Not Responding)ও পাবে যদি অপারেশন মূল থ্রেডে চলছে।

Foreground Service-এর বিজ্ঞপ্তি লুকানো কি সম্ভব?

না, Foreground Service-এর বিজ্ঞপ্তি প্রোগ্রাম্যাটিকভাবে লুকানো অসম্ভব। Android 9 (API 28) থেকে শুরু করে, বিজ্ঞপ্তি বাধ্যতামূলক এবং ব্যবহারকারী সোয়াইপ করে সরাতে পারেন না। এটি সরানোর একমাত্র উপায় হল stopForeground(REMOVE_NOTIFICATION) এবং stopSelf() কল করে পরিষেবা বন্ধ করা।

সারসংক্ষেপ

  • Foreground Service — স্টেটস বারে বাধ্যতামূলক বিজ্ঞপ্তি সহ Android পরিষেবা যা ব্যবহারকারীকে দৃশ্যমান
  • অগ্রাধিকার — Foreground Service কার্যকরভাবে সিস্টেম দ্বারা বন্ধ হয় না (ADJ 2), Background Service-এর বিপরীতে (ADJ 8+)
  • প্রকার — Android 14 প্রকার (dataSync, mediaPlayback, location, ইত্যাদি) এবং সংশ্লিষ্ট অনুমতি ঘোষণা প্রয়োজন
  • সীমাবদ্ধতা — Android 12+-এ ব্যাকগ্রাউন্ড থেকে লঞ্চ নিষিদ্ধ; কিছু পরিস্থিতির জন্য FOREGROUND_SERVICE_SPECIAL_USE প্রয়োজন
  • বিকল্প — WorkManager বিলম্বিত কাজের জন্য, JobScheduler শিডিউলিংয়ের জন্য, AlarmManager সঠিক সময়ের জন্য
  • কোড — বাধ্যতামূলক উপাদান: NotificationChannel, startForeground(), ম্যানিফেস্টে foregroundServiceType
  • Google Play — অ্যাপ্লিকেশন প্রকাশনার জন্য ঘোষিত প্রকার এবং প্রকৃত পরিষেবা ব্যবহারের মধ্যে সামঞ্জস্য প্রয়োজন

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন