แอปจำนวนมากจำเป็นต้องโอนข้อมูลในเบื้องหลัง คู่มือนี้จะอธิบายตัวเลือกสำหรับการโอนข้อมูลในเบื้องหลังที่เชื่อถือได้ รวมถึงแสดงตัวอย่างวิธีใช้งาน
สถานการณ์ทั่วไปในการโอนข้อมูลเบื้องหลัง
ส่วนนี้จะอธิบายสถานการณ์ทั่วไปบางอย่างที่แอปจำเป็นต้องโอนข้อมูลไปยังหรือจากอุปกรณ์ และช่วยคุณเลือกเครื่องมือที่เหมาะสมกับสถานการณ์ของคุณ
เมื่อเลือก API คุณควรพิจารณาคำถามต่อไปนี้
- การโอนนี้ผู้ใช้เป็นผู้เริ่มใช่ไหม
- มี API ที่จัดการการโอนนี้อยู่แล้วไหม
- งานต้องทำงานทันทีไหม
ตัวเลือก | กรณีที่ควรใช้ | เวลา | ตัวอย่าง |
---|---|---|---|
สำหรับการตั้งเวลางานที่มีระยะเวลาน้อยกว่า 10 นาทีซึ่งควร ดำเนินการเมื่อแอปไม่ปรากฏ |
เลื่อนได้: ปรับได้ตามข้อจำกัด ทันที: ใช้
|
ซิงค์ข้อมูลกับเซิร์ฟเวอร์เป็นระยะๆ การดาวน์โหลดหรือ อัปโหลดสื่อขณะอยู่ในเครือข่ายที่เริ่มต้นในเบื้องหลัง (ไม่ใช่โดยผู้ใช้) |
|
เมื่อผู้ใช้เป็นผู้ทริกเกอร์การโอนข้อมูลและคุณต้องแจ้งให้ผู้ใช้ทราบความคืบหน้าของการโอน |
เริ่มต้นโดยผู้ใช้ (เช่น การคลิกปุ่ม) - เริ่มทันที |
การอัปโหลดรูปภาพ การดาวน์โหลดไฟล์ |
|
สำหรับงานที่สั้น สำคัญ หรือเมื่อ WorkManager ไม่ใช่ตัวเลือก การแจ้งเตือนจะแจ้งให้ผู้ใช้ทราบความคืบหน้าของการโอน |
เริ่มทันที |
|
|
ใช้หากมีสำหรับการดำเนินการนั้นๆ อาจให้ประโยชน์ เช่น ประสิทธิภาพที่เพิ่มขึ้นและการผสานรวมระบบที่ดีขึ้น |
แล้วแต่กรณี |
การซิงค์ข้อมูลกับอุปกรณ์ที่เชื่อมต่อ |
หากสถานการณ์ของคุณไม่ได้อยู่ในรายการสถานการณ์ที่พบบ่อย โปรดดูส่วนต่อไปนี้ เพื่อค้นหา 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
บริการที่ทำงานอยู่เบื้องหน้า
พรอมต์ AI
ระบุ API เฉพาะกรณีการใช้งาน
พรอมต์นี้จะขอ API ที่เฉพาะเจาะจงสำหรับงานการโอนข้อมูล
I want to transfer data from an Android mobile device to [device_type]. Is there a specific API available?
ใช้ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่เฉพาะเจาะจงมากขึ้น
หาก WorkManager และ JobScheduler ไม่เหมาะกับงานที่ทำอยู่เบื้องหลังที่เฉพาะเจาะจง คุณอาจต้องใช้บริการที่ทำงานอยู่เบื้องหน้า
เช่นเคย เมื่อพิจารณาใช้บริการที่ทำงานอยู่เบื้องหน้า คุณควร พิจารณาว่ามี API ทางเลือก ที่ดีกว่าซึ่งปรับให้เหมาะกับ Use Case ของคุณหรือไม่
ใช้บริการที่ทำงานอยู่เบื้องหน้าแบบสั้น
หากแอปต้องทำงานที่สำคัญและใช้เวลาสั้นๆ shortService
บริการที่ทำงานในเบื้องหน้า
อาจเป็นตัวเลือกที่ดีที่สุด สถานการณ์ที่shortService
บริการที่ทำงานอยู่เบื้องหน้าอาจเหมาะสมมีดังนี้
- ผู้ใช้เริ่มดำเนินการ (เช่น ซิงค์ข้อมูลกับเซิร์ฟเวอร์) และคุณต้องการ ตรวจสอบว่าการดำเนินการเสร็จสิ้นแม้ว่าผู้ใช้จะส่ง แอปไปทำงานเบื้องหลังทันทีก็ตาม
- การบันทึกข้อมูลในหน่วยความจำไปยังพื้นที่เก็บข้อมูลถาวร
- การเข้ารหัสหรือถอดรหัสข้อมูล
ดูข้อมูลทั้งหมดได้ในเอกสารประกอบshortService
ใช้บริการที่ทำงานอยู่เบื้องหน้าของอุปกรณ์ที่เชื่อมต่อ
หากต้องการโอนข้อมูลไปยังอุปกรณ์ในเครื่องอื่น คุณอาจต้องใช้connectedDevice
บริการที่ทำงานอยู่เบื้องหน้า สถานการณ์ที่พบบ่อยซึ่งคุณอาจต้องดำเนินการนี้มีดังนี้
- การสื่อสารกับอุปกรณ์เสริมบลูทูธ เช่น หูฟังหรือสมาร์ทวอทช์
- การโอนข้อมูลไปยังอุปกรณ์ที่เชื่อมต่อในเครื่องผ่านการเชื่อมต่อ USB, NFC หรือการเชื่อมต่ออินเทอร์เน็ตในเครื่อง
อย่างไรก็ตาม ในสถานการณ์เหล่านี้ คุณอาจใช้ตัวจัดการอุปกรณ์ คู่กันเพื่อเชื่อมต่อกับอุปกรณ์แทนการใช้บริการเบื้องหน้าได้ เช่นเคย หากมี API แบบเฉพาะเจาะจงสำหรับ Use Case ของคุณ API นั้นมักจะเป็นตัวเลือกที่ดีกว่าการใช้บริการที่ทำงานอยู่เบื้องหน้า
ใช้บริการที่ทำงานอยู่เบื้องหน้าสำหรับการประมวลผลสื่อแบบใหม่
หากต้องการประมวลผลข้อมูลสื่อ คุณสามารถใช้mediaProcessing
บริการที่ทำงานอยู่เบื้องหน้าได้ ประเภทบริการนี้จะใช้ได้หากแอปกำหนดเป้าหมายเป็น Android 15 ขึ้นไป เช่น ประเภทบริการนี้เหมาะในกรณีที่
แอปของคุณต้องแปลงรหัสสื่อจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่งเพื่อการเล่น ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับบริการที่ทำงานอยู่เบื้องหน้าสำหรับการประมวลผลสื่อ