แอปจำนวนมากต้องโอนข้อมูลในเบื้องหลัง หน้านี้จะช่วยคุณค้นหาแนวทางที่เหมาะกับความต้องการของคุณ
กรณีการใช้งานการย้ายข้อมูล
ส่วนนี้อธิบายสถานการณ์ทั่วไปบางส่วนที่แอปต้องโอน ไปยังหรือออกจากอุปกรณ์ และช่วยให้คุณเลือกเครื่องมือที่เหมาะสมสำหรับ
- การโอนข้อมูลผ่านเครือข่าย
หากผู้ใช้เป็นผู้เริ่มการโอนและคุณต้องคงผู้ใช้ไว้ แจ้งเกี่ยวกับความคืบหน้าของการโอน ใช้การโอนข้อมูลที่เริ่มต้นโดยผู้ใช้ API หรือใช้ WorkManager หรือ ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่เหมาะสม
หากต้องการตั้งเวลาการดาวน์โหลด คุณสามารถใช้
DownloadManager
DownloadManager
จะจัดการ ของวงจร และดูแลเรื่องการดาวน์โหลดซ้ำ หลังความล้มเหลว การรีบูตอุปกรณ์ และการเชื่อมต่อที่เปลี่ยนไป อย่างไรก็ตามDownloadManager
ไม่ได้นำเสนอ ฟีเจอร์การทดสอบและการแก้ไขข้อบกพร่องที่มีให้บริการในWorkManager
และJobScheduler
- การโอนข้อมูลไปยังหรือจากอุปกรณ์ในเครือข่ายเดียวกัน
ใช้ API เฉพาะ หากมี (เช่น อุปกรณ์ที่ใช้ร่วมกัน ผู้จัดการ) หรือไม่เช่นนั้น ให้ใช้เบื้องหน้า
connectedDevice
บริการ- กำลังแปลงสื่อ
- การทำงานสั้นๆ ที่สำคัญ
- การประมวลผลไฟล์ (เช่น การโอนข้อมูลไปยังหรือจากการ์ด SD, การปรับขนาดเนื้อหา หรือการเข้ารหัสหรือถอดรหัสข้อมูล)
หากงานเสร็จสมบูรณ์ในเวลาไม่ถึง 3 นาที ให้ใช้
shortService
บริการที่ทำงานอยู่เบื้องหน้า หรือใช้ WorkManager
ใช้ API การโอนข้อมูลที่เริ่มต้นโดยผู้ใช้
หากแอปของคุณต้องโอนข้อมูลไปยังเซิร์ฟเวอร์ระยะไกล คุณอาจต้องการใช้ API การโอนข้อมูลที่เริ่มต้นโดยผู้ใช้ใหม่ API เหล่านี้มีความเหมาะสมหาก ต่อไปนี้เป็นจริง
- ผู้ใช้เริ่มการโอนข้อมูล
- คุณต้องแจ้งให้ผู้ใช้ทราบความคืบหน้าในการโอนข้อมูล
- เป็นอันตรายต่อประสบการณ์ของผู้ใช้หากระบบขัดจังหวะการโอน
หากไม่เป็นไปตามเงื่อนไขข้อใดข้อหนึ่งเหล่านี้ คุณควรใช้ WorkManager แทน
เช่น แอปสื่ออาจอนุญาตให้ผู้ใช้ดาวน์โหลดอัลบั้มเพื่อเล่นในเครื่องได้ หากมี ผู้ใช้ต้องการดาวน์โหลดเพลย์ลิสต์ และเล่นได้ทันที คุณอาจต้องการใช้ API การโอนข้อมูลที่เริ่มต้นโดยผู้ใช้ ในทางกลับกัน หากผู้ใช้ต้องการ ดาวน์โหลดเพลย์ลิสต์เพื่ออัปเดตเป็นระยะๆ ในเบื้องหลังโดยผู้ใช้ WorkManager น่าจะเหมาะสมกว่า
ดูข้อมูลเพิ่มเติมได้ที่เอกสารเกี่ยวกับการย้ายข้อมูลบริการที่ทำงานอยู่เบื้องหน้าไปยัง งานการโอนข้อมูลที่เริ่มต้นโดยผู้ใช้
ใช้ WorkManager
ในกรณีส่วนใหญ่ WorkManager จะเป็นตัวเลือกที่ดีที่สุดเมื่อคุณต้องการกำหนดเวลางาน คุณต้องออกแบบงานให้ขัดขวางหรือเลื่อนเวลาได้ จากระบบ โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบ WorkManager
โน้ตบางส่วนที่อาจเป็นประโยชน์เมื่อคุณย้ายข้อมูลจากเบื้องหน้ามีดังนี้ ไปยัง WorkManager:
- หากคุณต้องการทำงานโดยเร็วที่สุด คุณสามารถกำหนดเวลา คำขอเร่งด่วนด้านงาน ตัวเลือกนี้จะเป็นประโยชน์อย่างยิ่งหากคุณ กำหนดเวลางานตามการประกาศ การปลุกในเวลาที่แน่นอน หรือ ข้อความ FCM ที่มีลำดับความสำคัญสูง
- หากคุณต้องการให้งานทำงานเป็นระยะๆ คุณสามารถกำหนดเวลาให้งานเป็นระยะ งาน คำของานเป็นระยะช่วยให้คุณระบุความถี่โดยประมาณของ จะทำงาน แต่ไม่ได้รับประกันเวลาที่แน่นอน ซึ่งช่วยให้ ระบบกำหนดเวลาคำของานจากแอปต่างๆ เพื่อปรับสมดุลระหว่างความต้องการ ในอุปกรณ์
- คุณควรกำหนดข้อจำกัดในการทำงานเพื่อระบุสิทธิ์ ในการใช้งานงานของคุณ เช่น หากต้องดาวน์โหลดแอป ทรัพยากรที่ไม่เร่งด่วน คุณอาจระบุว่างานควรทำงานอยู่ในขณะที่ กำลังชาร์จและเชื่อมต่อกับเครือข่ายที่ไม่มีการตรวจวัด WorkManager ทำได้ ให้เรียกใช้งานของคุณในเวลาที่สมดุลระหว่างภาระการทำงานในระบบ
- WorkManager สามารถยกเลิกงานและลองอีกครั้งหากจำเป็น ตัวอย่างเช่น ผู้ใช้อาจปิดอุปกรณ์ขณะที่งานกำลังดำเนินอยู่ ระบบจะดำเนินการ จากนั้นลองทำงานอีกครั้งเมื่ออุปกรณ์พร้อมใช้งานอีกครั้ง อย่าลืมออกแบบ และทดสอบเวิร์กโฟลว์เพื่อให้แน่ใจว่ารอบการยกเลิกและลองทำงานอีกครั้ง อย่างเหมาะสม
ใช้บริการที่ทำงานอยู่เบื้องหน้าประเภทที่เจาะจงมากขึ้น
หากคุณไม่สามารถสลับใช้วิธีอื่นๆ ในการทำงานพื้นหลัง คุณอาจ
ต้องใช้บริการที่ทำงานอยู่เบื้องหน้า ในกรณีนี้ คุณควรค้นหา
ประเภทบริการที่จะใช้แทน dataSync
เนื่องจากโค้ดของคุณใช้
บริการที่ทำงานอยู่เบื้องหน้า การย้ายข้อมูลนี้จะตรงไปตรงมา สิ่งที่คุณต้องเลือก
ประเภทบริการที่ทำงานอยู่เบื้องหน้าที่เหมาะสม และตรวจสอบว่าแอปเป็นไปตามประเภทดังกล่าว
บริการของ Google
และเช่นเคย คุณควรพิจารณาใช้บริการที่ทำงานอยู่เบื้องหน้า ลองพิจารณาว่ามี API ทางเลือกที่ดีกว่าซึ่งปรับให้เหมาะกับการใช้งานของคุณหรือไม่
ใช้บริการที่ทำงานอยู่เบื้องหน้าบริการแบบสั้น
หากแอปจำเป็นต้องทำงานสั้นๆ ที่สำคัญ ส่วนหน้าของ shortService
บริการอาจเป็นตัวเลือกที่ดีที่สุด ต่อไปนี้เป็นสถานการณ์ที่ shortService
บริการที่ทำงานอยู่เบื้องหน้าอาจเหมาะสม:
- ผู้ใช้เริ่มการทำงาน (เช่น ซิงค์ข้อมูลกับเซิร์ฟเวอร์) และคุณต้องการ เพื่อให้แน่ใจว่าการดำเนินการจะเสร็จสิ้น แม้ว่าผู้ใช้จะส่งข้อความ ในพื้นหลัง
- กำลังบันทึกข้อมูลในหน่วยความจำไปยังพื้นที่เก็บข้อมูลถาวร
- การเข้ารหัสหรือการถอดรหัสข้อมูล
อ่านข้อมูลทั้งหมดได้ที่เอกสารประกอบของ shortService
ใช้บริการที่ทำงานอยู่เบื้องหน้าของอุปกรณ์ที่เชื่อมต่อ
หากต้องการโอนข้อมูลไปยังอุปกรณ์อีกเครื่องหนึ่ง คุณอาจต้องใช้
connectedDevice
บริการที่ทำงานอยู่เบื้องหน้า ตัวอย่างสถานการณ์ทั่วไปมีดังนี้
ซึ่งคุณอาจต้องดำเนินการต่อไปนี้
- สื่อสารกับอุปกรณ์เสริมบลูทูธ เช่น หูฟังหรือสมาร์ทวอทช์
- การโอนข้อมูลไปยังอุปกรณ์ที่เชื่อมต่อในเครื่องโดยการเชื่อมต่อ USB, NFC หรือการเชื่อมต่ออินเทอร์เน็ตภายใน
แต่ในกรณีเหล่านี้ คุณอาจใช้อุปกรณ์ที่ใช้ร่วมกันได้ เครื่องมือจัดการ เพื่อเชื่อมต่อกับอุปกรณ์แทนการใช้บริการที่ทำงานอยู่เบื้องหน้า และเช่นเคย หากมี API สำหรับวัตถุประสงค์พิเศษให้ใช้งานสำหรับกรณีการใช้งานของคุณ มักจะเป็นตัวเลือกที่ดีกว่าการใช้บริการที่ทำงานอยู่เบื้องหน้า
ใช้บริการที่ทำงานอยู่เบื้องหน้าสำหรับการประมวลผลสื่อใหม่
หากต้องการประมวลผลข้อมูลสื่อ ให้ใช้ mediaProcessing
ใหม่
บริการที่ทำงานอยู่เบื้องหน้า บริการประเภทนี้สามารถใช้ได้หากแอปของคุณกำหนดเป้าหมายเป็น Android
15 ขึ้นไป ตัวอย่างเช่น บริการประเภทนี้เหมาะสมหาก
แอปของคุณต้องแปลงสื่อจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่งเพื่อเล่น สำหรับ
โปรดดูข้อมูลเพิ่มเติม
เอกสารประกอบเกี่ยวกับบริการที่ทำงานอยู่เบื้องหน้าสำหรับการประมวลผลสื่อ
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงของบริการที่ทำงานอยู่เบื้องหน้าได้ดังต่อไปนี้ แหล่งข้อมูลเพิ่มเติม