Background Execution ایک ایسا طریقہ کار ہے جو موبائل ایپلیکیشن کوڈ کو اس وقت چلانے کی اجازت دیتا ہے جب ایپلیکیشن پیش منظر میں نہ ہو۔ اس طریقہ کار کے بغیر، سسٹم ایپلیکیشن کو کم سے کم کرنے پر معطل کر دیتا ہے۔ Apple، 2026 کے مطابق، iOS پس منظر کے وقت کو 30 سیکنڈ تک محدود کرتا ہے، جبکہ Android WorkManager اور Foreground Service کے ذریعے زیادہ لچکدار منظرنامے فراہم کرتا ہے۔
اہم نکات
Background Execution ایک ایپلیکیشن کی صلاحیت ہے کہ صارف کے اسے کم سے کم کرنے یا کسی دوسری ایپلیکیشن پر سوئچ کرنے کے بعد کوڈ چلاتی رہے۔ خصوصی طریقہ کار کے بغیر، موبائل OS پس منظر میں جانے کے چند سیکنڈ کے اندر ایپلیکیشن کو Suspended (معطل) حالت میں ڈال دیتا ہے، فعال ایپلیکیشنز کے لیے CPU اور میموری خالی کرتا ہے۔
موبائل ایپلیکیشن لائف سائیکل کی کئی حالتوں سے گزرتی ہے: Foreground (فعال)، Background (پس منظر میں)، Suspended (معطل) اور Terminated (ختم)۔ Background واحد حالت ہے جس میں ایپلیکیشن بغیر نظر آنے والے انٹرفیس کے کوڈ چلا سکتی ہے۔ iOS اور Android اس حالت میں مدت اور دستیاب آپریشنز کو مختلف طریقے سے بیان کرتے ہیں۔
ڈیٹا سنکرونائزیشن، مواد ڈاؤن لوڈ، Push اطلاع کی پروسیسنگ، پس منظر میں جغرافیائی محل وقوع اور آڈیو پلے بیک کے لیے پس منظر میں عملدرآمد ضروری ہے۔ سنکرونائزیشن سب سے عام منظرنامہ ہے: ایپلیکیشن صارف کی شمولیت کے بغیر سرور کو ڈیٹا بھیجتی ہے یا اپ ڈیٹس ڈاؤن لوڈ کرتی ہے۔
پس منظر میں عملدرآمد کی حدود تین عوامل کی وجہ سے ہیں: توانائی کی کھپت، ڈیوائس کی کارکردگی اور صارف کی رازداری۔ CPU اور ریڈیو ماڈیولز (Wi-Fi، سیلولر ڈیٹا) سب سے زیادہ توانائی کھپت کرتے ہیں — ہر پس منظر کا عمل بیٹری کی زندگی کو کم کرتا ہے۔
Google کے مطالعے سے پتہ چلتا ہے کہ ہر 5 منٹ میں پس منظر کے کام چلانے والی ایپلیکیشنز ایک دن میں ڈیوائس کی بیٹری کی زندگی کو 20–30% تک کم کر دیتی ہیں۔ یہاں تک کہ ایک گھنٹے کی فریکوئنسی کے ساتھ بہتر کردہ پس منظر کے آپریشنز بھی نمایاں اثر ڈالتے ہیں اگر ایسی دو سے زیادہ ایپلیکیشنز ہوں۔
ہر پس منظر کی ایپلیکیشن RAM لیتی ہے۔ RAM کی کمی پر، سسٹم میموری سے ایپلیکیشنز کو ہٹا دیتا ہے، جس سے صارف کی واپسی پر دوبارہ شروع کرنا پڑتا ہے۔ iOS Jetsam الگورتھم استعمال کرتا ہے — میموری کی حد سے تجاوز کرنے پر پس منظر کے عمل کو زبردستی ختم کرنے کا طریقہ کار۔ Android اسی اصول کے ساتھ LMK (Low Memory Killer) استعمال کرتا ہے۔
Android 10 اور iOS 13 سے، سسٹم ایپلیکیشنز سے پس منظر کے کام کے مقصد کا اعلان کرنے کا تقاضا کرتا ہے۔ Android نے پس منظر میں Broadcast Receiver شروع کرنے پر پابندیاں لگائی ہیں۔ iOS پروجیکٹ کی Capabilities میں Background Mode بتانے کا تقاضا کرتا ہے۔ صارف ترتیبات میں کسی بھی ایپلیکیشن کے لیے پس منظر میں عملدرآمد بند کر سکتا ہے۔
| OS | ورژن | پابندی | اثر |
|---|---|---|---|
| Android | 8.0 | IMPLICIT_BROADCAST ممنوع | 67% پس منظر Broadcast خراب |
| Android | 9.0 | Doze بہتر | نیٹ ورک کالز محدود |
| Android | 12+ | Foreground Service محدود | پس منظر سے لانچ ممنوع |
| iOS | 7+ | Background App Refresh | متواتر اپ ڈیٹ ونڈوز |
| iOS | 13+ | BGTaskScheduler | عملدرآمد کے بجائے شیڈولنگ |
Android پس منظر میں عملدرآمد کے لیے کئی طریقہ کار فراہم کرتا ہے، ہر ایک کام کے مختلف زمرے کو حل کرتا ہے۔ WorkManager مؤخر اور متواتر کاموں کے لیے تجویز کردہ API ہے۔ Foreground Service نظر آنے والی اطلاع کے ساتھ فوری عملدرآمد کے لیے ہے۔ JobScheduler WorkManager کا نچلی سطح کا متبادل ہے۔
WorkManager Android Jetpack کا حصہ ہے، جو ڈیوائس ریبوٹ کے بعد بھی تکمیل کی ضمانت کے ساتھ پس منظر کے کاموں کا عملدرآمد فراہم کرتا ہے۔ API نیٹ ورک کی حالت، بیٹری کی سطح اور Doze موڈ کو مدنظر رکھتے ہوئے بہترین عملدرآمد کا وقت منتخب کرتا ہے۔ WorkManager API 14+ کے ساتھ مطابقت رکھتا ہے اور متروک AlarmManager اور JobScheduler کی جگہ لیتا ہے۔
جب ایپلیکیشن کو صارف کو نظر آنے والا کام انجام دینے کی ضرورت ہو (موسیقی چلانا، جغرافیائی محل وقوع ریکارڈ کرنا)، Foreground Service استعمال کیا جاتا ہے۔ سروس اسٹیٹس بار میں مستقل اطلاع دکھاتی ہے اور اس کی ترجیح زیادہ ہوتی ہے — سسٹم کام مکمل ہونے تک اسے ختم نہیں کرے گا۔ Android 13 سے، POST_NOTIFICATIONS کی اجازت درکار ہے۔
Android 6.0 سے، ڈیوائس بیکار ہونے پر Doze موڈ میں داخل ہوتی ہے۔ اس موڈ میں، نیٹ ورک آپریشنز، سنکرونائزیشن اور JobScheduler مؤخر کر دیے جاتے ہیں۔ WorkManager خود بخود Doze کے مطابق ڈھل جاتا ہے — کام اگلی Maintenance Window کے دوران انجام پاتے ہیں جب ڈیوائس دیکھ بھال کے لیے جاگتی ہے۔
iOS پس منظر میں عملدرآمد کے لیے زیادہ سخت طریقہ کار اپناتا ہے۔ Background App Refresh متواتر ڈیٹا اپ ڈیٹ کے لیے بنیادی طریقہ کار ہے۔ BGTaskScheduler سسٹم کی حالت کی بنیاد پر کاموں کو شیڈول کرنے کے لیے API ہے۔ طویل آپریشنز کے لیے Background Modes دستیاب ہیں: audio، location، voip، fetch اور processing۔
Background App Refresh ایپلیکیشن کو ڈیٹا سنکرونائز کرنے کے لیے ہر 15–30 منٹ میں جاگنے کی اجازت دیتا ہے۔ جاگنے کا وقت صارف کے رویے پر منحصر ہے — سسٹم تجزیہ کرتا ہے کہ وہ ایپلیکیشن کتنی بار کھولتے ہیں۔ صارف ترتیبات — جنرل — Background App Refresh میں انفرادی ایپلیکیشنز کے لیے یہ فیچر بند کر سکتے ہیں۔
iOS 13 سے، BGTaskScheduler نے متروک performFetch اور beginBackgroundTask کی جگہ لے لی ہے۔ ایپلیکیشن ایک شناخت کنندہ اور کم سے کم وقفہ کے ساتھ کام رجسٹر کرتی ہے، اور سسٹم بہترین عملدرآمد کا وقت طے کرتا ہے۔ کام دو قسموں میں تقسیم ہیں: BGProcessingTask (طویل، 10+ منٹ) اور BGAppRefreshTask (مختصر، 30 سیکنڈ تک)۔
iOS پس منظر کے کاموں کے عملدرآمد کے لیے محدود وقت مختص کرتا ہے — BGAppRefreshTask کے لیے 30 سیکنڈ تک اور BGProcessingTask کے لیے 10 منٹ تک۔ حد سے تجاوز کرنے پر، سسٹم زبردستی کام ختم کر دیتا ہے۔ ڈیولپر کو درمیانی نتائج محفوظ کرنے کے لیے expiration handler کو کال کرنا چاہیے۔
آئیے WorkManager استعمال کرتے ہوئے Android پر پس منظر میں عملدرآمد کے عملی نفاذ کو دیکھتے ہیں۔ نیٹ ورک کی حالت سے آگاہی کے ساتھ ہر 8 گھنٹے میں ڈیٹا سنکرونائزیشن کی مثال۔ WorkManager ڈیوائس ریبوٹ کے بعد بھی کام کے عملدرآمد کی ضمانت دیتا ہے۔
class SyncWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
return try {
syncDataToServer()
Log.d("Sync", "ڈیٹا سنکرونائز ہو گیا")
Result.success()
} catch (e: Exception) {
Result.retry()
}
}
}
// ہر 8 گھنٹے میں متواتر کام چلائیں
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresCharging(false)
.build()
val syncRequest = PeriodicWorkRequestBuilder<SyncWorker>(
8, TimeUnit.HOURS
).setConstraints(constraints).build()
WorkManager.getInstance(context).enqueue(syncRequest)
صارف کو نظر آنے والے طویل آپریشنز کے لیے، Foreground Service استعمال کریں۔ اطلاع میں پیش رفت کے ساتھ فائل ڈاؤن لوڈ کی مثال۔ سروس ایک اطلاع کے ساتھ startForeground() کال کرتی ہے جسے ہٹایا نہیں جا سکتا۔ ڈاؤن لوڈ مکمل ہونے پر — stopForeground(STOP_FOREGROUND_REMOVE)۔
class DownloadService : Service() {
override fun onStartCommand(intent: Intent?, flags: Int, id: Int): Int {
startForeground(NOTIFICATION_ID, createNotification())
downloadFile()
stopForeground(STOP_FOREGROUND_REMOVE)
stopSelf()
return START_NOT_STICKY
}
private fun createNotification(): Notification {
return NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("فائل ڈاؤن لوڈ کریں")
.setSmallIcon(android.R.drawable.ic_download)
.build()
}
}
iOS پر، پس منظر میں عملدرآمد BGTaskScheduler کے ذریعے ترتیب دیا جاتا ہے۔ مواد کی اپ ڈیٹ کے کام کو رجسٹر اور انجام دینے کی مثال۔ ایپلیکیشن کو Info.plist میں کام کا شناخت کنندہ رجسٹر کرنا ہوگا اور submit کال کرنا ہوگا جب کام شیڈول کیا جانا چاہیے۔
import BackgroundTasks
func registerBackgroundTask() {
BGTaskScheduler.shared.register(
forTaskWithIdentifier: "com.app.refresh",
using: nil
) { task in
self.handleAppRefresh(task: task as! BGAppRefreshTask)
}
}
func scheduleAppRefresh() {
let request = BGAppRefreshTaskRequest(
identifier: "com.app.refresh"
)
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
try? BGTaskScheduler.shared.submit(request)
}
func handleAppRefresh(task: BGAppRefreshTask) {
scheduleAppRefresh()
task.expirationHandler = {
// درمیانی ڈیٹا محفوظ کریں
cacheCurrentState()
}
fetchLatestData {
task.setTaskCompleted(success: true)
}
}
طویل آپریشنز (کیشے صفائی، ڈیٹا پروسیسنگ) کے لیے، BGProcessingTask استعمال کریں۔ سسٹم عملدرآمد کے لیے 10 منٹ تک دیتا ہے۔ صرف اس وقت چلتا ہے جب ڈیوائس چارج ہو رہی ہو اور Wi-Fi سے منسلک ہو۔ Info.plist میں علیحدہ شناخت کنندہ اور register(forTaskWithIdentifier:) کے ذریعے رجسٹریشن درکار ہے۔
func scheduleProcessing() {
let request = BGProcessingTaskRequest(
identifier: "com.app.cleanup"
)
request.requiresExternalPower = true
request.requiresNetworkConnectivity = true
request.earliestBeginDate = Date(timeIntervalSinceNow: 24 * 60 * 60)
try? BGTaskScheduler.shared.submit(request)
}
Android اور iOS پس منظر میں عملدرآمد کے فلسفے میں بنیادی طور پر مختلف ہیں۔ Android زیادہ کنٹرول کے ساتھ لچکدار اوزار فراہم کرتا ہے لیکن ڈیولپر سے صحیح API منتخب کرنے کا تقاضا کرتا ہے۔ iOS صلاحیتوں کو محدود کرتا ہے لیکن صارف کے لیے مستحکم کارکردگی اور بیٹری کی زندگی کی ضمانت دیتا ہے۔
| معیار | Android | iOS |
|---|---|---|
| تجویز کردہ API | WorkManager | BGTaskScheduler |
| زیادہ سے زیادہ کام کا وقت | لا محدود (Foreground Service) | 30 سیکنڈ / 10 منٹ (processing) |
| متواتر کام | ہاں، PeriodicWorkRequest کے ذریعے | ہاں، BGAppRefreshTask کے ذریعے |
| عملدرآمد کی ضمانت | ہاں، ریبوٹ کے بعد بھی | نہیں — سسٹم فیصلہ کرتا ہے کب |
| پس منظر میں نیٹ ورک تک رسائی | Doze موڈ سے محدود | background config کے ساتھ URLSession کے ذریعے |
| پس منظر میں جغرافیائی محل وقوع | Foreground Service + اجازت | Background Mode location + NSLocation |
| پس منظر میں آڈیو | میڈیا اطلاع کے ساتھ Foreground Service | Background Mode audio + AVAudioSession |
WorkManager ان کاموں کے لیے بہترین ہے جو ایپلیکیشن کی حالت سے قطع نظر مکمل ہونے چاہئیں: ڈیٹا سنکرونائزیشن، تجزیات بھیجنا، قطار پروسیسنگ۔ API ضمانت دیتا ہے ڈیوائس بند ہونے کے بعد بھی عملدرآمد — کام بوٹ کے بعد دوبارہ شیڈول ہو جاتا ہے۔
BGTaskScheduler ان کاموں کے لیے موزوں ہے جو سسٹم کسی بھی آسان وقت پر انجام دے سکتا ہے: نیا مواد ڈاؤن لوڈ کرنا، ویجیٹ اپ ڈیٹ کرنا، کیشے صاف کرنا۔ فوری کاموں کے لیے موزوں نہیں — اگر ڈیوائس Doze میں ہو یا بیٹری کم ہو تو سسٹم کام میں تاخیر کرتا ہے۔
اکثر پوچھے گئے سوالات
Background Execution ایک عمومی تصور ہے جو پس منظر میں چلنے والے کسی بھی کوڈ کو بیان کرتا ہے۔ Background Modes ایک مخصوص iOS طریقہ کار ہے جو ایپلیکیشن کو پس منظر میں مخصوص اقسام کے آپریشنز (آڈیو، جغرافیائی محل وقوع، VoIP، fetch) کرنے کی اجازت دیتا ہے۔ Android Foreground Service کی اقسام کے ذریعے اسی طرح کا طریقہ استعمال کرتا ہے۔
iOS پر، یہ BGAppRefreshTask کے لیے معیاری حد ہے۔ حد پہنچنے پر سسٹم زبردستی کام ختم کر دیتا ہے۔ Android پر، ایسی ہی صورت حال اس وقت ہوتی ہے جب ایپلیکیشن WorkManager یا Foreground Service استعمال نہ کرے — ایک عام Service پس منظر میں جانے کے بعد سسٹم کے ذریعے ختم کر دی جاتی ہے۔
Android پر، WorkManager استعمال کریں — یہ ریبوٹ کے بعد بھی عملدرآمد کی ضمانت دیتا ہے۔ iOS پر، عملدرآمد کی ضمانت نہیں دی جا سکتی — سسٹم فیصلہ کرتا ہے کہ کام کب چلانا ہے۔ عملدرآمد کو یقینی بنانے کا واحد طریقہ صارف کو نظر آنے والے اشارے کے ساتھ Background Modes (audio, location) استعمال کرنا ہے۔
iOS پر، UIApplication.shared.backgroundRefreshStatus کال کریں — حالت .available، .denied یا .restricted۔ Android پر، بیٹری کی اصلاح سے استثنیٰ چیک کرنے کے لیے PowerManager.isIgnoringBatteryOptimizations() استعمال کریں۔ WorkManager کے لیے چیک کی ضرورت نہیں — API خود سسٹم کی پابندیوں کو ہینڈل کرتا ہے۔
Push اطلاعات پس منظر کے کوڈ کے بغیر اعمال کو متحرک کرنے کا بنیادی طریقہ کار ہیں۔ iOS پر، VoIP کے لیے PushKit اور ڈیٹا اپ ڈیٹ کے لیے Silent Push دستیاب ہیں۔ Android پر — High Priority FCM اور Notification Trampoline۔ Foreground Service کے ذریعے WebSockets ریئل ٹائم ایپلیکیشنز کے لیے ایک متبادل ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں