ข้อจำกัดและการกำหนดเวลา
เรียกใช้งานภายใต้เงื่อนไขที่เหมาะสม
ข้อจำกัดและการกำหนดเวลา เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
เงื่อนไขและการกำหนดเวลา
Worker กำหนดว่า ต้องทำอะไร ส่วน WorkRequest กำหนดว่า จะทำเมื่อใด และ ทำภายใต้เงื่อนไขใด คุณสร้างคำขอ แนบเงื่อนไข แล้วเพิ่มคำขอเข้าคิว
เงื่อนไขคืออะไร
Constraints คือเงื่อนไขที่ต้องเป็นจริงก่อนที่งานจะเริ่มทำงาน เช่น มีการเชื่อมต่อเครือข่ายหรือกำลังชาร์จแบตเตอรี่ WorkManager จะรอจนกว่าเงื่อนไขเหล่านี้จะครบ
การสร้างเงื่อนไข
ใช้ Constraints.Builder เพื่อประกาศข้อกำหนดของคุณ
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresCharging(true)
.build()ประเภทเงื่อนไขที่ใช้บ่อย
เงื่อนไขที่ใช้บ่อย ได้แก่
setRequiredNetworkType(CONNECTED, UNMETERED และอื่น ๆ)setRequiresChargingsetRequiresBatteryNotLowsetRequiresDeviceIdlesetRequiresStorageNotLow
การสร้าง OneTimeWorkRequest
สำหรับงานที่ทำงานเพียงครั้งเดียว ให้ใช้ OneTimeWorkRequestBuilder โดยระบุคลาสเวิร์กเกอร์ของคุณ แล้วแนบเงื่อนไข
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(constraints)
.build()การส่งข้อมูลนำเข้า
แนบข้อมูลนำเข้ากับคำขอด้วย setInputData เวิร์กเกอร์จะอ่านข้อมูลผ่าน inputData
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setInputData(workDataOf("user_id" to "42"))
.setConstraints(constraints)
.build()การเพิ่มงานเข้าคิว
รับอินสแตนซ์ของ WorkManager แล้วเรียกใช้ enqueue WorkManager จะบันทึกคำขอไว้และเรียกใช้เมื่อเงื่อนไขครบ
WorkManager.getInstance(context).enqueue(request)นโยบายการหน่วงเวลาก่อนลองใหม่
เมื่อเวิร์กเกอร์คืนค่า retry() WorkManager จะรอก่อนลองใหม่ คุณกำหนดกลยุทธ์ด้วย setBackoffCriteria โดยเลือกการหน่วงเวลาแบบเชิงเส้นหรือแบบเอ็กซ์โพเนนเชียล
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setBackoffCriteria(
BackoffPolicy.EXPONENTIAL,
10, TimeUnit.SECONDS
)
.build()งานแบบไม่ซ้ำกัน
เพื่อหลีกเลี่ยงการกำหนดเวลางานซ้ำ ให้ใช้ enqueueUniqueWork พร้อมชื่อและนโยบายเมื่อเกิดความขัดแย้ง (KEEP, REPLACE หรือ APPEND)
WorkManager.getInstance(context).enqueueUniqueWork(
"sync_job",
ExistingWorkPolicy.KEEP,
request
)การสังเกตสถานะงาน
คุณสามารถสังเกตสถานะของคำขอ (ENQUEUED, RUNNING, SUCCEEDED, FAILED) ผ่าน getWorkInfoByIdFlow หรือ LiveData ซึ่งมีประโยชน์สำหรับแสดงความคืบหน้าในส่วนติดต่อผู้ใช้
WorkManager.getInstance(context)
.getWorkInfoByIdFlow(request.id)
.collect { info -> /* react to info.state */ }การเพิ่มแท็ก
ติดแท็กให้คำขอด้วย addTag เพื่อให้คุณค้นหาหรือยกเลิกกลุ่มงานที่เกี่ยวข้องกันตามแท็กได้ในภายหลัง เช่น ยกเลิกงาน "อัปโหลด" ทั้งหมดพร้อมกัน
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับเงื่อนไขและการกำหนดเวลาของคุณ
ทบทวน
คุณได้กำหนดเวลางานที่มีเงื่อนไขแล้ว
Constraints.Builderกำหนดเงื่อนไข เช่น เครือข่ายและการชาร์จOneTimeWorkRequestBuilderสร้างคำขอenqueue/enqueueUniqueWorkส่งคำขอเข้าคิว- กำหนดการหน่วงเวลา สังเกตสถานะ และติดแท็กงาน
ถัดไป: งานแบบทำเป็นช่วงเวลาและงานที่เชื่อมโยงกัน
คำถามที่พบบ่อย
บทเรียน “ข้อจำกัดและการกำหนดเวลา” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ข้อจำกัดและการกำหนดเวลา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ข้อจำกัดและการกำหนดเวลา”
เรียกใช้งานภายใต้เงื่อนไขที่เหมาะสม คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ข้อจำกัดและการกำหนดเวลา” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เมื่อใดควรใช้ WorkManager
- การสร้าง Worker
- ข้อจำกัดและการกำหนดเวลา
- งานแบบเป็นช่วงและแบบต่อเนื่อง