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