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 मिनट में जागने की अनुमति देता है। जागने का समय उपयोगकर्ता के व्यवहार पर निर्भर करता है — सिस्टम विश्लेषण करता है कि वे एप्लिकेशन को कितनी बार खोलते हैं। उपयोगकर्ता Settings — General — 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें