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

งานแบบเป็นช่วงและแบบต่อเนื่อง

ทำงานเบื้องหลังซ้ำและเรียงลำดับ

งานแบบเป็นช่วงและแบบต่อเนื่อง เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

งานแบบทำเป็นช่วงเวลาและงานที่เชื่อมโยงกัน

นอกเหนือจากงานที่ทำครั้งเดียวแล้ว WorkManager ยังสามารถ ทำงานซ้ำ ตามกำหนดเวลา และ เชื่อมโยง เวิร์กเกอร์หลายตัวให้ทำงานตามลำดับได้ บทเรียนนี้ครอบคลุมทั้งสองเรื่อง

PeriodicWorkRequest

สำหรับงานที่ต้องทำซ้ำ ให้ใช้ PeriodicWorkRequestBuilder พร้อมระบุช่วงเวลาการทำซ้ำ WorkManager จะเรียกใช้เวิร์กเกอร์อีกครั้งเมื่อครบแต่ละช่วงเวลา

val periodic = PeriodicWorkRequestBuilder<SyncWorker>(
    repeatInterval = 1,
    repeatIntervalTimeUnit = TimeUnit.HOURS
).build()

ขั้นต่ำ 15 นาที

ช่วงเวลาการทำซ้ำขั้นต่ำคือ 15 นาที คำขอที่กำหนดช่วงเวลาสั้นกว่านี้จะถูกปรับเป็น 15 นาที เพื่อประหยัดแบตเตอรี่ WorkManager ไม่เหมาะสำหรับการกำหนดเวลาที่ต้องทำงานทุกวินาที

งานแบบทำเป็นช่วงเวลาไม่ตรงเวลาเป๊ะ

ช่วงเวลาเป็นเพียงแนวทาง ไม่ใช่ตัวจับเวลาที่แม่นยำ ระบบอาจเรียกใช้งานช้าลงเพื่อรวมงานเป็นชุดและประหยัดพลังงาน อย่าพึ่งพาสิ่งนี้สำหรับงานที่ต้องตรงตามเวลาอย่างเคร่งครัด

การเพิ่มงานแบบทำเป็นช่วงเวลาที่ไม่ซ้ำกันเข้าคิว

ใช้ enqueueUniquePeriodicWork เพื่อไม่ให้มีงานแบบทำเป็นช่วงเวลาเดียวกันหลายชุดซ้อนกันเมื่อเปิดแอปหลายครั้ง

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
    "daily_sync",
    ExistingPeriodicWorkPolicy.KEEP,
    periodic
)

การเชื่อมโยงงานคืออะไร

Chaining จะเรียกใช้เวิร์กเกอร์ตามลำดับที่กำหนดไว้ โดยขั้นตอน B จะเริ่มทำงานเมื่อขั้นตอน A สำเร็จเท่านั้น ผลลัพธ์ของขั้นตอนหนึ่งจะกลายเป็นข้อมูลนำเข้าของขั้นตอนถัดไป

beginWith และ then

เริ่มห่วงโซ่ด้วย beginWith และเพิ่มขั้นตอนตามลำดับด้วย then เรียกใช้ enqueue เพื่อส่งห่วงโซ่ทั้งหมดเข้าคิว

WorkManager.getInstance(context)
    .beginWith(compressRequest)
    .then(uploadRequest)
    .then(cleanupRequest)
    .enqueue()

ข้อมูลไหลผ่านห่วงโซ่

Data ผลลัพธ์จากเวิร์กเกอร์หนึ่งจะถูกส่งเป็นข้อมูลนำเข้าให้เวิร์กเกอร์ถัดไป ดังนั้น compressRequest จึงสามารถคืนค่าเส้นทางไฟล์ที่ uploadRequest อ่านจาก inputData ได้

ขั้นตอนแบบขนานในห่วงโซ่

คุณสามารถเรียกใช้เวิร์กเกอร์หลายตัวพร้อมกันได้โดยส่งรายการไปยัง beginWith ส่วน then ถัดไปจะรอให้เวิร์กเกอร์ทั้งหมดทำงานเสร็จ

WorkManager.getInstance(context)
    .beginWith(listOf(downloadA, downloadB))
    .then(mergeRequest)
    .enqueue()

ข้อผิดพลาดหยุดห่วงโซ่

หากเวิร์กเกอร์ตัวใดคืนค่า Result.failure() ขั้นตอนที่เหลือในห่วงโซ่จะถูกยกเลิก อย่างไรก็ตาม retry() จะหยุดห่วงโซ่ไว้ชั่วคราวจนกว่าขั้นตอนนั้นจะสำเร็จในที่สุด

การใช้ร่วมกับเงื่อนไข

คำขอแต่ละรายการในห่วงโซ่ หรือคำขอแบบทำเป็นช่วงเวลาแต่ละรายการ สามารถมีเงื่อนไขของตนเองได้ ตัวอย่างเช่น เฉพาะขั้นตอนอัปโหลดเท่านั้นที่ต้องใช้เครือข่ายแบบไม่คิดค่าบริการตามปริมาณข้อมูล ในขณะที่การบีบอัดสามารถทำงานได้ทุกเมื่อ

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับงานแบบทำเป็นช่วงเวลาและงานที่เชื่อมโยงกันของคุณ

ทบทวน

คุณได้เรียนรู้เกี่ยวกับงานแบบทำเป็นช่วงเวลาและงานที่เชื่อมโยงกัน

  • PeriodicWorkRequestBuilder ทำให้งานทำซ้ำ โดยมีขั้นต่ำ 15 นาทีและไม่ตรงเวลาเป๊ะ
  • beginWith().then() เชื่อมโยงเวิร์กเกอร์ตามลำดับ
  • ข้อมูลผลลัพธ์ไหลจากขั้นตอนหนึ่งไปยังขั้นตอนถัดไป ส่วนรายการจะทำงานแบบขนาน
  • ข้อผิดพลาดจะยกเลิกห่วงโซ่ และแต่ละขั้นตอนสามารถมีเงื่อนไขของตนเองได้

คุณเรียนหลักสูตร WorkManager จบแล้ว

คำถามที่พบบ่อย

บทเรียน “งานแบบเป็นช่วงและแบบต่อเนื่อง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “งานแบบเป็นช่วงและแบบต่อเนื่อง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “งานแบบเป็นช่วงและแบบต่อเนื่อง”

ทำงานเบื้องหลังซ้ำและเรียงลำดับ คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “งานแบบเป็นช่วงและแบบต่อเนื่อง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม

ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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