Android Academy · पाठ

WorkManager और पृष्ठभूमि कार्य

WorkManager की सहायता से सुनिश्चित पृष्ठभूमि कार्य निर्धारित करें। OneTimeWorkRequest, PeriodicWorkRequest, बाधाओं, डेटा भेजने और कार्य शृंखलाबद्ध करने का उपयोग करें।

पाठ 5, कुल 6 में से13 चरण

WorkManager और पृष्ठभूमि कार्य, CoddyKit पर Android Academy का एक निःशुल्क पाठ है। यह 6 में से 5वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Android Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Android Academy पाठ्यक्रम में कुल 6 पाठ शामिल हैं।

Android में पृष्ठभूमि कार्य

बैटरी बचाने के लिए Android पृष्ठभूमि कार्यों को कड़ाई से सीमित करता है। WorkManager से पहले डेवलपर इनका उपयोग करते थे:

  • AsyncTask (अब अप्रचलित)
  • AlarmManager (रीबूट या Doze के दौरान विश्वसनीय नहीं)
  • JobScheduler (जटिल API)
  • सेवाएँ (बंद की जा सकती हैं, दोबारा प्रयास नहीं)

WorkManager बाद में चलाए जा सकने वाले और सुनिश्चित पृष्ठभूमि कार्यों के लिए अनुशंसित समाधान है।

WorkManager क्या है

WorkManager सुनिश्चित करता है कि ऐप बंद होने या डिवाइस के रीबूट होने पर भी आपका कार्य चले। यह:

  • रीबूट के बाद भी कार्य को बनाए रखता है
  • विफलता पर अपने-आप दोबारा प्रयास करता है
  • शर्तों का समर्थन करता है (केवल WiFi, केवल चार्जिंग आदि)
  • API 14+ पर काम करता है
  • CoroutineWorker के माध्यम से Kotlin Coroutines के साथ एकीकृत होता है

सेटअप

app/build.gradle में WorkManager जोड़ें:

dependencies {
    implementation 'androidx.work:work-runtime-ktx:2.9.0'
}

Worker बनाना

CoroutineWorker का विस्तार करें और doWork() लागू करें। Result.success(), Result.failure() या Result.retry() लौटाएँ:

class SyncWorker(context: Context, params: WorkerParameters) : CoroutineWorker(context, params) {

    override suspend fun doWork(): Result {
        return try {
            // This runs on a background coroutine
            val repo = UserRepository(applicationContext)
            repo.syncFromNetwork()
            Result.success()
        } catch (e: Exception) {
            if (runAttemptCount < 3) Result.retry()
            else Result.failure()
        }
    }
}

OneTimeWorkRequest

एक बार चलने वाला कार्य निर्धारित करके उसे कतार में जोड़ें:

val syncWork = OneTimeWorkRequestBuilder<SyncWorker>()
    .setInitialDelay(10, TimeUnit.MINUTES)  // optional delay
    .build()

WorkManager.getInstance(context).enqueue(syncWork)

// With a unique name (prevents duplicates):
WorkManager.getInstance(context).enqueueUniqueWork(
    "sync_work",
    ExistingWorkPolicy.KEEP,   // don't enqueue if already pending
    syncWork
)

PeriodicWorkRequest

बार-बार चलने वाले कार्य निर्धारित करें। न्यूनतम अंतराल 15 मिनट है:

val periodicSync = PeriodicWorkRequestBuilder<SyncWorker>(
    repeatInterval = 1, TimeUnit.HOURS
).build()

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
    "hourly_sync",
    ExistingPeriodicWorkPolicy.KEEP,
    periodicSync
)

शर्तें

कार्य तभी चलाएँ जब शर्तें पूरी हों — बैटरी कम न हो, WiFi जुड़ा हो आदि:

val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.UNMETERED)  // WiFi only
    .setRequiresBatteryNotLow(true)
    .setRequiresCharging(false)
    .build()

val work = OneTimeWorkRequestBuilder<SyncWorker>()
    .setConstraints(constraints)
    .build()

WorkManager.getInstance(context).enqueue(work)

इनपुट और आउटपुट डेटा

Data ऑब्जेक्ट का उपयोग करके Worker में डेटा भेजें और उससे डेटा प्राप्त करें:

// Enqueue with input data:
val inputData = workDataOf("user_id" to 42)
val work = OneTimeWorkRequestBuilder<SyncWorker>()
    .setInputData(inputData)
    .build()

// Inside the Worker:
class SyncWorker(...) : CoroutineWorker(...) {
    override suspend fun doWork(): Result {
        val userId = inputData.getInt("user_id", -1)

        // Pass output data back:
        val output = workDataOf("synced_count" to 10)
        return Result.success(output)
    }
}

कार्य की स्थिति देखना

getWorkInfoByIdLiveData का उपयोग करके कार्य की प्रगति देखें:

val workRequest = OneTimeWorkRequestBuilder<SyncWorker>().build()
WorkManager.getInstance(this).enqueue(workRequest)

WorkManager.getInstance(this)
    .getWorkInfoByIdLiveData(workRequest.id)
    .observe(this) { info ->
        when (info?.state) {
            WorkInfo.State.RUNNING   -> binding.tvStatus.text = "Syncing..."
            WorkInfo.State.SUCCEEDED -> binding.tvStatus.text = "Done!"
            WorkInfo.State.FAILED    -> binding.tvStatus.text = "Failed"
            else                     -> {}
        }
    }

कार्यों को श्रृंखला में जोड़ना

कार्य-श्रृंखलाओं का उपयोग करके कार्यों को क्रम से या समानांतर चलाएँ:

val downloadWork  = OneTimeWorkRequestBuilder<DownloadWorker>().build()
val processWork   = OneTimeWorkRequestBuilder<ProcessWorker>().build()
val uploadWork    = OneTimeWorkRequestBuilder<UploadWorker>().build()

// Sequential: download → process → upload
WorkManager.getInstance(context)
    .beginWith(downloadWork)
    .then(processWork)
    .then(uploadWork)
    .enqueue()

// Parallel then merge:
WorkManager.getInstance(context)
    .beginWith(listOf(downloadWork, processWork))  // both run in parallel
    .then(uploadWork)                              // runs after both finish
    .enqueue()

WorkManager बनाम विकल्प

किस स्थिति में किसका उपयोग करें:

  • WorkManager — बाद में चलाए जा सकने वाले, सुनिश्चित और शर्तों पर आधारित कार्य। सिंक, अपलोड और सफ़ाई के लिए सबसे अच्छा।
  • Coroutines / ViewModel — ऐप के खुले रहने से जुड़े कार्य। ऐप बंद होने पर रुक जाते हैं।
  • AlarmManager — निश्चित समय के अलार्म (कैलेंडर अनुस्मारक)। बैटरी का सावधानी से प्रबंधन आवश्यक है।
  • Foreground Service — लंबे समय तक चलने वाले ऐसे कार्य जिनकी उपयोगकर्ता को जानकारी हो (संगीत चलाना, नेविगेशन)।

त्वरित जाँच

PeriodicWorkRequest के लिए न्यूनतम दोहराव अंतराल कितना है?

पुनरावृत्ति: WorkManager

सुनिश्चित पृष्ठभूमि कार्यों के लिए WorkManager सही उपकरण है:

  • CoroutineWorker का विस्तार करें और doWork() लागू करें
  • Result.success(), .failure() या .retry() लौटाएँ
  • एक बार चलने के लिए OneTimeWorkRequest और बार-बार चलने के लिए PeriodicWorkRequest का उपयोग करें
  • केवल WiFi, बैटरी की स्थिति आदि के लिए Constraints जोड़ें
  • workDataOf() के साथ डेटा भेजें
  • beginWith().then().enqueue() के साथ कार्यों को श्रृंखला में जोड़ें

अगला चरण: सुंदर UI के लिए Material Design घटक।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
36
पाठ
152

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

क्या “WorkManager और पृष्ठभूमि कार्य” पाठ निःशुल्क है?

हाँ — Android Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “WorkManager और पृष्ठभूमि कार्य” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Android Academy पाठ्यक्रम में कुल 6 पाठ शामिल हैं।

“WorkManager और पृष्ठभूमि कार्य” में मैं क्या सीखूँगा?

WorkManager की सहायता से सुनिश्चित पृष्ठभूमि कार्य निर्धारित करें। OneTimeWorkRequest, PeriodicWorkRequest, बाधाओं, डेटा भेजने और कार्य शृंखलाबद्ध करने का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Android Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Android Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Android Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 6 में से 5वाँ पाठ है।

“WorkManager और पृष्ठभूमि कार्य” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Android Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Android Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Retrofit और REST APIs
  2. Coil से इमेज लोड करना
  3. त्रुटि प्रबंधन और UX
  4. पुश सूचनाएँ
  5. WorkManager और पृष्ठभूमि कार्य
  6. Play Store पर प्रकाशन
← Android Academy पर वापस जाएँ