ตัวเลือกงานในเบื้องหลังการโอนข้อมูล

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

สถานการณ์ทั่วไปในการโอนข้อมูลเบื้องหลัง

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

เมื่อเลือก API คุณควรพิจารณาคำถามต่อไปนี้

  • การโอนนี้ผู้ใช้เป็นผู้เริ่มใช่ไหม
  • มี API ที่จัดการการโอนนี้อยู่แล้วไหม
  • งานต้องทำงานทันทีไหม
ตัวเลือก กรณีที่ควรใช้ เวลา ตัวอย่าง

WorkManager

สำหรับการตั้งเวลางานที่มีระยะเวลาน้อยกว่า 10 นาทีซึ่งควร ดำเนินการเมื่อแอปไม่ปรากฏ

เลื่อนได้: ปรับได้ตามข้อจำกัด

ทันที: ใช้ setExpedited หากต้องเรียกใช้งานทันที

ซิงค์ข้อมูลกับเซิร์ฟเวอร์เป็นระยะๆ

การดาวน์โหลดหรือ อัปโหลดสื่อขณะอยู่ในเครือข่ายที่เริ่มต้นในเบื้องหลัง (ไม่ใช่โดยผู้ใช้)

งานการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้

เมื่อผู้ใช้เป็นผู้ทริกเกอร์การโอนข้อมูลและคุณต้องแจ้งให้ผู้ใช้ทราบความคืบหน้าของการโอน

เริ่มต้นโดยผู้ใช้ (เช่น การคลิกปุ่ม) - เริ่มทันที

การอัปโหลดรูปภาพ การดาวน์โหลดไฟล์

บริการที่ทำงานอยู่เบื้องหน้า

สำหรับงานที่สั้น สำคัญ หรือเมื่อ WorkManager ไม่ใช่ตัวเลือก การแจ้งเตือนจะแจ้งให้ผู้ใช้ทราบความคืบหน้าของการโอน

เริ่มทันที

connectedDevice: การซิงค์ข้อมูลกับอุปกรณ์ที่เชื่อมต่อ

shortService: ประมวลผลไฟล์ภายใน 3 นาที

mediaProcessing: การเข้ารหัสหรือถอดรหัสไฟล์สื่อ

API ที่เฉพาะเจาะจง

ใช้หากมีสำหรับการดำเนินการนั้นๆ อาจให้ประโยชน์ เช่น ประสิทธิภาพที่เพิ่มขึ้นและการผสานรวมระบบที่ดีขึ้น

แล้วแต่กรณี

การซิงค์ข้อมูลกับอุปกรณ์ที่เชื่อมต่อ

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

ใช้ประเภทงานการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้

หากแอปต้องโอนข้อมูลไปยังเซิร์ฟเวอร์ระยะไกล คุณอาจต้องใช้ งานการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้ งานประเภทนี้เหมาะสำหรับกรณีต่อไปนี้

  • ผู้ใช้เริ่มการโอนข้อมูล
  • คุณต้องแจ้งให้ผู้ใช้ทราบความคืบหน้าในการโอนข้อมูล
  • การที่ระบบขัดจังหวะการโอนจะส่งผลเสียต่อประสบการณ์ของผู้ใช้

หากไม่เป็นไปตามเงื่อนไขใดๆ เหล่านี้ คุณควรใช้ WorkManager แทน

เช่น แอปสื่ออาจอนุญาตให้ผู้ใช้ดาวน์โหลดอัลบั้มเพื่อเล่นในเครื่อง หาก ผู้ใช้ต้องการดาวน์โหลดเพลย์ลิสต์และเล่นทันที คุณอาจต้องใช้ ประเภทงานการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้ ในทางกลับกัน หากผู้ใช้ต้องการให้เพลย์ลิสต์ที่ดาวน์โหลดอัปเดตเป็นระยะๆ ในเบื้องหลังโดยไม่ต้องให้ผู้ใช้เริ่มการอัปเดต WorkManager จะเป็นตัวเลือกที่ดีกว่า

ดูข้อมูลเพิ่มเติม รวมถึงวิธีสร้างและเรียกใช้งานการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้ได้ในเอกสารประกอบเกี่ยวกับงานการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้

ใช้ WorkManager สำหรับการโอนข้อมูล

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

เมื่อใช้ WorkManager เพื่อโอนข้อมูลในเบื้องหลัง คุณควรคำนึงถึงสิ่งต่อไปนี้

  • หากต้องการเรียกใช้งานโดยเร็วที่สุด คุณสามารถกำหนดเวลาสำหรับ คำของานเร่งด่วนได้ ตัวเลือกนี้มีประโยชน์อย่างยิ่งหากคุณ กำหนดเวลางานเพื่อตอบสนองต่อข้อความออกอากาศ ข้อความปลุกที่แน่นอน หรือข้อความ FCM ที่มีลำดับความสำคัญสูง
  • หากต้องการให้งานทำงานเป็นระยะๆ คุณสามารถตั้งเวลางาน เป็นระยะๆ ได้ คำของานเป็นระยะช่วยให้คุณระบุได้คร่าวๆ ว่าจะให้งานทำงานบ่อยแค่ไหน แต่ไม่ได้เป็นการรับประกันเวลาที่เฉพาะเจาะจง ซึ่งช่วยให้ ระบบจัดกำหนดการคำของานจากแอปต่างๆ เพื่อปรับสมดุลความต้องการ ในอุปกรณ์ได้
  • คุณควรกำหนดข้อจำกัดของงานเพื่อระบุสถานการณ์ที่เหมาะสมในการเรียกใช้ชิ้นงาน เช่น หากแอปต้องดาวน์โหลด ทรัพยากรที่ไม่เร่งด่วน คุณอาจระบุว่าควรรันงานขณะที่ อุปกรณ์กำลังชาร์จและเชื่อมต่อกับเครือข่ายที่ไม่จำกัดปริมาณการใช้งาน จากนั้น WorkManager จะเรียกใช้ งานในเวลาที่สมดุลกับภาระงานในระบบ
  • WorkManager ยกเลิกและลองงานอีกครั้งได้ฟรีหากจำเป็น เช่น ผู้ใช้อาจปิดอุปกรณ์ขณะที่งานกำลังทำงานอยู่ จากนั้นระบบจะ ลองทำงานอีกครั้งเมื่ออุปกรณ์พร้อมใช้งานอีกครั้ง อย่าลืมออกแบบ และทดสอบเวิร์กโฟลว์เพื่อให้วงจรการยกเลิกและลองอีกครั้งทำงาน ได้อย่างถูกต้อง
  • Worker ที่ทำงานเป็นเวลานาน (บริการที่ทำงานอยู่เบื้องหน้า): WorkManager รองรับงานที่ใช้เวลานานกว่า 10 นาทีโดยการสร้างบริการที่ทำงานอยู่เบื้องหน้าสำหรับแอป ซึ่งหมายความว่าบริการนี้จะอยู่ภายใต้ข้อจำกัดเดียวกันกับบริการที่ทำงานอยู่เบื้องหน้าและงาน รวมถึงข้อจำกัดในการเปิดจากเบื้องหลังและขีดจำกัดการดำเนินการ (ระบบจะกำหนดเวลางานใหม่หากใช้เวลานานกว่า 10 นาที)

JobScheduler เป็นอีกตัวเลือกหนึ่งสำหรับการกำหนดเวลางานในเบื้องหลัง ซึ่งแตกต่างจาก WorkManager ตรงที่คุณต้องกำหนดค่าเพิ่มเติม แต่ข้อดีคือคุณมีสิทธิ์เข้าถึง API ที่ปัจจุบันยังไม่มีใน WorkManager เช่น setPrefetch, setUserInitiated และ getPendingJobReasons

ใช้ API ที่เฉพาะเจาะจง

ใช้ API ที่เฉพาะเจาะจงหากมี (เช่น companion device manager) หรือใช้connectedDeviceบริการที่ทำงานอยู่เบื้องหน้า

ระบุ API เฉพาะกรณีการใช้งาน

พรอมต์นี้จะขอ API ที่เฉพาะเจาะจงสำหรับงานการโอนข้อมูล


I want to transfer data from an Android mobile device to [device_type]. Is there a specific API available?

การใช้พรอมต์ AI

พรอมต์ AI มีไว้เพื่อใช้ภายใน Gemini ใน Android Studio

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Gemini ใน Studio ได้ที่ https://developer.android.com/studio/gemini/overview

ใช้ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่เฉพาะเจาะจงมากขึ้น

หาก WorkManager และ JobScheduler ไม่เหมาะกับงานที่ทำอยู่เบื้องหลังที่เฉพาะเจาะจง คุณอาจต้องใช้บริการที่ทำงานอยู่เบื้องหน้า

เช่นเคย เมื่อพิจารณาใช้บริการที่ทำงานอยู่เบื้องหน้า คุณควร พิจารณาว่ามี API ทางเลือก ที่ดีกว่าซึ่งปรับให้เหมาะกับ Use Case ของคุณหรือไม่

ใช้บริการที่ทำงานอยู่เบื้องหน้าแบบสั้น

หากแอปต้องทำงานที่สำคัญและใช้เวลาสั้นๆ shortServiceบริการที่ทำงานในเบื้องหน้า อาจเป็นตัวเลือกที่ดีที่สุด สถานการณ์ที่shortService บริการที่ทำงานอยู่เบื้องหน้าอาจเหมาะสมมีดังนี้

  • ผู้ใช้เริ่มดำเนินการ (เช่น ซิงค์ข้อมูลกับเซิร์ฟเวอร์) และคุณต้องการ ตรวจสอบว่าการดำเนินการเสร็จสิ้นแม้ว่าผู้ใช้จะส่ง แอปไปทำงานเบื้องหลังทันทีก็ตาม
  • การบันทึกข้อมูลในหน่วยความจำไปยังพื้นที่เก็บข้อมูลถาวร
  • การเข้ารหัสหรือถอดรหัสข้อมูล

ดูข้อมูลทั้งหมดได้ในเอกสารประกอบshortService

ใช้บริการที่ทำงานอยู่เบื้องหน้าของอุปกรณ์ที่เชื่อมต่อ

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

  • การสื่อสารกับอุปกรณ์เสริมบลูทูธ เช่น หูฟังหรือสมาร์ทวอทช์
  • การโอนข้อมูลไปยังอุปกรณ์ที่เชื่อมต่อในเครื่องผ่านการเชื่อมต่อ USB, NFC หรือการเชื่อมต่ออินเทอร์เน็ตในเครื่อง

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

ใช้บริการที่ทำงานอยู่เบื้องหน้าสำหรับการประมวลผลสื่อแบบใหม่

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

แหล่งข้อมูลเพิ่มเติม