Background Service — یہ کیا ہے، اقسام اور Android میں کیسے کام کرتا ہے

مصنف: IT Sectr اشاعت: 2026-03-27 مطالعے کا وقت: 8 منٹ

Background Service ایک Android کمپوننٹ ہے جو بغیر یوزر انٹرفیس کے پس منظر میں طویل کاروائیاں کرنے کے لیے ڈزائن کیا گیا ہے۔ Activity کے برخلاف، Service ایپ کے چھوٹے ہونے یا صارف کے دوسرے ایپ میں جانے کے بعد بھی کام کرتا رہتا ہے۔ Android Developers, 2026 کے مطابق، تین اقسام کی سروسسیں ہیں: Started Service، Bound Service اور Foreground Service، ہر ایک اپنے لائف سائیکل اور استعمال کے دائرے کے ساتھ۔

اہم نکات

  • Background Service بغیر UI کے پس منظر کے کاموں کے لیے ایک Android کمپوننٹ ہے، کسی بھی سرگرمی سے آزاد کام کرتا ہے۔
  • Started Service startService کے ذریعے شروع ہوتا ہے اور stopSelf کے ذریعے واضح طور پر روکنے تک چلتا ہے۔
  • Bound Service bindService کے ذریعے ایک کمپوننٹ سے منسلک ہوتا ہے اور جب تک کلائنٹ منسلک ہیں زندہ رہتا ہے۔
  • Foreground Service ایک مستقل اطلاع ڈسپلے کرتا ہے اور کم بیٹری پر سسٹم اسے ختم نہیں کرتا۔
  • Android 8 سے پس منظر کی سروسسوں کے پس منظر میں شروع کرنے پر سخت پابندیاں ہیں۔

Android میں Background Service کیا ہے؟

Background Service (یا صرف Service) Activity، BroadcastReceiver اور ContentProvider کے ساتھ ایک Android ایپلیکیشن کے چار بنیادی کمپوننٹوں میں سے ایک ہے۔ Activity کے برخلاف، Service میں کوئی بصری انٹرفیس نہیں ہی اور یہ ان کارروائیوں کو انجام دینے کے لیے ڈزائن کیا گیا ہے جو اس بات سے آزاد جاری رہنی چاہئیں کہ ایپ پیش منظر میں ہے یا نہیں۔

Service ایپلیکیشن کے مرکزی تھریڈ پر چلتا ہے، اس لیے اس کے اندر کائی بھی بلوکینگ کارروائی کے لیے الگ تھریڈ بنانے کی ضرورت ہے۔ ایسا نہیں کرنے پر سسٹم ANR (Application Not Responding) پھینک دےpگا۔ سادہ پس منظر کے کاموں کے لیے، Android IntentService فراہم کرتا ہے جو خود بخود ایک ورکر تھریڈ بناتا ہے۔ جدید مناصیب میں، مرکزی تھریڈ کو روکے بغیر غیر ہم زمان پروسیسنگ کے لیے Service کے اندر CoroutineScope کے ساتھ Kotlin کوروٹین استعمال کرنے کی سفارش کی جاتی ہے۔

Service کا بنیادی مقصد موسیقی چلانا، فائلیں ڈاؤن لوڈ کرنا، نیٹ ورک کی درخواستوں کو سنبالنا، ڈیٹا سنک کرنا اور دیگر وہ کام جو صارف کے ایپ سے نکلنے کے بعد بھی جاری رہنے چاہئیں۔ تاہم Android 8 سے، ڈیویلپرز کو پس منظر میں کام کی پابندیوں کو دھیان میں رکھتے ہوئے سروسسوں کی اقسام کے درمیان شعوری طور پر انتخاب کرنا چاہئے۔

Service کا لائف سائیکل کیسے کام کرتا ہے؟

Service کا اپنا لائف سائیکل ہہتا ہے جو Activity سے مختلف ہے۔ اس میں چار اهم طریقے شامل ہیں: onCreate، onStartCommand، onBind اور onDestroy۔ میمری لیک کے بغیر پس منظر کے کاموں کو صحیح طور پر لاگو کرنے کے لیے اس چکر کو سمجھنا ضروری ہے۔

onCreate اور onStartCommand

onCreate طریقۙ سروسس بننے پر ایک بار بلایا جاتا ہے۔ یہاں ٹائمر، ڈیٹابیس کنیکشن اور ساکٹ جیسے وسائل کو آغاز کیا جاتا ہے۔ onStartCommand طریقۙ ہر دفعہ startService بلائے جانے پر بلایا جاتا ہے، جو پہلے سے چل رہی سروسس کو احکام بھیجنے کی اجازت دےتا ہے۔ واپسی قیمت دوبارہ شروع کرنے پر سسٹم کے رویے کو طے کرتا ہے۔

kotlin
class DownloadService : Service() {

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

    override fun onStartCommand(
        intent: Intent?,
        flags: Int,
        startId: Int
    ): Int {
        downloadFile(intent?.getStringExtra("url"))
        return START_STICKY
    }

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

onBind اور onDestroy

onBind bindService کے ذریعے سروسس کو منسلک کرنے پر بلایا جاتا ہے اور کلائنٹ کے ساتھ باتچیت کے لیے ایک IBinder آبجیکٹ واپس کرتا ہے۔ یہ طریقۙ صرف Bound Service کے لیے استعمال ہوتا ہے۔ onDestroy سروسس کے ختم ہونے سے پہلے آخری کال ہے۔ یہاں سب وسائل آزاد کیے جاتے ہیں، تھریڈز روکی جاتے ہیں اور کام منسوخ کیے جاتے ہیں۔

پس منظر سروسسوں کی اقسام

Android تین اقسام کی Service فراہم کرتا ہے، ہر ایک اپنے منظرنامے کے لیے ڈزائن کیا گیا ہے۔ غلط قسم کا انتخاب ایپ کے غیر مستحکم رویے یا بیٹری کی کھپت کا سبب بن سکتا ہے۔

Started Service

Started Service startService کو کال کرکے شروع کیا جاتا ہے اور stopSelf یا stopService کو کال کرنے تک چلتا ہے۔ یہ ان کاموں کے لیے موزوں ہے جنہیں فوری انجام دینے کی ضرورت ہو: اینالیٹکس بھیجنا، ایک تصویر پر کاروائی کرنا، ایک فائل ڈاؤن لوڈ کرنا۔ اپنا کام مکمل کرنے کے بعد، سروسس خود بخود رک جاتا ہے۔

Bound Service

Bound Service ایک کلائنٹ-سرور انٹرفیس فراہم کرتا ہے، جو Activity، Fragment یا دوسرے کمپوننٹ کو سروسس کے ساتھ باتچیت کرنے کی اجازت دےتا ہے۔ سروسس تب تک زندہ رہتا ہے جب تک کم سے کم ایک کلائنٹ منسلک ہو۔ جب سب کلائنٹ علاقہ منتہی کر لیں، تو سروسس ختم ہو جاتا ہے۔ Bound Service ان کاموں کے لیے مفید ہے جنہیں دو طرفہ مواصلات کی ضرورت ہو: موسیقی پلیئر، نیویگیشن۔

Foreground Service

Foreground Service ایک Started Service ہے جس میں سٹیٹس بار میں ایک مستقل اطلاع ہوتی ہے۔ سسٹم ایسی سروسس کو متحرک سمجھتا ہے اور کم میمری ہونے پر بھی اسے ختم نہیں کرتا۔ Foreground Service موسیقی چلانے، آڈیو ریکارڈنگ، لوکیشن ٹریکنگ اور صارف کے لیے اہم دیگر کاموں کے لیے لازمی ہے۔

پیرامیٹرStartedBoundForeground
شروعstartServicebindServicestartForeground
زندگیstopSelf تکجب تک کلائنٹ ہیںstopForeground تک
اطلاعنہیںنہیںلازمی
ختم کیا جا سکتا ہےہاںہاںنہیں
مثالڈاؤن لوڈپلیئرموسیقی

Service بنانا اور چلانا

Service بنانا Service سے وراثت پانے والی کلاس کا اعلان کرنے اور اسے AndroidManifest.xml میں رجسٹر کرنے سے شروع ہوتا ہے۔ مینفیسٹ میں رجسٹریشن کے بغیر، سسٹم سروسس شروع نہیں کر سکے گا، اور startService کی کائی بھی کال استثنا کا سبب بنے گی۔

kotlin
// AndroidManifest.xml میں رجسٹریشن
@SuppressLint("ForegroundServiceType")
class SyncService : Service() {

    override fun onStartCommand(
        intent: Intent?,
        flags: Int,
        startId: Int
    ): Int {
        startForeground(
            NOTIFICATION_ID,
            createNotification()
        )
        performSync(intent)
        return START_NOT_STICKY
    }
}

Activity یا Fragment سے سروسس شروع کرنے کے لیے، سروسس کلاس کے واضح حوالے کے ساتھ ایک Intent استعمال کیا جاتا ہے۔ Android 8 سے شروع کرتے ہوئے، Foreground Service کو مینفیسٹ میں FOREGROUND_SERVICE اجازت کی ضرورت ہے۔

kotlin
// Started Service شروع کرنا
val intent = Intent(this, SyncService::class.java)
intent.putExtra("action", "sync")
startService(intent)

// Foreground Service شروع کرنا (Android 8+)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    startForegroundService(intent)
} else {
    startService(intent)
}

Android 8+ میں پابندیاں

Android 8 سے شروع کرتے ہوئے (API 26)، Google نے پس منظر کی سروسسوں پر سخت پابندیاں لاگو کی ہیں۔ پس منظر سروسس کا آغاز (جب ایپ پیش منظر میں نہیں ہے) صرف مستثنیاتی معاملات میں اجازت ہے: پش نوٹیفیکیشن موصول ہونے پر، ڈیوائس بوٹ کے بعد، یا JobScheduler کے ذریعے۔

ان طویل کاموں کے لیے جنہیں فوری عمل کرانے کی ضرورت نہیں، WorkManager یا JobScheduler استعمال کرنے کی سفارش کی جاتی ہے۔ اگر ایک ایپ کو واقعی میں چلنے والی سروسس کی ضرورت ہے، تو واحد راستا Foreground Service ہے جس میں صارف کو نظر آنے والی اطلاع ہو۔ پس منظر میں بغیر اطلاع کے سروسس شروع کرنا سسٹم کے ذریعے نظرانداز کیا جائے گا۔

پیچھے کی مطابقت کے لیے JobIntentService

JobIntentService ایک مختص کلاس ہے جو Android 5+ پر کام کرنے کے لیے سپورٹ لائبریری میں ظاہر ہوا تھا۔ یہ IntentService (خود کار کرنے والا تھریڈ، مسلسل پروسیسنگ) کے رویے کو JobScheduler کے ذریعے شیڈیولنگ کے ساتھ میلاتا ہے۔ Android 8+ پر، JobIntentService اندر ہی JobScheduler استعمال کرتا ہے، اور پرانے ورژنز پر ایک عام Service۔ یہ اضافی Android ورژن چیک کے بغیر پس منظر کے کاموں کی یکسان ہینڈلنگ کی اجازت دےتا ہے۔

kotlin
class UploadJobService : JobIntentService() {

    companion object {
        private const val JOB_ID = 1000

        fun enqueueWork(context: Context, work: Intent) {
            enqueueWork(
                context,
                UploadJobService::class.java,
                JOB_ID,
                work
            )
        }
    }

    override fun onHandleWork(intent: Intent) {
        val fileUri = intent.getStringExtra("file_uri")
        // پس منظر کے تھریڈ پر چلتا ہے
        uploadFile(fileUri)
    }
}

Service میں میمری کا انتظام اور لیکیج

Background Service کے ساتھ کام کرتے وقت ایک عام مسئلہ میمری لیکیج ہے۔ چونکہ Service Activity سے زیادہ دےر تک زندہ رہ سکتا ہے، Service کے اندر Activity کے حوالے (listener، callback یا broadcast کے ذریعے) UI کمپوننٹوں کے کڈرے کو جمع کرنے سے روکتے ہیں۔ Service-سے-UI مواصلات کے لیے WeakReference، ViewModel یا LiveData استعمال کرنے کی سفارش کی جاتی ہے۔ onDestroy میں، سب سبسکرائیپشنز منسوخ کرنا، تھریڈز روکنا اور کرسرز بند کرنا نہ بھولیں۔

Service بنام WorkManager: کب کیا چنیں

Background Service اور WorkManager کے درمیان انتخاب منظرنامے پر منحصر ہے۔ Service ان کاموں کے لیے موزوں ہے جو فوری اور مسلسل چلنے چاہئیں: موسیقی چلانا، آڈیو ریکارڈنگ، GPS ٹریکنگ۔ WorkManager ملتوی گارنٹیڈ کاموں کے لیے بہتر ہے: سنک، اینالیٹکس بھیجنا، لاگ اپ لوڈ کرنا۔ WorkManager ڈیوائس ری بوٹ پر بھی زندہ رہتا ہے، جبکہ Service نہیں رہتا۔ Service اطلاع کے ساتھ Foreground ہو سکتا ہے، جبکہ WorkManager پس منظر میں خاموشی سے کام کرتا ہے۔ عمل میں، ڈیویلپر دونوں طریقوں کو میلاتے ہیں: صارف کے لیے اہم کاموں کے لیے Foreground Service اور پس منظر کی دیکھ بھال کے لیے WorkManager۔

Android 12 نے android:foregroundServiceType فلیگ متعارف کرایا ہے، جس میں سروسس کی قسم متعین کرنا لازمی ہے: dataSync, camera, connectedDevice, location, mediaPlayback اور دیگر۔ غلط قسم کی وضاحت شروع پر استثنا کا سبب بنتی ہے۔ یہ مشق Background Service کو صارف اور سسٹم دونوں کے لیے زیادہ شفاف بناتی ہے۔

AndroidManifest میں Service رجسٹریشن کی مثال

مینفیسٹ میں Service کی مناسب رجسٹریشن میں exported وضاحت (باہری ایپس کے لیے رسائی،الادہ)، foregroundServiceType (Android 12+ پر پس منظر سروسس کی قسم) اور اجازت شامل ہے۔ Bound Service کے لیے، JobIntentService کے لیے android:permission="android.permission.BIND_JOB_SERVICE" کا اعلان بھی کرنا ضروری ہے۔ مینفیسٹ میں رجسٹریشن کے بغیر، startService یا bindService کی کائی بھی کال استثنا کا سبب بنے گی، اس لیے Service سے متعلق مسائل کی تشخیص میں پہلا قدم مینفیسٹ کی جانچ ہے۔

اکثر پوچھے جانے والے سوالات

Service بحسب طرق کس تھریڈ پر چلتا ہے؟

Service ایپلیکیشن کے مرکزی تھریڈ (UI Thread) پر چلتا ہے۔ onStartCommand یا onHandleIntent کے اندر کائی بھی بلوکینگ کارروائی کو الگ تھریڈ یا کوروٹین میں لے جانا چاہئے، ورنہ سسٹم 5 سیکنڈ کے بعد ANR فینک کر دے گا۔

IntentService ایک عام Service سے کیسے مختلف ہے؟

IntentService Service کی ایک ذیلی کلاس ہے جو خود بخود ایک ورکر تھریڈ بناتا ہے اور احکام کو مسلسل طور پر پروسیس کرتا ہے۔ آخری کام مکمل کرنے کے بعد، IntentService خود بخود رک جاتا ہے۔ Android 8 سے شروع کرتے ہوئے، IntentService کو JobIntentService یا WorkManager کے حق میں میٹرا گرا سمجھا جاتا ہے۔

کیا آپ Android 12 پر ایپ کے پس منظر میں ہونے پر Service شروع کر سکتے ہیں؟

Android 12 پر پس منظر سے Started Service شروع کرنا ممنوع ہے۔ مستثنیٰ مینفیسٹ میں متعین foregroundServiceType اور ایک والد اطلاع کے ساتھ Foreground Service ہے۔ اعلی ترجیح کا FCM پیغام موصول ہونے کے بعد ایک مختصر شروع بھی جائز ہے۔

Service سے Activity میں ڈیٹا کیسے منتقل کیا جائے؟

تین طریقے ہیں: مقامی براڈکاسٹ کے ساتھ BroadcastReceiver، Handler کے ذریعے Messenger میکانزم، اور مشترک ViewModel کے ساتھ MVVM آرکیٹیکچر میں LiveData/Flow۔ Bound Service کے لیے، IBinder کو راست طریقے کی کالوں کے ساتھ استعمال کیا جاتا ہے۔

اگر Service چل رہا تھا تو ایپ کے دوبارہ شروع ہونے پر کیا ہوتا ہے؟

اگر Service کو START_STICKY فلیگ کے ساتھ شروع کیا گیا تھا، تو کم میمری کی وجہ سے پروسیس ختم ہونے کے بعد سسٹم اسے دوبارہ شروع کرے گا۔ START_NOT_STICKY فلیگ کا مطلب ہے کہ سسٹم سروسس کو دوبارہ شروع نہیں کرے گا۔ START_REDELIVER_INTENT START_STICKY کے مشابے ہے لیکن آخری Intent کو پہنچاتا ہے۔

خلاصہ

  • Background Service بغیر UI کے پس منظر کے کاموں کے لیے ایک Android کمپوننٹ ہے، مرکزی تھریڈ پر چلتا ہے۔
  • تین اقسام — Started، Bound اور Foreground — ایک بار کے کاموں سے لے کر اطلاعات کے ساتھ مسلسل کام تک مختلف مناظر کو شامل کرتے ہیں۔
  • لائف سائیکل میں onCreate، onStartCommand، onBind اور onDestroy شامل ہیں — onDestroy میں وسائل آزاد کرنا اہم ہے۔
  • Foreground Service واحد ایسی قسم ہے جو Android 8+ پر سسٹم کے ذریعے ختم کیے جانے کے خطرے کے بغیر قابل بھروسہ کام کرتی ہے۔
  • WorkManager اور JobScheduler ملتوی اور گارنٹیڈ پس منظر کے کاموں کے لیے افضل ہیں۔
  • Service کا استعمال نہ کریں ان کاموں کے لیے جنہیں عین وقت پر عمل کرانے کی ضرورت ہو — اس کے بجاے AlarmManager استعمال کریں۔
  • ہمیشہ رجسٹر کریں Service کو AndroidManifest.xml میں اور Android 12+ پر android:foregroundServiceType متعین کریں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں