เมื่อต้องการเริ่มใช้ WorkManager ให้นำเข้าไลบรารีลงใน Android ก่อน
เพิ่มทรัพยากร Dependency ต่อไปนี้ลงในไฟล์ build.gradle
ของแอป
ดึงดูด
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
เมื่อเพิ่มทรัพยากร Dependency และซิงค์ข้อมูลโปรเจ็กต์ Gradle แล้ว ขั้นตอนถัดไปคือการกำหนดงานที่ต้องทำ
ระบุงาน
กำหนดงานโดยใช้ Worker
เมธอด doWork()
ทำงานแบบไม่พร้อมกันบนพื้นหลัง
เทรดมาจาก WorkManager
หากต้องการสร้างงานให้ WorkManager เรียกใช้ ให้ขยายคลาส Worker
และ
ลบล้างเมธอด doWork()
เช่น หากต้องการสร้าง Worker
ที่อัปโหลด
รูปภาพ คุณสามารถทำสิ่งต่างๆ ต่อไปนี้ได้
Kotlin
class UploadWorker(appContext: Context, workerParams: WorkerParameters): Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here--in this case, upload the images. uploadImages() // Indicate whether the work finished successfully with the Result return Result.success() } }
Java
public class UploadWorker extends Worker { public UploadWorker( @NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } @Override public Result doWork() { // Do the work here--in this case, upload the images. uploadImages(); // Indicate whether the work finished successfully with the Result return Result.success(); } }
Result
ที่ส่งคืนจาก doWork()
จะแจ้งให้บริการ WorkManager ทราบว่า
ที่ประสบความสำเร็จ และในกรณีที่ล้มเหลว งานนั้นควรจะมี
ลองอีกครั้งแล้ว
Result.success()
: งานเสร็จเรียบร้อยแล้วResult.failure()
: งานล้มเหลวResult.retry()
: งานไม่สำเร็จและควรลองอีกครั้งในภายหลัง ตาม ลองใช้นโยบายอีกครั้ง
สร้าง WorkRequest
เมื่อกำหนดงานแล้ว คุณต้องกำหนดเวลาด้วยบริการ WorkManager ใน เพื่อให้ทำงาน WorkManager มีความยืดหยุ่นมากในการกำหนดเวลา งาน คุณสามารถตั้งเวลาให้เรียกใช้ เป็นระยะๆ ในช่วงเวลาหนึ่ง หรือคุณจะตั้งเวลาให้เรียกใช้เพียงวิดีโอเดียวก็ได้
ไม่ว่าคุณจะเลือกกำหนดเวลางานอย่างไร คุณจะต้อง
WorkRequest
ขณะที่
Worker
กำหนดหน่วยของงาน
WorkRequest
(และ
คลาสย่อย) จะกำหนดวิธีการและเวลาที่ควรใช้ ในกรณีที่ง่ายที่สุด คุณสามารถ
ใช้
OneTimeWorkRequest
,
ดังที่ปรากฏในตัวอย่างต่อไปนี้
Kotlin
val uploadWorkRequest: WorkRequest = OneTimeWorkRequestBuilderU<ploadWorker(>) .build()
Java
WorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class) .build();
ส่ง WorkRequest ไปยังระบบ
ขั้นตอนสุดท้าย คุณต้องส่ง WorkRequest
ไปยัง WorkManager
โดยใช้
enqueue()
Kotlin
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest)
Java
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest);
เวลาที่ผู้ปฏิบัติงานจะต้องทำงานจริงจะขึ้นอยู่กับ
ข้อจำกัดที่ใช้ใน WorkRequest
และในการเพิ่มประสิทธิภาพระบบ
WorkManager ได้รับการออกแบบมาเพื่อให้ลักษณะการทำงานที่ดีที่สุดภายใต้ข้อจำกัดเหล่านี้
ขั้นตอนถัดไป
คู่มือเริ่มต้นใช้งานนี้เป็นเพียงรอยขีดข่วนบนพื้นผิวเท่านั้น WorkRequest
กระป๋อง
ยังมีข้อมูลเพิ่มเติม เช่น ข้อจำกัดที่อยู่ภายใต้
ควรทำงาน ป้อนข้อมูลลงในงาน การหน่วงเวลา และนโยบาย Backoff สำหรับการลองใหม่
งาน ในส่วนถัดไป ให้เลือกกำหนดงานของคุณ
คำขอ คุณจะ
ศึกษาตัวเลือกเหล่านี้อย่างละเอียดมากขึ้นและเพื่อทำความเข้าใจ
เกี่ยวกับวิธีจัดตารางเวลางานที่ไม่ซ้ำและงานที่เกิดซ้ำ
แหล่งข้อมูลเพิ่มเติม
นอกเหนือจากเอกสารแนะนำแล้ว ยังมีบล็อก, Codelab และโค้ดอีกหลายรายการ ตัวอย่างที่มีให้เพื่อช่วยคุณเริ่มต้นใช้งาน
ตัวอย่าง
- WorkManagerSample แอปประมวลผลรูปภาพที่ใช้งานง่าย
- ดอกทานตะวัน แอปสาธิตที่สาธิตแนวทางปฏิบัติแนะนำสำหรับสถาปัตยกรรมที่หลากหลาย ซึ่งรวมถึง WorkManager
Codelab
- การทำงานกับ WorkManager (Kotlin) และ (Java)
- WorkManager ขั้นสูง (Kotlin)
บล็อก
- ขอแนะนำ WorkManager
- ข้อมูลเบื้องต้นเกี่ยวกับ WorkManager
- WorkManager และ Kotlin
- ระยะเวลาของ WorkManager
- การปรับแต่ง WorkManager - พื้นฐาน
- ปรับแต่ง WorkManager ด้วย Dagger