WorkManager ve RxJava arasında birlikte çalışabilirlik özelliği sağlıyoruz. Başlamak için gradle dosyanıza work-runtime
'a ek olarak work-rxjava3
bağımlılığını ekleyin.
Bunun yerine rxjava2'yi destekleyen bir work-rxjava2
bağımlılığı da vardır.
Ardından, Worker
süresini uzatmak yerine RxWorker
uzatmanız gerekir. Son olarak, yürütmenizin Result
değerini gösteren bir Single<Result>
döndürmek için aşağıdaki gibi RxWorker.createWork()
yöntemini geçersiz kılın:
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öndürülen değerin varsayılan olarak arka plan iş parçacığında abone olduğunu unutmayın. Abone olan ileti dizisini değiştirmek için RxWorker.getBackgroundScheduler()
kodunu geçersiz kılabilirsiniz.
RxWorker
, onStopped()
olduğunda abonelik silinir. Bu sayede işle ilgili durdurma sayfalarını özel bir şekilde ele almanız gerekmez.