JobScheduler: सार, API और कार्य निर्धारण

लेखक: IT Sectr प्रकाशित: 2026-03-27 पढ़ने का समय: 8 मिनट

JobScheduler Android में एक सिस्टम सेवा है, जिसे API 21 (Android 5.0 Lollipop) में पेश किया गया था, जो एप्लिकेशन को निर्दिष्ट शर्तों के आधार पर बैकग्राउंड कार्यों के निष्पादन को शेड्यूल करने की अनुमति देता है। AlarmManager के विपरीत, JobScheduler को सटीक निष्पादन समय की आवश्यकता नहीं होती — सिस्टम स्वयं एप्लिकेशन की आवश्यकताओं और डिवाइस की वर्तमान स्थिति को मिलाकर इष्टतम क्षण निर्धारित करता है। Android Developers, 2026 के अनुसार, सेवा नेटवर्क, चार्ज, स्टोरेज स्थिति और डिवाइस निष्क्रियता के मापदंडों का समर्थन करती है।

मुख्य बातें

  • JobScheduler Android 5+ में लॉन्च शर्तों के साथ बैकग्राउंड कार्यों के बैच प्रोसेसिंग के लिए एक सिस्टम API है।
  • JobService आधार हैंडलर वर्ग है जिसे सिस्टम तब कॉल करता है जब निष्पादन की शर्तें पूरी होती हैं।
  • JobInfo एक ऑब्जेक्ट है जो कार्य के पैरामीटर का वर्णन करता है: नेटवर्क प्रकार, बैटरी स्तर, समय सीमा और विलंब।
  • मापदंड में Wi-Fi कनेक्टिविटी, चार्जिंग, उपलब्ध स्टोरेज और डिवाइस निष्क्रियता शामिल हैं।
  • WorkManager Android 5+ पर अंदरूनी तौर पर JobScheduler का उपयोग करता है, जो एक उच्च-स्तरीय API प्रदान करता है।

JobScheduler क्या है?

JobScheduler Android में एक सिस्टम सेवा है जो बिजली की खपत को कम करने के लिए कई बैकग्राउंड कार्यों को बैचों में समूहित करती है। प्रत्येक एप्लिकेशन द्वारा अपना कार्य करने के लिए डिवाइस को जगाने के बजाय, JobScheduler उन्हें एक साथ समूहित करता है और इष्टतम क्षण में निष्पादित करता है जब डिवाइस पहले से सक्रिय हो। यह बैटरी जीवन को काफी बढ़ाता है।

JobScheduler से पहले, डेवलपर बैकग्राउंड कार्यों के लिए AlarmManager और BroadcastReceiver का उपयोग करते थे। इस दृष्टिकोण की समस्या यह थी कि प्रत्येक एप्लिकेशन स्वतंत्र रूप से डिवाइस को जगाता था, जिससे बैटरी तेजी से खत्म होती थी। JobScheduler ने बैच निष्पादन विंडो शुरू करके इस समस्या को हल किया, जिसके तहत सिस्टम एक साथ विभिन्न एप्लिकेशन के सभी शेड्यूल किए गए कार्यों को लॉन्च करता है।

कार्य सिद्धांत JobInfo ऑब्जेक्ट पर आधारित है जिसे एप्लिकेशन JobScheduler को भेजता है। सिस्टम कार्य को सहेजता है और जब सभी निर्दिष्ट शर्तें पूरी होती हैं तो उसे निष्पादित करता है। WorkManager के विपरीत, JobScheduler विफलता पर पुनः आरंभ की गारंटी नहीं देता — यदि कोई कार्य अपवाद फेंकता है, तो डेवलपर को इसे मैन्युअल रूप से पुनः शेड्यूल करना होगा।

JobScheduler कैसे काम करता है?

JobScheduler JobService और JobInfo पर आधारित आर्किटेक्चर का उपयोग करता है। JobInfo कार्य और उसकी शर्तों का वर्णन करता है, JobService में निष्पादन तर्क होता है। एप्लिकेशन getSystemService(JobScheduler.class) के माध्यम से कार्य को पंजीकृत करता है और schedule(jobInfo) को कॉल करता है। सिस्टम शेड्यूलिंग का ध्यान रखता है।

JobService और JobInfo

JobService एक अमूर्त वर्ग है जो Service से विरासत में मिलता है। इसमें दो मुख्य विधियाँ हैं: onStartJob (कार्य शुरू होने पर कॉल होता है) और onStopJob (सिस्टम द्वारा कार्य को बलपूर्वक रोकने पर कॉल होता है)। JobInfo Builder के माध्यम से बनाया जाता है और इसमें सभी कार्य पैरामीटर होते हैं: पहचानकर्ता, शर्तें, समय सीमाएँ।

java
public class SyncJobService extends JobService {
    @Override
    public boolean onStartJob(JobParameters params) {
        // मुख्य थ्रेड पर चलता है
        Thread thread = new Thread(() -> {
            performSync();
            jobFinished(params, false);
        });
        thread.start();
        return true; // true = काम जारी है
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        return true; // true = कार्य पुनर्निर्धारित करें
    }
}

कार्य लॉन्च मापदंड

JobScheduler एक साथ कई मापदंड सेट करने की अनुमति देता है: नेटवर्क प्रकार (NETWORK_TYPE_ANY, NOT_ROAMING, UNMETERED), चार्जिंग स्थिति (requiresCharging), बैटरी स्तर (requiresBatteryNotLow), स्टोरेज स्थिति (requiresStorageNotLow) और निष्क्रिय मोड (requiresDeviceIdle)। कार्य तभी चलता है जब सभी मापदंड पूरे हों।

JobInfo पैरामीटर

JobInfo.Builder प्रत्येक बैकग्राउंड कार्य के लिए लचीली सेटिंग्स प्रदान करता है। पैरामीटर का सही संयोजन निष्पादन की समयबद्धता और बिजली की खपत के बीच संतुलन बनाने की अनुमति देता है।

विधिविवरणउदाहरण
setRequiredNetworkTypeआवश्यक नेटवर्क प्रकारNETWORK_TYPE_UNMETERED
setRequiresChargingडिवाइस चार्ज हो रहा हैtrue
setRequiresDeviceIdleडिवाइस निष्क्रिय हैtrue
setOverrideDeadlineअधिकतम प्रतीक्षा समय (मि.से.)300000
setMinimumLatencyन्यूनतम विलंब (मि.से.)60000
setPeriodicआवधिक निष्पादन (मि.से.)3600000
setBackoffCriteriaविफलता पर पुनः प्रयास रणनीतिLINEAR / EXPONENTIAL

एक महत्वपूर्ण पैरामीटर setOverrideDeadline है। यदि समय सीमा निर्दिष्ट की जाती है, तो सिस्टम गारंटी देता है कि कार्य उस समय तक चलेगा, भले ही सभी शर्तें पूरी न हों। यह समय-महत्वपूर्ण कार्यों के लिए उपयोगी है, जैसे हर 6 घंटे में सिंक्रोनाइज़ेशन।

JobScheduler उपयोग उदाहरण

एकाधिक शर्तों के साथ कार्य शेड्यूल करना

एक सामान्य परिदृश्य Wi-Fi से कनेक्ट होने और डिवाइस चार्ज होने पर डेटा सिंक्रोनाइज़ेशन है। एप्लिकेशन संबंधित मापदंडों के साथ JobInfo बनाता है और इसे JobScheduler को भेजता है। अनुकूल परिस्थितियाँ आने पर सिस्टम कार्य चलाता है।

java
ComponentName serviceName = new ComponentName(this, SyncJobService.class);

JobInfo jobInfo = new JobInfo.Builder(JOB_ID_SYNC, serviceName)
    .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    .setRequiresCharging(true)
    .setRequiresBatteryNotLow(true)
    .setOverrideDeadline(6 * 60 * 60 * 1000) // 6 घंटे
    .build();

JobScheduler scheduler = (JobScheduler)
    getSystemService(Context.JOB_SCHEDULER_SERVICE);
scheduler.schedule(jobInfo);

मेनिफेस्ट में JobService पंजीकृत करना

JobService को AndroidManifest.xml में BIND_JOB_SERVICE अनुमति के साथ पंजीकृत होना चाहिए। onStartJob विधि में कार्य पूरा करने के बाद jobFinished को कॉल करना महत्वपूर्ण है — अन्यथा सिस्टम कार्य को अनिश्चित काल तक चलने वाला मानेगा और उसे बलपूर्वक रोक सकता है।

xml
<service
    android:name=".SyncJobService"
    android:permission="android.permission.BIND_JOB_SERVICE" />

सीमाएँ और विकल्प

JobScheduler की कई सीमाएँ हैं। पहली, यह केवल Android 5+ पर उपलब्ध है — पुराने संस्करणों के लिए विकल्प चाहिए। दूसरी, सिस्टम कम उपयोग किए जाने वाले एप्लिकेशन के कार्यों में देरी कर सकता है, विशेष रूप से Android 9+ पर App Standby Buckets के साथ। तीसरी, JobScheduler विफलता पर गारंटीकृत पुनः आरंभ तंत्र प्रदान नहीं करता।

Google सीधे JobScheduler उपयोग के बजाय WorkManager का उपयोग करने की सलाह देता है। WorkManager Android 5+ पर अंदरूनी तौर पर JobScheduler का उपयोग करता है, लेकिन पुराने संस्करणों के लिए समर्थन, निष्पादन गारंटी, कार्य श्रृंखला और LiveData के माध्यम से स्थिति निरीक्षण जोड़ता है। यदि आपका एप्लिकेशन केवल Android 8+ का समर्थन करता है और जटिल बैकग्राउंड कार्य तर्क की आवश्यकता नहीं है, तो JobScheduler अभी भी उचित हो सकता है।

JobScheduler की निगरानी और डीबगिंग

JobScheduler को डीबग करने के लिए, ADB के माध्यम से dumpsys jobscheduler का उपयोग करें: कमांड सभी शेड्यूल किए गए कार्यों, उनकी स्थिति, शेष समय और निष्पादन इतिहास दिखाता है। किसी विशिष्ट एप्लिकेशन के लिए: adb shell dumpsys jobscheduler | grep package_name। इससे आप जाँच सकते हैं कि कार्य पंजीकृत है या नहीं, क्या शर्तें निर्धारित हैं और यह क्यों नहीं चल रहा है। आप प्रोग्रामेटिक रूप से कार्य स्थिति की जाँच करने के लिए JobScheduler.getPendingJob() का भी उपयोग कर सकते हैं। इसके अतिरिक्त, कार्य निष्पादन के दौरान बिजली की खपत का विश्लेषण करने के लिए Android Studio Profiler का उपयोग किया जा सकता है। Android 5+ पर एप्लिकेशन के लिए, JobScheduler नेटवर्क और चार्जिंग शर्तों के साथ अचूक बैकग्राउंड कार्यों के लिए एक विश्वसनीय उपकरण बना हुआ है।

मल्टीथ्रेडेड परिदृश्यों में JobScheduler

डिफ़ॉल्ट रूप से, JobService मुख्य थ्रेड पर चलता है, इसलिए सभी अवरोधक संचालन के लिए एक अलग थ्रेड बनाने या AsyncTask का उपयोग करने की आवश्यकता होती है। WorkManager के विपरीत, JobScheduler एक अंतर्निहित थ्रेड पूल प्रदान नहीं करता। डेवलपर स्वतंत्र रूप से थ्रेड और सिंक्रोनाइज़ेशन का प्रबंधन करता है। समानांतर कार्यों के लिए ThreadPoolExecutor और मुख्य थ्रेड के साथ संचार के लिए Handler का उपयोग करने की अनुशंसा की जाती है। onStopJob में, लीक से बचने के लिए चल रहे थ्रेड को सही ढंग से बाधित करना महत्वपूर्ण है।

JobScheduler के माध्यम से आवधिक कार्य

JobScheduler setPeriodic(long intervalMillis) विधि के माध्यम से आवधिक कार्यों का समर्थन करता है। न्यूनतम अंतराल 15 मिनट है। हालांकि, WorkManager के विपरीत, JobScheduler सटीक अंतराल पालन की गारंटी नहीं देता — सिस्टम अन्य कार्यों के साथ बैच करने के लिए निष्पादन को स्थानांतरित कर सकता है। setPeriodic विधि लचीले अंतराल (फ्लेक्स विंडो) का भी समर्थन नहीं करती, जो बाद के API संस्करणों में दिखाई दिया। सटीक आवधिक निष्पादन के लिए, BroadcastReceiver के साथ संयोजन में AlarmManager का उपयोग करें।

App Standby Buckets और JobScheduler पर प्रभाव

Android 9 से शुरू करके, Google ने App Standby Buckets पेश किया, जो उपयोग आवृत्ति के अनुसार एप्लिकेशन को वर्गीकृत करता है: Active, Working Set, Frequent, Rare। Rare श्रेणी के एप्लिकेशन को JobScheduler कार्यों में 24 घंटे तक की देरी का अनुभव होता है। डेवलपर केवल एप्लिकेशन गुणवत्ता के माध्यम से श्रेणी को प्रभावित कर सकते हैं — सिस्टम तंत्र स्वचालित रूप से उन एप्लिकेशन की प्राथमिकता बढ़ाते हैं जिनके साथ उपयोगकर्ता नियमित रूप से बातचीत करता है। JobScheduler इस वर्गीकरण को ध्यान में रखता है, और Rare एप्लिकेशन का कार्य केवल रखरखाव विंडो में निष्पादित किया जाएगा। Active श्रेणी (सबसे अधिक उपयोग किए जाने वाले) के एप्लिकेशन के लिए, देरी न्यूनतम होती है और शर्तें पूरी होने पर कार्य लगभग तुरंत चलते हैं।

सटीक समय वाले आवधिक कार्यों के लिए, JobScheduler उपयुक्त नहीं है — AlarmManager का उपयोग करें। छोटे एकल कार्यों के लिए — अधिसूचना के साथ Foreground Service। JobScheduler उन कार्यों के लिए इष्टतम है जहाँ समय सटीकता की तुलना में ऊर्जा दक्षता अधिक महत्वपूर्ण है: सिंक्रोनाइज़ेशन, अपडेट डाउनलोड, बैच डेटा प्रोसेसिंग। बैकग्राउंड कार्य उपकरण का सही चयन सीधे उपयोगकर्ता अनुभव और डिवाइस की बैटरी जीवन को प्रभावित करता है। अंतिम निष्कर्ष: शर्तों के साथ बैच प्रोसेसिंग के लिए JobScheduler, शेड्यूल किए गए कार्यों के लिए AlarmManager, और सार्वभौमिक शेड्यूलर के रूप में WorkManager का उपयोग करें।

अक्सर पूछे जाने वाले प्रश्न

क्या यह सच है कि JobScheduler विभिन्न एप्लिकेशन के कार्यों को जोड़ता है?

हाँ, JobScheduler विभिन्न एप्लिकेशन के कार्यों को बैचों में समूहित करता है और उन्हें एक साथ निष्पादित करता है। यह AlarmManager पर एक मुख्य लाभ है: प्रत्येक एप्लिकेशन द्वारा अलग-अलग डिवाइस जगाने के बजाय, सिस्टम एक बार प्रोसेसर जगाता है और सभी शेड्यूल किए गए कार्यों को संसाधित करता है।

यदि JobService में कोई कार्य निर्धारित समय से अधिक चलता है तो क्या होता है?

यदि उचित समय के भीतर jobFinished कॉल नहीं किया गया, तो सिस्टम बलपूर्वक onStopJob कॉल कर सकता है और कार्य समाप्त कर सकता है। एक कार्य को कुछ मिनटों में पूरा करने और पूरा होने पर हमेशा jobFinished कॉल करने की अनुशंसा की जाती है।

Doze Mode में JobScheduler कैसे व्यवहार करता है?

Doze Mode में, JobScheduler सभी कार्यों को अगली रखरखाव विंडो तक स्थगित कर देता है, जो समय-समय पर आती है। setOverrideDeadline का उपयोग यह सुनिश्चित करता है कि कार्य इन विंडो को ध्यान में रखते हुए निष्पादित होगा, लेकिन जरूरी नहीं कि सटीक समय पर।

JobScheduler WorkManager से कैसे अलग है?

WorkManager एक लाइब्रेरी है जो Android 5+ पर अंदरूनी तौर पर JobScheduler का उपयोग करती है। WorkManager निष्पादन गारंटी, पुराने संस्करणों (API 14+) के लिए समर्थन, Worker श्रृंखला, LiveData/Flow के माध्यम से स्थिति निरीक्षण और विफलता पर स्वचालित पुनः प्रयास जोड़ता है।

JobScheduler में शेड्यूल किए गए कार्य को कैसे रद्द करें?

रद्द करने के लिए, किसी विशिष्ट कार्य के लिए scheduler.cancel(JOB_ID) या एप्लिकेशन के सभी कार्यों के लिए scheduler.cancelAll() का उपयोग करें। सुनिश्चित करें कि Job ID, JobInfo बनाते समय निर्दिष्ट ID से मेल खाता हो, अन्यथा कार्य रद्द नहीं होगा।

डेवलपर को समझना चाहिए कि JobScheduler एक निम्न-स्तरीय सिस्टम API है जो अनुभवी टीमों के लिए डिज़ाइन किया गया है जो डिवाइस पर बैकग्राउंड कार्यों पर पूर्ण नियंत्रण चाहते हैं। अधिकांश एप्लिकेशन के लिए, WorkManager Android के लिए एक सरल, सुरक्षित और अधिक आधुनिक API के साथ समान कार्यक्षमता प्रदान करता है।

सारांश

  • JobScheduler निर्दिष्ट शर्तों के साथ बैकग्राउंड कार्यों के बैच निष्पादन के लिए Android 5+ सिस्टम सेवा है।
  • आर्किटेक्चर JobService (तर्क) और JobInfo (पैरामीटर) के आसपास बनाया गया है, जो AndroidManifest के माध्यम से पंजीकृत है।
  • लॉन्च मापदंड में नेटवर्क, चार्जिंग, स्टोरेज स्थिति और डिवाइस निष्क्रियता शामिल हैं।
  • setOverrideDeadline एक निश्चित समय तक कार्य निष्पादन की गारंटी देने का एकमात्र तरीका है।
  • बैच निष्पादन विभिन्न एप्लिकेशन के कार्यों को जोड़ता है, डिवाइस की कुल बिजली खपत को कम करता है।
  • WorkManager निष्पादन गारंटी और पुराने Android संस्करणों के समर्थन के साथ पसंदीदा विकल्प है।
  • उपयोग न करें सटीक समय वाले कार्यों के लिए JobScheduler — इसके बजाय AlarmManager का उपयोग करें।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें