เครื่องมือจัดการการโหลดล่วงหน้าช่วยให้คุณมอบประสบการณ์การใช้งานที่ดีขึ้นแก่ผู้ใช้ด้วยการแสดงเนื้อหาให้ผู้ใช้ได้เร็วขึ้น โดยไม่ต้องรอมากนักเมื่อเปลี่ยนจากรายการหนึ่งไปยังอีกรายการหนึ่ง นอกจากนี้ ยังช่วยให้คุณปรับแต่งระยะเวลาและการจัดอันดับการโหลดล่วงหน้าต่อรายการได้ด้วย
สถานการณ์ที่พบได้ทั่วไปในโซเชียลมีเดียคือ แอปจะแสดงรายการหรือภาพสไลด์ของตัวเลือกสื่อให้ผู้ใช้ เช่น แอปอาจแสดงภาพสไลด์ของวิดีโอสั้นๆ เมื่อวิดีโอหนึ่งจบลง แอปจะเปลี่ยนไปเล่นวิดีโอถัดไป และหากผู้ใช้ไม่ชอบวิดีโอที่กำลังดูอยู่ ผู้ใช้อาจปัดไปดูวิดีโอถัดไปหรือวิดีโอก่อนหน้า
หากคุณไม่ได้โหลดเนื้อหาวิดีโอไว้ล่วงหน้า ผู้ใช้อาจได้รับประสบการณ์การใช้งานที่ไม่ดี ผู้ใช้ดูสื่อบางอย่างจบแล้วต้องรอให้สื่อถัดไปโหลด
ในทางกลับกัน หากคุณโหลดเนื้อหาไว้ล่วงหน้ามากเกินไป ก็จะสิ้นเปลืองพลังงานและแบนด์วิดท์เครือข่ายในการโหลดเนื้อหาที่ผู้ใช้อาจไม่เคยเล่นเลย
DefaultPreloadManager ช่วยให้แอปของคุณจัดการกับข้อกังวลเหล่านี้ได้ เครื่องมือจัดการการโหลดล่วงหน้าจะทำงานร่วมกับแอปของคุณเพื่อตัดสินใจว่ารายการสื่อแต่ละรายการมีความสำคัญเพียงใด และโหลดเนื้อหาล่วงหน้าในปริมาณที่เหมาะสม
การแบ่งงาน
หากคุณใช้ DefaultPreloadManager โค้ดของคุณจะทำงานบางอย่าง และเครื่องมือจัดการการโหลดล่วงหน้าจะทำงานบางอย่าง
แอปของคุณต้องทำสิ่งต่อไปนี้
- สร้างออบเจ็กต์
ExoPlayerของแอปโดยใช้ออบเจ็กต์DefaultPreloadManager.Builderเดียวกันกับที่คุณใช้สร้างเครื่องมือจัดการการโหลดล่วงหน้า เรียกใช้DefaultPreloadManager.Builder.buildExoPlayer()เพื่อสร้างExoPlayer - แจ้งให้เครื่องมือจัดการการโหลดล่วงหน้าทราบเกี่ยวกับรายการสื่อแต่ละรายการที่ควรติดตาม ซึ่งอาจไม่ใช่เนื้อหาทั้งหมดในภาพสไลด์ แต่คุณเพียงแค่แจ้งให้ทราบเกี่ยวกับรายการแรกๆ ที่จะเล่น เมื่อผู้ใช้เลื่อนดูภาพสไลด์ คุณสามารถเพิ่ม และนำรายการสื่อออกจาก พูลของเครื่องมือจัดการการโหลดล่วงหน้าได้
- ตอบคำค้นหาจากเครื่องมือจัดการการโหลดล่วงหน้า โดยบอกเครื่องมือจัดการว่าควรโหลดเนื้อหา มาก น้อยเพียงใด ไว้ล่วงหน้าสำหรับแต่ละรายการ
ดึงข้อมูลสื่อจากเครื่องมือจัดการการโหลดล่วงหน้าเมื่อผู้ใช้เริ่มเล่น รายการ เครื่องมือจัดการการโหลดล่วงหน้าจะให้
MediaSourceสำหรับเนื้อหานั้นแก่แอปของคุณแจ้งให้เครื่องมือจัดการการโหลดล่วงหน้าทราบดัชนีของรายการที่กำลังเล่นอยู่ เครื่องมือจัดการการโหลดล่วงหน้าใช้ข้อมูลนี้เพื่อกำหนดว่ารายการสื่อแต่ละรายการอยู่ใกล้กับรายการที่กำลังเล่นอยู่มากน้อยเพียงใด และจัดลำดับความสำคัญในการโหลดล่วงหน้าแบบไดนามิกตามนั้น เมื่อผู้ใช้ไปยังรายการใหม่ ให้อัปเดตดัชนีนั้นด้วยเครื่องมือจัดการการโหลดล่วงหน้า
ปล่อยเครื่องมือจัดการการโหลดล่วงหน้าเมื่อใช้งานเสร็จแล้ว เพื่อเพิ่มพื้นที่ว่างใน ทรัพยากร
เครื่องมือจัดการการโหลดล่วงหน้าจะทำสิ่งต่อไปนี้
- ติดตามรายการสื่อทั้งหมดที่แอปของคุณเพิ่มลงในเครื่องมือ
- ทุกครั้งที่อัปเดตลำดับความสำคัญ เครื่องมือจะค้นหาแอปของคุณโดยเรียกใช้
TargetPreloadStatusControlที่แอปของคุณติดตั้งใช้งาน เครื่องมือจะเรียกใช้ฟังก์ชันนี้เพื่อ ดูว่าควรโหลดรายการสื่อแต่ละรายการ มากน้อยเพียงใด - หลังจากค้นหาแอปแล้ว เครื่องมือจะโหลดรายการสื่อแต่ละรายการไว้ล่วงหน้าในปริมาณที่เหมาะสม เครื่องมือจัดการการโหลดล่วงหน้าจะตัดสินใจลำดับการโหลดรายการ โดยจะจัดลำดับความสำคัญของรายการที่อยู่ใกล้กับรายการที่ผู้ใช้กำลังเล่น
- เมื่อแอปขอเนื้อหา เครื่องมือจัดการการโหลดล่วงหน้าจะให้
MediaSourceที่มีเนื้อหาที่โหลดไว้แล้ว
เวิร์กโฟลว์ของเครื่องมือจัดการการโหลดล่วงหน้า
ส่วนนี้อธิบายเวิร์กโฟลว์ทั่วไปสำหรับแอปที่ใช้เครื่องมือจัดการการโหลดล่วงหน้า ในตัวอย่างนี้ เราจะสมมติว่าแอปแสดงภาพสไลด์ของวิดีโอสั้นๆ วิดีโอที่เลือกจะเล่นโดยอัตโนมัติ แต่ผู้ใช้สามารถเลื่อนภาพสไลด์ไปในทิศทางใดก็ได้ ซึ่งจะหยุดวิดีโอที่กำลังเล่นอยู่และเริ่มวิดีโอที่ผู้ใช้เลื่อนไปดู
เราจะอธิบายขั้นตอนทั้งหมดนี้โดยละเอียดในหน้าต่อไปนี้
- แอปสร้าง การควบคุมสถานะการโหลดล่วงหน้าเป้าหมาย เครื่องมือจัดการการโหลดล่วงหน้าจะค้นหาการควบคุมนี้เพื่อดูว่าควรโหลดรายการสื่อแต่ละรายการมากน้อยเพียงใด
- แอปสร้าง
DefaultPreloadManager.Builderและส่งการควบคุมสถานะการโหลดล่วงหน้าเป้าหมาย จากนั้นแอปจะใช้เครื่องมือสร้างเพื่อสร้างเครื่องมือจัดการการโหลดล่วงหน้า - แอปเพิ่มรายการสื่อลงในเครื่องมือจัดการการโหลดล่วงหน้า แอปจะระบุ ดัชนี สำหรับแต่ละรายการ ซึ่งระบุตำแหน่งของรายการในภาพสไลด์
- สำหรับรายการสื่อแต่ละรายการ เครื่องมือจัดการการโหลดล่วงหน้าจะเรียกใช้การควบคุมการโหลดล่วงหน้าเป้าหมายเพื่อค้นหาว่าควรโหลดรายการมากน้อยเพียงใด การควบคุมการโหลดล่วงหน้าเป้าหมายอาจบอกให้โหลดเนื้อหาเป็นระยะเวลาหนึ่ง ดึงข้อมูลเมตาของรายการ หรือไม่ดึงข้อมูลรายการนั้นในตอนนี้ หลังจากที่เครื่องมือจัดการการโหลดล่วงหน้าได้รับข้อมูลนี้แล้ว เครื่องมือจะเริ่มโหลดเนื้อหาสื่อ
- เมื่อผู้ใช้เริ่มเล่นเนื้อหา แอปจะเรียกใช้เครื่องมือจัดการการโหลดล่วงหน้า
เพื่อขอ
MediaSourceสำหรับรายการสื่อนั้น นอกจากนี้ แอปยังเรียกใช้setCurrentPlayingIndex()เพื่อแจ้งให้เครื่องมือจัดการการโหลดล่วงหน้าทราบว่ากำลังเล่นรายการสื่อใดอยู่ เพื่อให้อัปเดตลำดับความสำคัญของรายการสื่อ - เมื่อใดก็ตามที่อัปเดตลำดับความสำคัญของเครื่องมือจัดการการโหลดล่วงหน้า เครื่องมือจะเรียกใช้การควบคุมการโหลดล่วงหน้าเป้าหมายอีกครั้งเพื่อดูว่าควรโหลดแต่ละรายการมากน้อยเพียงใด
- เมื่อแอปปิดภาพสไลด์ แอปจะปล่อยเครื่องมือจัดการการโหลดล่วงหน้าเพื่อ เพิ่มพื้นที่ว่างในทรัพยากร