แอปจำนวนมากจำเป็นต้องโอนข้อมูลในเบื้องหลัง คู่มือนี้จะอธิบายตัวเลือกสำหรับการโอนข้อมูลในเบื้องหลังที่เชื่อถือได้ รวมถึงแสดงตัวอย่างวิธีใช้งาน
สถานการณ์ทั่วไปในการโอนข้อมูลเบื้องหลัง
ส่วนนี้จะอธิบายสถานการณ์ทั่วไปบางอย่างที่แอปจำเป็นต้องโอนข้อมูลไปยังหรือจากอุปกรณ์ และช่วยคุณเลือกเครื่องมือที่เหมาะสมกับสถานการณ์ของคุณ
เมื่อเลือก 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 ขึ้นไป เช่น ประเภทบริการนี้เหมาะในกรณีที่
แอปของคุณต้องแปลงรหัสสื่อจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่งเพื่อการเล่น ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับบริการที่ทำงานอยู่เบื้องหน้าสำหรับการประมวลผลสื่อ