RxWorker'da mesaj dizisi

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.