WorkManager ve RxJava arasında birlikte çalışabilirlik sağlıyoruz. Başlangıç olarak
gradle dosyanıza work-runtime ek olarak work-rxjava3 bağımlılığını ekleyin.
Bunun yerine rxjava2'yi destekleyen bir work-rxjava2 bağımlılığı da vardır.
Sonra, Worker uzatılır yerine RxWorker uzatılmalıdır. Son
RxWorker.createWork() ayarını geçersiz kıl
yöntemini kullandığınızda, yürütmenizin Result değerini belirten bir Single<Result> değeri
şöyle olur:
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() öğesinin ana iş parçacığında çağrıldığını, ancak dönüşünün
değeri varsayılan olarak bir arka plan ileti dizisinde abonedir. Değiştirmek için RxWorker.getBackgroundScheduler() değerini geçersiz kılabilirsiniz.
abone olma.
onStopped() olan RxWorker, abonelikten çıkarılır. Bu nedenle
iş duraklamalarını özel bir şekilde ele almanız gerekmez.