ชุดข้อความใน RxWorker

เรามีความสามารถในการทำงานร่วมกันระหว่าง 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() ระบบจะกำจัดการสมัครใช้บริการ ดังนั้น คุณไม่จำเป็นต้องจัดการกับการหยุดงานด้วยวิธีใดๆ เป็นพิเศษ