আমরা WorkManager এবং RxJava এর মধ্যে ইন্টারঅপারেবিলিটি প্রদান করি। শুরু করতে, আপনার গ্রেডল ফাইলে 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()
হয়, তখন সাবস্ক্রিপশনটি নিষ্পত্তি হয়ে যাবে, তাই আপনাকে কোনো বিশেষ উপায়ে কাজের স্টপেজগুলি পরিচালনা করতে হবে না।