डेटा लोड करना, कंटेंट सिंक्रोनाइज़ेशन, एनालिटिक्स भेजना — कई कार्यों में उपयोगकर्ता की सक्रिय भागीदारी की आवश्यकता नहीं होती। हालांकि, मोबाइल डिवाइस बैटरी बचाने और प्रदर्शन बनाए रखने के लिए बैकग्राउंड कार्य को सीमित करते हैं। बैकग्राउंड टास्क (background tasks) वे तंत्र हैं जो ऐप को कोड निष्पादित करने की अनुमति देते हैं जब उपयोगकर्ता उसे नहीं देख रहा हो। इस लेख में हम WorkManager, BGTaskScheduler, Foreground Service और Doze Mode की विशेषताओं पर चर्चा करेंगे। अधिक जानकारी के लिए आधिकारिक WorkManager दस्तावेज़ देखें।
मुख्य बिंदु
बैकग्राउंड टास्क कोई भी कोड है जो तब चलता है जब ऐप फोरग्राउंड (सक्रिय स्क्रीन) में नहीं होता। इसमें शामिल हो सकता है: सर्वर के साथ आवधिक डेटा सिंक्रोनाइज़ेशन, बड़ी फ़ाइलें डाउनलोड करना, push सूचनाओं को प्रोसेस करना, जियोलोकेशन ट्रैकिंग, विजेट अपडेट करना। प्रत्येक प्लेटफॉर्म की बैकग्राउंड कार्य पर अपनी सीमाएँ हैं: iOS अधिक सख्त है (10–30 मिनट बैकग्राउंड समय), Android अधिक उदार है लेकिन संस्करण 9 से नियम कड़े कर दिए हैं।
बैकग्राउंड टास्क की आर्किटेक्चर तीन स्तरों पर बनी है: (1) तत्काल कार्य — अभी निष्पादित होते हैं (Foreground Service); (2) विलंबित कार्य — उपयुक्त परिस्थितियों में निष्पादित होते हैं (WorkManager, BGTaskScheduler); (3) आवधिक कार्य — निर्धारित अंतराल पर दोहराए जाते हैं। सही स्तर चुनना यह निर्धारित करता है कि कार्य समय पर पूरा होगा या नहीं और क्या इससे ऐप स्टोर द्वारा अस्वीकृति होगी।
दोनों प्लेटफॉर्म पर, Google/Apple बैकग्राउंड में सीधे थ्रेड प्रबंधित करने के बजाय डिक्लेरेटिव API का उपयोग करने की दृढ़ता से अनुशंसा करते हैं। Android पर WorkManager और iOS पर BGTaskScheduler सिस्टम को ऐप्स के बीच बैकग्राउंड कार्य को इष्टतम रूप से वितरित करने, ऊर्जा बचाने के लिए कार्यों को समूहित करने की अनुमति देते हैं। IT Sectr में, हम हमेशा अपडेट की आवृत्ति और तात्कालिकता की आवश्यकताओं का विश्लेषण करके बैकग्राउंड आर्किटेक्चर डिज़ाइन करना शुरू करते हैं।
iOS बैकग्राउंड कार्य के लिए कई तंत्र प्रदान करता है। Background Fetch — सिस्टम द्वारा निर्धारित अंतराल पर आवधिक कंटेंट अपडेट (डेवलपर द्वारा नहीं)। ऐप को नया डेटा डाउनलोड करने के लिए ~30 सेकंड की विंडो मिलती है। Background Fetch Capabilities → Background Modes → Background Fetch के माध्यम से सक्षम किया जाता है और AppDelegate में कार्यान्वित किया जाता है: application(_:performFetchWithCompletionHandler:).
BGTaskScheduler iOS 13+ के लिए आधुनिक API है, जो Background Fetch को बदलता है। डेवलपर एक पहचानकर्ता के साथ कार्य पंजीकृत करता है, और सिस्टम इसे उपयुक्त परिस्थितियों में चलाता है। BGAppRefreshTask — छोटे कंटेंट अपडेट के लिए; BGProcessingTask — लंबे कार्यों के लिए (कैश सफाई, डेटाबेस सिंक्रोनाइज़ेशन)। कार्य ऐप लॉन्च पर पंजीकृत किए जाते हैं, और सिस्टम बैटरी स्थिति, नेटवर्क और उपयोगकर्ता गतिविधि को ध्यान में रखते हुए उनके निष्पादन को शेड्यूल करता है।
Background Modes — विशिष्ट परिदृश्यों के लिए बैकग्राउंड कार्य की अनुमति देने वाले मोड की सूची: Audio (बैकग्राउंड प्लेबैक), Location (GPS ट्रैकिंग), VoIP (PushKit के माध्यम से कॉल), BLE (ब्लूटूथ डिवाइस कनेक्शन), Processing (BGTaskScheduler के माध्यम से लंबे कार्य)। प्रत्येक मोड को App Store समीक्षा में औचित्य की आवश्यकता होती है। वास्तविक आवश्यकता के बिना मोड का उपयोग करना ऐप अस्वीकृति का एक सामान्य कारण है।
Significant Location Change — उन ऐप्स के लिए तंत्र जिन्हें स्थिर जियोलोकेशन की आवश्यकता नहीं है लेकिन महत्वपूर्ण उपयोगकर्ता आंदोलन (500 मीटर से अधिक) के बारे में जानना महत्वपूर्ण है। सिस्टम सेलुलर टॉवर बदलने पर ऐप को जगाता है। यह तंत्र स्थिर GPS ट्रैकिंग की तुलना में काफी बैटरी बचाता है।
Android बैकग्राउंड कार्यों के लिए API का सबसे समृद्ध सेट प्रदान करता है, लेकिन संस्करण 8.0 (API 26) से नियम सख्त हो गए हैं। WorkManager सभी प्रकार के बैकग्राउंड कार्यों के लिए Google का अनुशंसित समाधान है। WorkManager डिवाइस रीबूट के बाद भी कार्य निष्पादन की गारंटी देता है (BootReceiver के माध्यम से) और कार्य श्रृंखलाएँ, देखने योग्य LiveData/Flow और API 14 तक बैकवर्ड संगतता का समर्थन करता है।
WorkManager Worker का उपयोग करता है — doWork() विधि वाला एक आधार वर्ग। Constraints निष्पादन शर्तों को परिभाषित करता है: NetworkType.CONNECTED, BatteryNotLow, StorageNotLow। PeriodicWorkRequest — न्यूनतम 15 मिनट के अंतराल के साथ आवधिक कार्यों के लिए। WorkManager स्वचालित रूप से Doze Mode और App Standby के अनुकूल हो जाता है, कार्यों को रखरखाव विंडो में समूहित करता है। एक सरल Worker का उदाहरण:
class SyncWorker(
context: Context,
params: WorkerParameters
) : CoroutineWorker(context, params) {
override suspend fun doWork(): Result {
return try {
val repository =
Injection.provideRepository(applicationContext)
repository.syncData()
Result.success()
} catch (e: Exception) {
Result.retry()
}
}
}
// Запланировать задачу
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val syncRequest = OneTimeWorkRequestBuilder<SyncWorker>()
.setConstraints(constraints)
.build()
WorkManager.getInstance(context)
.enqueue(syncRequest)
JobScheduler — एक पुराना API (Android 5+, API 21)। यह निर्दिष्ट शर्तों (नेटवर्क, चार्जिंग, निष्क्रियता) के साथ कार्यों को शेड्यूल करता है। सीमा: यह डिवाइस रीबूट का समर्थन नहीं करता (BootReceiver चाहिए) और इसकी कोई देखने योग्य स्थिति नहीं है। JobScheduler लीगेसी प्रोजेक्ट्स में सरल कार्यों के लिए उपयुक्त है; नए प्रोजेक्ट्स के लिए WorkManager का उपयोग करें।
Foreground Service — एक सेवा जो उपयोगकर्ता एक स्थायी सूचना (ongoing notification) के माध्यम से देखता है। इसका उपयोग किया जाता है: संगीत प्लेबैक, GPS ट्रैकिंग, बड़ी फ़ाइलें डाउनलोड करने के लिए। Foreground Service की उच्च प्राथमिकता है — मेमोरी कम होने पर सिस्टम इसे नहीं मारेगा। Android 13 से शुरू, कुछ प्रकारों के लिए FOREGROUND_SERVICE_SPECIAL_USE अनुमति आवश्यक है। एक विकल्प ForegroundServiceOption के साथ WorkManager है (लंबे कार्य)।
AlarmManager — उन कार्यों के लिए जो सटीक समय पर चलने चाहिए (अलार्म, रिमाइंडर)। AlarmManager डिवाइस को Doze Mode से जगा सकता है (setAlarmClock)। उच्च ऊर्जा खपत के कारण नियमित सिंक्रोनाइज़ेशन के लिए अनुशंसित नहीं है। आवधिक कार्यों के लिए WorkManager का उपयोग करें, और AlarmManager केवल तब जब सटीक समय महत्वपूर्ण हो।
| परिदृश्य | iOS | Android |
|---|---|---|
| आवधिक कंटेंट अपडेट | BGAppRefreshTask (BGTaskScheduler) | WorkManager (PeriodicWorkRequest) |
| लंबा बैकग्राउंड कार्य | BGProcessingTask | WorkManager + ForegroundService |
| ऑडियो प्लेबैक | Background Audio Mode | Foreground Service |
| GPS ट्रैकिंग | Significant Location Change / Background Location | Foreground Service + FusedLocationProvider |
| VoIP / कॉल | PushKit + CallKit | ConnectionService + Foreground Service |
| सटीक समय (अलार्म) | UNNotificationRequest (calendar) | AlarmManager |
| Push प्रोसेसिंग (बैकग्राउंड) | Notification Service Extension | FirebaseMessagingService (onMessageReceived) |
Doze Mode Android में एक पावर-सेविंग मोड है जो बैकग्राउंड कार्य निष्पादन को प्रभावित करता है। Android 6.0 (API 23) में शुरू किया गया। जब डिवाइस चार्ज नहीं हो रहा है, स्क्रीन बंद है और डिवाइस स्थिर है, Doze Mode नेटवर्क अनुरोधों को ब्लॉक करता है, JobScheduler और WakeLock को स्थगित करता है। समय-समय पर, Doze रखरखाव विंडो खोलता है — छोटे अंतराल जब ऐप्स विलंबित कार्यों को निष्पादित कर सकते हैं। Android 7.0 (API 24) से, Doze स्क्रीन बंद होने पर सक्रिय होता है, न कि केवल पूरी तरह स्थिर होने पर।
App Standby — एक मोड जहाँ अप्रयुक्त ऐप्स को स्टैंडबाय में रखा जाता है। यदि किसी ऐप में कोई सक्रिय सूचना नहीं है और वह कई दिनों से नहीं खोला गया है, तो उसे Standby Bucket में रखा जाता है: सक्रिय (active), working, frequent, rare। ऐप का जितना कम उपयोग किया जाता है, प्रतिबंध उतने ही सख्त होते हैं: नेटवर्क अनुरोध स्थगित किए जाते हैं, सिंक्रोनाइज़ेशन ब्लॉक किया जाता है, JobScheduler नहीं चलता।
WakeLock — एक तंत्र जो डिवाइस को जगाए रखता है (उसे सोने से रोकता है)। महत्वपूर्ण संचालन पूरा करने के लिए उपयोग किया जाता है। WakeLock को कार्य पूरा होने के बाद जारी करना होगा (release), अन्यथा बैटरी कुछ घंटों में खत्म हो जाएगी। WakeLock Doze Mode में काम नहीं करता — सिस्टम इसे अनदेखा करता है। Android 8+ पर WakeLock के साथ काम करने के लिए WAKE_LOCK अनुमति और उचित जीवनचक्र प्रबंधन आवश्यक है।
IT Sectr में, हम डिज़ाइन चरण में Doze Mode और App Standby को ध्यान में रखते हैं। WorkManager स्वचालित रूप से इन मोड को संभालता है, लेकिन Foreground Service के लिए Doze में संक्रमण की सही हैंडलिंग की योजना बनानी होगी। वास्तविक उपकरणों पर पावर-सेविंग मोड सक्षम और लंबी निष्क्रियता के बाद बैकग्राउंड कार्य का परीक्षण करने की अनुशंसा की जाती है।
बैकग्राउंड कार्यों को डिज़ाइन करते समय, इन सुझावों का पालन करें। 1. नए Android प्रोजेक्ट्स के लिए हमेशा WorkManager का उपयोग करें। यह संगतता समस्याओं, Doze Mode और डिवाइस रीबूट को हल करता है। 2. iOS पर, iOS 13+ के लिए Background Fetch के बजाय BGTaskScheduler को प्राथमिकता दें। 3. Foreground Service का उपयोग केवल तब करें जब कार्य को वास्तव में दृश्य सूचना की आवश्यकता हो। 4. WakeLock का दुरुपयोग न करें — यह बैटरी खत्म करता है और ऐप अस्वीकृति का कारण बन सकता है। 5. Doze Mode में बैकग्राउंड कार्यों का परीक्षण करें: adb shell dumpsys deviceidle force-idle। 6. लॉगिंग और एनालिटिक्स के माध्यम से हमेशा कार्य पूर्णता सत्यापित करें। 7. सीमाएँ याद रखें: iOS ~30 सेकंड Background Fetch और ~कुछ मिनट BGProcessingTask के लिए देता है। Android WorkManager सटीक निष्पादन समय की गारंटी नहीं देता।
अक्सर पूछे जाने वाले प्रश्न
Background Service बिना दृश्य सूचना के चलता है और सिस्टम द्वारा किसी भी समय मारा जा सकता है। Foreground Service को एक स्थायी सूचना (ongoing notification) दिखानी होती है और इसकी उच्च प्राथमिकता होती है। Foreground Service का उपयोग संगीत प्लेबैक और GPS ट्रैकिंग के लिए किया जाता है।
Doze Mode Android का पावर-सेविंग मोड है जो डिवाइस के उपयोग में न होने पर नेटवर्क एक्सेस को अक्षम करता है और JobScheduler/WakeLock को स्थगित करता है। WorkManager Doze Mode के अनुकूल स्वचालित रूप से ढल जाता है।
iOS पर, बैकग्राउंड टास्क Background Fetch (आवधिक अपडेट), BGTaskScheduler (विलंबित कार्य) या Background Modes (ऑडियो, VoIP, BLE, स्थान) के माध्यम से चलाए जाते हैं। BGTaskScheduler iOS 13+ के लिए आधुनिक API है, जो Background Fetch को बदलता है।
WorkManager Android पर सभी बैकग्राउंड कार्यों के लिए Google का अनुशंसित समाधान है। JobScheduler सीमित क्षमताओं वाला एक पुराना API है। WorkManager कार्य श्रृंखलाओं, देखने योग्य LiveData/Flow और API 14 तक बैकवर्ड संगतता का समर्थन करता है।
App Standby Android का एक मोड है जहाँ अप्रयुक्त ऐप्स को स्टैंडबाय स्थिति में रखा जाता है: नेटवर्क अनुरोध स्थगित किए जाते हैं, सिंक्रोनाइज़ेशन रोका जाता है। यदि किसी ऐप का कई दिनों तक उपयोग नहीं किया जाता है, तो Android उसे Standby Bucket (सक्रिय, working, frequent, rare) में रखता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।