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.