نوفر إمكانية التشغيل التفاعلي بين WorkManager وRxJava. للبدء،
عليك تضمين تبعية work-rxjava3
بالإضافة إلى work-runtime
في ملف Grale.
هناك أيضًا تبعية work-rxjava2
��لتي تدعم rxjava2 بدلاً من ذلك.
وبعد ذلك، بدلاً من تمديد فترة Worker
، عليك تمديد فترة الاشتراكRxWorker
. أخيرًا
يمكنك إلغاء طريقة RxWorker.createWork()
لعرض Single<Result>
تشير إلى Result
عملية التنفيذ، على النحو
التالي:
Kotlin
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() } } }
Java
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()
، سيتم التخلّص من الاشتراك، ولن تحتاج إلى معالجة صفحات توقُّف العمل بأي طريقة خاصة.