نوفر إمكانية التشغيل التفاعلي بين 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()
، سيتم التخلّص من الاشتراك، ولن تحتاج إلى معالجة صفحات توقُّف العمل بأي طريقة خاصة.