แนวคิดเกี่ยวกับเครื่องมือจัดการการโหลดล่วงหน้า

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

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

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

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

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

การแบ่งงาน

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

แอปของคุณต้องทำสิ่งต่อไปนี้

เครื่องมือจัดการการโหลดล่วงหน้าจะทำสิ่งต่อไปนี้

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

เวิร์กโฟลว์ของเครื่องมือจัดการการโหลดล่วงหน้า

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

เราจะอธิบายขั้นตอนทั้งหมดนี้โดยละเอียดในหน้าต่อไปนี้

  1. แอปสร้าง การควบคุมสถานะการโหลดล่วงหน้าเป้าหมาย เครื่องมือจัดการการโหลดล่วงหน้าจะค้นหาการควบคุมนี้เพื่อดูว่าควรโหลดรายการสื่อแต่ละรายการมากน้อยเพียงใด
  2. แอปสร้าง DefaultPreloadManager.Builder และส่งการควบคุมสถานะการโหลดล่วงหน้าเป้าหมาย จากนั้นแอปจะใช้เครื่องมือสร้างเพื่อสร้างเครื่องมือจัดการการโหลดล่วงหน้า
  3. แอปเพิ่มรายการสื่อลงในเครื่องมือจัดการการโหลดล่วงหน้า แอปจะระบุ ดัชนี สำหรับแต่ละรายการ ซึ่งระบุตำแหน่งของรายการในภาพสไลด์
  4. สำหรับรายการสื่อแต่ละรายการ เครื่องมือจัดการการโหลดล่วงหน้าจะเรียกใช้การควบคุมการโหลดล่วงหน้าเป้าหมายเพื่อค้นหาว่าควรโหลดรายการมากน้อยเพียงใด การควบคุมการโหลดล่วงหน้าเป้าหมายอาจบอกให้โหลดเนื้อหาเป็นระยะเวลาหนึ่ง ดึงข้อมูลเมตาของรายการ หรือไม่ดึงข้อมูลรายการนั้นในตอนนี้ หลังจากที่เครื่องมือจัดการการโหลดล่วงหน้าได้รับข้อมูลนี้แล้ว เครื่องมือจะเริ่มโหลดเนื้อหาสื่อ
  5. เมื่อผู้ใช้เริ่มเล่นเนื้อหา แอปจะเรียกใช้เครื่องมือจัดการการโหลดล่วงหน้า เพื่อขอ MediaSource สำหรับรายการสื่อนั้น นอกจากนี้ แอปยังเรียกใช้ setCurrentPlayingIndex() เพื่อแจ้งให้เครื่องมือจัดการการโหลดล่วงหน้าทราบว่ากำลังเล่นรายการสื่อใดอยู่ เพื่อให้อัปเดตลำดับความสำคัญของรายการสื่อ
  6. เมื่อใดก็ตามที่อัปเดตลำดับความสำคัญของเครื่องมือจัดการการโหลดล่วงหน้า เครื่องมือจะเรียกใช้การควบคุมการโหลดล่วงหน้าเป้าหมายอีกครั้งเพื่อดูว่าควรโหลดแต่ละรายการมากน้อยเพียงใด
  7. เมื่อแอปปิดภาพสไลด์ แอปจะปล่อยเครื่องมือจัดการการโหลดล่วงหน้าเพื่อ เพิ่มพื้นที่ว่างในทรัพยากร