Trình quản lý tải trước giúp bạn mang đến cho người dùng trải nghiệm tốt hơn bằng cách phân phát nội dung cho họ nhanh hơn, giảm thời gian chờ khi họ chuyển từ mục này sang mục khác. Thư viện này cũng cho phép bạn tuỳ chỉnh thời lượng và thứ hạng tải trước cho mỗi mục.
Một tình huống phổ biến trên mạng xã hội là ứng dụng hiển thị danh sách hoặc băng chuyền các lựa chọn nội dung nghe nhìn cho người dùng. Ví dụ: một ứng dụng có thể hiển thị băng chuyền video ngắn. Khi một video kết thúc, ứng dụng sẽ chuyển sang video tiếp theo. Và nếu người dùng không thích video họ đang xem, họ có thể vuốt sang video tiếp theo hoặc video trước đó.
Nếu bạn không tải trước nội dung video, người dùng có thể sẽ cảm thấy khó chịu. Người dùng xem xong một số nội dung nghe nhìn và sau đó phải đợi nội dung nghe nhìn tiếp theo tải xong.
Mặt khác, nếu bạn tải trước nội dung quá nhiều, thì việc này sẽ gây lãng phí điện năng và băng thông mạng khi tải nội dung mà người dùng có thể không bao giờ thực sự phát.
DefaultPreloadManager giúp ứng dụng của bạn cân bằng những mối lo ngại này. Trình quản lý tải trước hoạt động với ứng dụng của bạn để quyết định mức độ quan trọng của từng mục nội dung nghe nhìn và tải trước lượng nội dung thích hợp.
Phân công lao động
Nếu bạn sử dụng DefaultPreloadManager, một số công việc sẽ do mã của bạn thực hiện và một số công việc khác sẽ do trình quản lý tải trước thực hiện.
Ứng dụng của bạn phải làm những việc sau:
- Tạo các đối tượng
ExoPlayercủa ứng dụng bằng cách sử dụng cùng một đối tượngDefaultPreloadManager.Buildermà bạn dùng để tạo trình quản lý tải trước. GọiDefaultPreloadManager.Builder.buildExoPlayer()để tạoExoPlayer. - Thông báo cho trình quản lý tải trước về từng mục nội dung nghe nhìn mà trình quản lý này cần theo dõi. Đây có thể không phải là tất cả nội dung trong băng chuyền; thay vào đó, bạn chỉ cần cho hệ thống biết về một vài mục đầu tiên sẽ được phát. Khi người dùng di chuyển qua băng chuyền, bạn có thể thêm và xoá các mục nội dung nghe nhìn khỏi nhóm của trình quản lý tải trước.
- Phản hồi các truy vấn từ trình quản lý tải trước, cho trình quản lý biết lượng nội dung cần tải trước cho mỗi mục.
Tìm nạp nội dung nghe nhìn từ trình quản lý tải trước khi người dùng bắt đầu phát một mục. Trình quản lý tải trước sẽ cung cấp cho ứng dụng của bạn một
MediaSourcecho nội dung đó.Cho trình quản lý tải trước biết chỉ mục của mục đang phát. Trình quản lý tải trước sử dụng thông tin này để xác định mức độ gần của mỗi mục nội dung nghe nhìn với mục đang phát, đồng thời linh động ưu tiên tải trước cho phù hợp. Khi người dùng chuyển đến một mục mới, hãy cập nhật chỉ mục đó bằng trình quản lý tải trước.
Giải phóng trình quản lý tải trước khi bạn hoàn tất, giải phóng tài nguyên của trình quản lý này.
Trình quản lý tải trước thực hiện những việc sau:
- Thư viện này theo dõi tất cả mục nội dung nghe nhìn mà ứng dụng của bạn đã thêm vào.
- Mỗi khi mức độ ưu tiên được cập nhật, trình phát sẽ truy vấn ứng dụng của bạn bằng cách gọi một
TargetPreloadStatusControldo ứng dụng của bạn triển khai. Trình phát gọi lệnh này để tìm hiểu mức độ cần tải của từng mục nội dung nghe nhìn. - Sau khi truy vấn ứng dụng, hệ thống sẽ tải trước lượng dữ liệu thích hợp của từng mục nội dung nghe nhìn. Trình quản lý tải trước quyết định thứ tự tải mục. Tính năng này ưu tiên các mục gần nhất với mục mà người dùng đang phát.
- Khi ứng dụng yêu cầu nội dung, trình quản lý tải trước sẽ cung cấp
MediaSourcecùng với bất kỳ nội dung nào đã được tải.
Quy trình công việc của trình quản lý tải trước
Phần này mô tả quy trình làm việc thông thường cho một ứng dụng sử dụng trình quản lý tải trước. Trong ví dụ này, chúng tôi giả định rằng ứng dụng hiển thị một băng chuyền video ngắn. Video đã chọn sẽ tự động phát, nhưng người dùng có thể di chuyển băng chuyền theo một trong hai hướng. Thao tác này sẽ dừng video đang phát và bắt đầu phát video mà họ di chuyển đến.
Tất cả các bước này đều được thảo luận chi tiết trong các trang sau.
- Ứng dụng tạo một chế độ kiểm soát trạng thái tải trước mục tiêu. Trình quản lý tải trước sẽ truy vấn chế độ kiểm soát này để tìm hiểu lượng dữ liệu cần tải cho mỗi mục nội dung nghe nhìn.
- Ứng dụng tạo một
DefaultPreloadManager.Buildervà truyền quyền kiểm soát trạng thái tải trước mục tiêu. Sau đó, ứng dụng sử dụng trình tạo để tạo trình quản lý tải trước. - Ứng dụng thêm các mục nội dung nghe nhìn vào trình quản lý tải trước. Ứng dụng cung cấp một chỉ mục cho mỗi mục, chỉ định vị trí của mục trong băng chuyền.
- Đối với mỗi mục nội dung nghe nhìn, trình quản lý tải trước sẽ gọi chế độ kiểm soát tải trước mục tiêu để truy vấn lượng dữ liệu cần tải của mục đó. Chế độ kiểm soát tải trước mục tiêu có thể yêu cầu tải một thời lượng nội dung nhất định, chỉ tìm nạp siêu dữ liệu của mục hoặc không tìm nạp bất kỳ mục nào tại thời điểm này. Sau khi trình quản lý tải trước nhận được thông tin này, trình quản lý sẽ bắt đầu tải nội dung nghe nhìn.
- Khi người dùng bắt đầu phát nội dung, ứng dụng sẽ gọi trình quản lý tải trước để yêu cầu
MediaSourcecho mục nội dung nghe nhìn đó. Ứng dụng cũng gọisetCurrentPlayingIndex()để cho trình quản lý tải trước biết mục nội dung nghe nhìn nào đang được phát, nhờ đó, mức độ ưu tiên của các mục nội dung nghe nhìn sẽ được cập nhật. - Mỗi khi mức độ ưu tiên của trình quản lý tải trước được cập nhật, trình quản lý này sẽ gọi lại chế độ kiểm soát tải trước mục tiêu một lần nữa để tìm hiểu lượng dữ liệu cần tải cho mỗi mục.
- Khi đóng băng chuyền, ứng dụng sẽ giải phóng trình quản lý tải trước để giải phóng tài nguyên.