เรามีความสามารถในการทำงานร่วมกันระหว่าง WorkManager และ RxJava วิธีเริ่มต้น
ใส่ทรัพยากร Dependency ของ work-rxjava3
นอกเหนือจาก work-runtime
ในไฟล์ Gradle
นอกจากนี้ยังมีทรัพยากร Dependency work-rxjava2
ที่รองรับ rxjava2 แทน
จากนั้น คุณควรขยายเวลาRxWorker
แทนการขยาย Worker
สุดท้ายแล้ว
ลบล้าง RxWorker.createWork()
เพื่อแสดงผล Single<Result>
ซึ่งระบุ Result
ของการดำเนินการ เช่น
ดังต่อไปนี้:
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()
ในเทรดหลัก แต่ระบบส่งกลับ
มีค่าเป็น subscriptiond ในเธรดเบื้องหลังโดยค่าเริ่มต้น คุณสามารถลบล้าง RxWorker.getBackgroundScheduler()
เพื่อเปลี่ยน
ชุดข้อความที่ติดตาม
เมื่อ RxWorker
มีสถานะ onStopped()
ระบบจะกำจัดการสมัครใช้บริการ ดังนั้น
คุณไม่จำเป็นต้องจัดการกับการหยุดงานด้วยวิธีใดๆ เป็นพิเศษ