অ্যান্ড্রয়েড অ্যাপ্লিকেশন ডেভেলপমেন্টে Background Process বা Service এবং Broadcast Receiver একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলো একসঙ্গে কাজ করতে পারে অ্যাপ্লিকেশনটির কার্যকারিতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে।
Service:
Service হলো একটি কম্পোনেন্ট যা ব্যাকগ্রাউন্ডে কাজ সম্পন্ন করতে ব্যবহৃত হয়। এটি UI ছাড়াই কাজ করে এবং প্রধানত লং-রানিং টাস্ক বা ব্যাকগ্রাউন্ড কার্যকলাপের জন্য ব্যবহৃত হয়, যেমন:
-
ডেটা সিঙ্ক করা।
-
API কল করা এবং ডেটা ডাউনলোড করা।
-
মিউজিক প্লেয়ার চালানো।
Service এর ধরণ:
-
Foreground Service:
-
ব্যবহারকারীকে নোটিফিকেশন দিয়ে জানানো হয় যে একটি সেবা চলছে।
-
যেমন, মিউজিক প্লেয়ার, ডাউনলোড ম্যানেজার।
-
Background Service:
-
এটি ব্যাকগ্রাউন্ডে কাজ করে এবং ব্যবহারকারীর সরাসরি নজরে আসে না।
-
অ্যান্ড্রয়েড 8.0 (Oreo) থেকে ব্যাকগ্রাউন্ডে চলা সার্ভিসের উপর সীমাবদ্ধতা আরোপ করা হয়েছে।
-
Bound Service:
-
এটি অ্যাপ্লিকেশনের অন্যান্য কম্পোনেন্টের সাথে সংযুক্ত থাকে এবং ইন্টারঅ্যাকশন করতে পারে।
Service তৈরি ও ব্যবহার:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Background Task
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Service শুরু করা:
Intent serviceIntent = new Intent(this, MyService.class);
startService(serviceIntent);
Broadcast Receiver:
Broadcast Receiver হলো একটি কম্পোনেন্ট যা অ্যান্ড্রয়েড সিস্টেম বা অন্য অ্যাপ্লিকেশন থেকে ব্রডকাস্ট করা মেসেজ গ্রহণ করে। এটি নির্দিষ্ট ইভেন্টের প্রতি প্রতিক্রিয়া জানাতে ব্যবহৃত হয়, যেমন:
-
ডিভাইস বুট হওয়া।
-
ব্যাটারি স্তর পরিবর্তন।
-
নেটওয়ার্ক কানেকশন পরিবর্তন।
Broadcast Receiver তৈরি ও ব্যবহার:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Handle broadcast message
}
}
Manifest ফাইলে রেজিস্টার করা:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
প্রোগ্রামেটিকভাবে রেজিস্টার করা:
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(myReceiver, filter);
Service এবং Broadcast Receiver এর সংযোগ:
Service এবং Broadcast Receiver একসঙ্গে কাজ করে বিভিন্ন কার্যক্রম সম্পাদন করতে পারে। উদাহরণস্বরূপ:
-
Broadcast Receiver এর মাধ্যমে Service শুরু করা:
-
যখন একটি নির্দিষ্ট ইভেন্ট ঘটে (যেমন BOOT_COMPLETED), তখন Broadcast Receiver সেই ইভেন্ট ধরে Service শুরু করতে পারে।
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, MyService.class);
context.startService(serviceIntent);
}
}
-
Service এর মাধ্যমে Broadcast পাঠানো:
-
Service থেকে Broadcast পাঠানো যেতে পারে Broadcast Receiver দ্বারা গ্রহণের জন্য।
Intent intent = new Intent("com.example.MY_CUSTOM_ACTION");
sendBroadcast(intent);
-
Real-time Communication:
-
Service থেকে কাজ সম্পন্ন করার পর Broadcast Receiver-এ একটি Broadcast পাঠিয়ে অ্যাপ্লিকেশনকে জানানো যেতে পারে।
সতর্কতা ও সীমাবদ্ধতা:
-
ব্যাটারি অপ্টিমাইজেশনের জন্য অ্যান্ড্রয়েড 8.0 (Oreo) এবং তার পরের সংস্করণে ব্যাকগ্রাউন্ড সার্ভিস এবং ব্রডকাস্ট রিসিভারে বেশ কিছু সীমাবদ্ধতা আছে।
-
WorkManager বা JobScheduler ব্যবহার করা ভালো বিকল্প হতে পারে যদি কাজটি সময়-নির্ভর হয়।
আপনার নির্দিষ্ট প্রজেক্ট বা কেস অনুযায়ী কোডের উদাহরণ এবং সমাধান প্রয়োজন হলে জানাতে পারেন।