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.