WorkManager के पास इंटरमीडिएट को सेट करने और उसे मॉनिटर करने की सुविधा उपलब्ध होती है
काम करने वाले लोगों की स्थिति कैसी है. अगर ऐप्लिकेशन
फ़ोरग्राउंड में है, तो यह जानकारी उपयोगकर्ता को उन एपीआई का इस्तेमाल करके भी दिखाई जा सकती है जो
इसका LiveData
वापस करें
WorkInfo
.
ListenableWorker
अब इनका इस्तेमाल करता है:
setProgressAsync()
एपीआई की मदद से, यह किसी सामान्य प्रोग्रेस को लगातार जारी रख सकता है. ये एपीआई,
डेवलपर, बीच के लेवल पर होने वाली प्रोग्रेस को सेट कर सकें, जिसे यूज़र इंटरफ़ेस (यूआई) से देखा जा सके.
प्रोग्रेस को Data
टाइप से दिखाया जाता है,
जो प्रॉपर्टी का ऐसा कंटेनर है जिसे क्रम में लगाया जा सकता है (input
और
output
,
और समान पाबंदियों के अधीन हों).
प्रोग्रेस की जानकारी सिर्फ़ तब देखी और अपडेट की जा सकती है, जब
ListenableWorker
चल रहा है. ListenableWorker
पर प्रोग्रेस सेट करने की कोशिश की गई
एक्ज़ीक्यूशन पूरा होने के बाद, उन्हें अनदेखा कर दिया जाता है. यह भी देखा जा सकता है कि
getWorkInfoBy…()
या
getWorkInfoBy…LiveData()
तरीकों का इस्तेमाल करना होगा. ये तरीके
WorkInfo
, जिसमें एक नई
getProgress()
तरीका
जो Data
दिखाता है.
प्रोग्रेस अपडेट करें
ListenableWorker
का इस्तेमाल करने वाले Java डेवलपर के लिए
या Worker
,
setProgressAsync()
एपीआई, ListenableFuture<Void>
दिखाता है; अपडेट की प्रोग्रेस एसिंक्रोनस है,
दिया जाता है, क्योंकि अपडेट प्रोसेस में प्रोग्रेस की जानकारी को डेटाबेस में सेव करना शामिल होता है.
Kotlin में, CoroutineWorker
का इस्तेमाल किया जा सकता है
ऑब्जेक्ट का setProgress()
एक्सटेंशन फ़ंक्शन का इस्तेमाल करता है.
इस उदाहरण में, आसान ProgressWorker
दिखाया गया है. Worker
अपनी प्रोग्रेस को इस पर सेट करता है
शुरू होने पर 0 दिखेगा और पूरा होने पर प्रोग्रेस की वैल्यू 100 पर सेट हो जाएगी.
import android.content.Context import androidx.work.CoroutineWorker import androidx.work.Data import androidx.work.WorkerParameters import kotlinx.coroutines.delay class ProgressWorker(context: Context, parameters: WorkerParameters) : CoroutineWorker(context, parameters) { companion object { const val Progress = "Progress" private const val delayDuration = 1L } override suspend fun doWork(): Result { val firstUpdate = workDataOf(Progress to 0) val lastUpdate = workDataOf(Progress to 100) setProgress(firstUpdate) delay(delayDuration) setProgress(lastUpdate) return Result.success() } }
import android.content.Context; import androidx.annotation.NonNull; import androidx.work.Data; import androidx.work.Worker; import androidx.work.WorkerParameters; public class ProgressWorker extends Worker { private static final String PROGRESS = "PROGRESS"; private static final long DELAY = 1000L; public ProgressWorker( @NonNull Context context, @NonNull WorkerParameters parameters) { super(context, parameters); // Set initial progress to 0 setProgressAsync(new Data.Builder().putInt(PROGRESS, 0).build()); } @NonNull @Override public Result doWork() { try { // Doing work. Thread.sleep(DELAY); } catch (InterruptedException exception) { // ... handle exception } // Set progress to 100 after you are done doing your work. setProgressAsync(new Data.Builder().putInt(PROGRESS, 100).build()); return Result.success(); } }
प्रोग्रेस पर नज़र रखी जा रही है
प्रोग्रेस की जानकारी देखना भी आसान है. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए
getWorkInfoBy…()
या getWorkInfoBy…LiveData()
और WorkInfo
का रेफ़रंस पाएं.
यहां एक उदाहरण दिया गया है, जिसमें getWorkInfoByIdLiveData
एपीआई का इस्तेमाल किया जाता है.
WorkManager.getInstance(applicationContext) // requestId is the WorkRequest id .getWorkInfoByIdLiveData(requestId) .observe(observer, Observer { workInfo: WorkInfo? -> if (workInfo != null) { val progress = workInfo.progress val value = progress.getInt(Progress, 0) // Do something with progress information } })
WorkManager.getInstance(getApplicationContext()) // requestId is the WorkRequest id .getWorkInfoByIdLiveData(requestId) .observe(lifecycleOwner, new Observer<WorkInfo>() { @Override public void onChanged(@Nullable WorkInfo workInfo) { if (workInfo != null) { Data progress = workInfo.getProgress(); int value = progress.getInt(PROGRESS, 0) // Do something with progress } } });
Worker
ऑब्जेक्ट को मॉनिटर करने से जुड़े ज़्यादा दस्तावेज़ के लिए, इसे पढ़ें
काम की स्थितियां और काम की निगरानी करना.