हम WorkManager और RxJava के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना) की सुविधा देते हैं. शुरू करने के लिए,
अपनी Gradle फ़ाइल में work-runtime
के अलावा, work-rxjava3
डिपेंडेंसी शामिल करें.
ऐसी work-rxjava2
डिपेंडेंसी भी है जो इसके बजाय rxjava2 के साथ काम करती है.
इसके बाद, Worker
को बढ़ाने के बजाय, आपको RxWorker
की अवधि बढ़ानी चाहिए. आख़िर में
RxWorker.createWork()
को बदलें
चलाने का तरीका Single<Result>
दिखाता है, जो दिखाता है कि आपके एक्ज़ीक्यूशन का Result
है, जैसे कि
अनुसरण करता है:
class RxDownloadWorker( context: Context, params: WorkerParameters ) : RxWorker(context, params) { override fun createWork(): Single<Result> { return Observable.range(0, 100) .flatMap { download("https://www.example.com") } .toList() .map { Result.success() } } }
public class RxDownloadWorker extends RxWorker { public RxDownloadWorker(Context context, WorkerParameters params) { super(context, params); } @NonNull @Override public Single<Result> createWork() { return Observable.range(0, 100) .flatMap { download("https://www.example.com") } .toList() .map { Result.success() }; } }
ध्यान दें कि RxWorker.createWork()
को मुख्य थ्रेड में कॉल किया गया है, लेकिन रिटर्न
यह मान डिफ़ॉल्ट रूप से बैकग्राउंड थ्रेड पर सदस्यता लिया गया होता है. आप RxWorker.getBackgroundScheduler()
को बदलकर,
सदस्यता लेने से जुड़ा थ्रेड.
RxWorker
के onStopped()
होने पर, सदस्यता रद्द हो जाएगी. इसलिए
आपको किसी खास तरीके से काम के रुकने की समस्या को हल करने की ज़रूरत नहीं है.