หากต้องการเริ่มต้นใช้งาน 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") }
เมื่อเพิ่มการพึ่งพาและซิงค์โปรเจ็กต์ 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()
: การดำเนินการไม่สำเร็จและควรลองอีกครั้งในภายหลัง ตามนโยบายการลองอีกครั้ง
สร้างคำขอแจ้งปัญหา
เมื่อกําหนดงานแล้ว คุณต้องกําหนดเวลาให้งานกับบริการ WorkManager เพื่อที่จะทํางานได้ WorkManager มีความยืดหยุ่นอย่างมากในการจัดตารางเวลาทำงาน คุณสามารถตั้งเวลาให้ทํางานเป็นระยะในบางช่วงเวลา หรือตั้งเวลาให้ทํางานเพียงครั้งเดียวก็ได้
ไม่ว่าคุณจะเลือกกำหนดเวลางานอย่างไร คุณจะใช้
WorkRequest
เสมอ ขณะที่ Worker
จะกําหนดหน่วยของงาน WorkRequest
(และคลาสย่อย) จะกําหนดวิธีและเวลาที่ควรเรียกใช้ ในกรณีที่ง่ายที่สุด คุณจะใช้ OneTimeWorkRequest
ได้ ดังที่แสดงในตัวอย่างต่อไปนี้
Kotlin
val uploadWorkRequest: WorkRequest = OneTimeWorkRequestBuilder<UploadWorker>() .build()
Java
WorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class) .build();
ส่งคำขอแจ้งปัญหาไปยังระบบ
สุดท้าย คุณต้องส่ง WorkRequest
ไปยัง WorkManager
โดยใช้วิธี enqueue()
Kotlin
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest)
Java
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest);
เวลาที่แน่นอนที่ระบบจะเรียกใช้ WorkRequest
จะขึ้นอยู่กับข้อจำกัดที่ใช้ใน WorkRequest
และการเพิ่มประสิทธิภาพของระบบ
WorkManager ออกแบบมาเพื่อให้ทำงานได้ดีที่สุดภายใต้ข้อจำกัดเหล่านี้
ขั้นตอนถัดไป
คู่มือเริ่มต้นใช้งานนี้เป็นเพียงข้อมูลเบื้องต้นเท่านั้น WorkRequest
ยังอาจมีข้อมูลเพิ่มเติมด้วย เช่น ข้อจำกัดที่งานควรทำงาน อินพุตสำหรับงาน ความล่าช้า และนโยบายการหยุดทำงานชั่วคราวเพื่อลองทำงานอีกครั้ง ในส่วนถัดไป กำหนดคำของาน คุณจะดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกเหล่านี้อย่างละเอียดยิ่งขึ้น รวมถึงทำความเข้าใจวิธีกำหนดเวลางานที่ไม่ซ้ำกันและงานที่ทำงานซ้ำ
แหล่งข้อมูลเพิ่มเติม
นอกจากเอกสารประกอบคำแนะนำแล้ว ยังมีบล็อก, Codelab และโค้ดตัวอย่างมากมายที่จะช่วยคุณเริ่มต้นใช้งาน
ตัวอย่าง
- Sunflower ซึ่งเป็นแอปสาธิตที่แสดงแนวทางปฏิบัติแนะนำเกี่ยวกับคอมโพเนนต์สถาปัตยกรรมต่างๆ รวมถึง WorkManager
Codelabs
- การทำงานกับ WorkManager (Kotlin) และ (Java)
- WorkManager ขั้นสูง (Kotlin)
บล็อก
- ขอแนะนํา WorkManager
- ข้อมูลเบื้องต้นเกี่ยวกับ WorkManager
- WorkManager และ Kotlin
- ความถี่ของ WorkManager
- การปรับแต่ง WorkManager - พื้นฐาน
- ปรับแต่ง WorkManager ด้วย Dagger