0Pricing
Android Academy · บทเรียน

ข้อจำกัดและการกำหนดเวลา

เรียกใช้งานภายใต้เงื่อนไขที่เหมาะสม

ข้อจำกัดและการกำหนดเวลา เป็นบทเรียน 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 และอื่น ๆ)
  • setRequiresCharging
  • setRequiresBatteryNotLow
  • setRequiresDeviceIdle
  • setRequiresStorageNotLow

การสร้าง 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เมื่อใดควรใช้ WorkManager
  2. การสร้าง Worker
  3. ข้อจำกัดและการกำหนดเวลา
  4. งานแบบเป็นช่วงและแบบต่อเนื่อง
← กลับไปที่ Android Academy