কম্পিউটার টিউটোরিয়াল

Android Service-এ START_STICKY বাস্তবায়ন এবং ব্যাখ্যা

START_STICKY রিটার্ন টাইপের ব্যবহার এবং ব্যাখ্যা

Android Service-এ onStartCommand()-এর রিটার্ন টাইপ নির্ধারণ করে সিস্টেম সার্ভিস কিল করলে কী হবে। START_STICKY সবচেয়ে সাধারণ এবং ডিফল্ট বিয়হেভিয়র।

START_STICKY কী?

  • যদি সিস্টেম মেমরি ফাঁকিয়ে সার্ভিস কিল করে, তবে সিস্টেম সার্ভিসটি রিস্টার্ট করবে
  • রিস্টার্টের সময় onStartCommand()-এ intent = null আসবে
  • ইউজার ইন্টারঅ্যাকশন ছাড়াই স্বয়ংক্রিয় রিস্টার্ট হয়
  • মিডিয়া প্লেয়ার, লোকেশন ট্র্যাকার এর মতো গুরুত্বপূর্ণ ব্যাকগ্রাউন্ড টাস্কের জন্য উপযুক্ত

অন্যান্য রিটার্ন টাইপ সমূহ

রিটার্ন টাইপবিবরণ
START_STICKYকিল হলে রিস্টার্ট, intent null
START_NOT_STICKYকিল হলে রিস্টার্ট করবে না, শুধু পেন্ডিং ইন্টেন্ট থাকলে
START_REDELIVER_INTENTকিল হলে রিস্টার্ট এবং শেষ intent রিডেলিভার করবে

বাস্তবায়ন উদাহরণ

package com.example.myapplication;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

public class StickyService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d("StickyService", "onCreate called");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        String action = (intent != null) ? intent.getAction() : "RESTARTED_BY_SYSTEM";
        Log.d("StickyService", "onStartCommand: " + action);
        Toast.makeText(this, "Service: " + action, Toast.LENGTH_SHORT).show();
        return START_STICKY; // কী পয়েন্ট
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d("StickyService", "onDestroy called");
        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();
    }
}

টেস্টিং পদ্ধতি

  1. অ্যাপ রান করুন, সার্ভিস স্টার্ট করুন
  2. Developer Options → "Don't keep activities" অন করুন
  3. অথবা ADB কমান্ড দিন: adb shell kill [pid]
  4. Logcat-এ "RESTARTED_BY_SYSTEM" মেসেজ দেখুন

সতর্কতা

  • START_STICKY সার্ভিসকে "অমর" করে দেয় না - সিস্টেম অতিরিক্ত প্রেশার থাকলে পরমানেন্টলি কিল করতে পারে
  • অ্যান্ড্রয়েড ৮+ এ ব্যাকগ্রাউন্ড সার্ভিসে সীমাবদ্ধতা আছে, Foreground Service ভালো বিকল্প
  • WorkManager বা JobScheduler ব্যবহার করুন periódicos টাস্কের জন্য

Android Service-এ START_STICKY বাস্তবায়ন এবং ব্যাখ্যা Android Service-এ START_STICKY বাস্তবায়ন এবং ব্যাখ্যা Android Service-এ START_STICKY বাস্তবায়ন এবং ব্যাখ্যা Android Service-এ START_STICKY বাস্তবায়ন এবং ব্যাখ্যা

  1. অ্যান্ড্রয়েডে সিম সার্ভিস ইনফরমেশন (Service State) কীভাবে পেতে হয়?

  2. এন্ড্রয়েডে Volley ArrayList কাস্টম অবজেক্ট রিভার্স করার উপায়

  3. অ্যান্ড্রয়েডে লাইন আঁকা (Canvas এবং Paint ব্যবহার করে)

  4. অ্যান্ড্রয়েডে AlarmManager ব্যবহার করে সার্ভিস শুরু করার পদ্ধতি