Kami menyediakan interoperabilitas antara WorkManager dan RxJava. Untuk memulai,
sertakan dependensi work-rxjava3 selain work-runtime pada file gradle Anda.
Ada juga dependensi work-rxjava2 yang justru mendukung rxjava2.
Kemudian, perluas RxWorker, bukan Worker. Terakhir,
ganti metode RxWorker.createWork()
agar menampilkan Single<Result> yang menunjukkan Result eksekusi Anda, seperti
berikut:
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() }; } }
Perlu diperhatikan bahwa RxWorker.createWork() dipanggil pada thread utama, tetapi nilai yang
ditampilkan secara default adalah berlangganan pada thread latar belakang. Anda dapat mengganti RxWorker.getBackgroundScheduler() untuk mengubah
thread berlangganan.
Jika RxWorker bernilai onStopped(), langganan akan dibuang, sehingga
Anda tidak perlu menangani penghentian pekerjaan dengan cara khusus apa pun.