Các khái niệm về trình quản lý tải trước

Trình quản lý tải trước giúp bạn mang lại trải nghiệm tốt hơn cho người dùng 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. Bạn cũng có thể tuỳ chỉnh thời lượng và thứ hạng của việc tải trước cho mỗi mục.

Một tình huống thường gặp trên mạng xã hội là ứng dụng cho người dùng thấy một danh sách hoặc băng chuyền gồm các lựa chọn về nội dung nghe nhìn. Ví dụ: một ứng dụng có thể hiển thị một băng chuyền gồm các video ngắn. Khi một video kết thúc, ứng dụng sẽ chuyển sang video tiếp theo. Nếu không thích video đang xem, người dùng 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, điều này có thể dẫn đến trải nghiệm khó chịu cho người dùng. Người dùng xem xong một số nội dung nghe nhìn rồi phải chờ nội dung nghe nhìn tiếp theo tải.

Mặt khác, nếu bạn tải trước nội dung quá thường xuyên, thì điều đó sẽ 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 số lượng thích hợp.

Phân công lao động

Nếu bạn sử dụng DefaultPreloadManager, một số thao tác sẽ do mã của bạn thực hiện và một số thao tác 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:

Trình quản lý tải trước sẽ thực hiện những việc sau:

  • Thư viện này theo dõi tất cả các mục nội dung nghe nhìn mà ứng dụng của bạn đã thêm vào.
  • Mỗi khi các mức độ ưu tiên được cập nhật, nó sẽ truy vấn ứng dụng của bạn bằng cách gọi TargetPreloadStatusControl do ứng dụng của bạn triển khai. Nó gọi phương thức này để tìm hiểu lượng của từng mục nội dung nghe nhìn cần tải.
  • Sau khi truy vấn ứng dụng, nó sẽ tải trước một lượng thích hợp cho từng mục nội dung nghe nhìn. Trình quản lý tải trước sẽ quyết định thứ tự tải mục. Thao tác này ưu tiên những 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 một MediaSource kèm theo mọi nội dung đã được tải.

Quy trình quản lý tải trước

Phần này mô tả quy trình làm việc điển hình 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 gồm các 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 video mà họ di chuyển đến.

Tất cả các bước này sẽ được trình bày chi tiết trong các trang sau.

  1. Ứ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 để biết cần tải bao nhiêu phần của mỗi mục nội dung nghe nhìn.
  2. Ứng dụng tạo một DefaultPreloadManager.Builder và truyền chế độ 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.
  3. Ứ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 từng mục, chỉ định vị trí của mục trong băng chuyền.
  4. Đố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 xem cần tải bao nhiêu phần của mục đó. Chế độ kiểm soát tải trước mục tiêu có thể cho biết cần tải một khoảng thời gian nhất định của nội dung, chỉ cần 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 nhận được thông tin này, trình quản lý tải trước sẽ bắt đầu tải nội dung nghe nhìn.
  5. 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 một MediaSource cho mục nội dung nghe nhìn đó. Ứng dụng cũng gọi setCurrentPlayingIndex() để 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, để các mức độ ưu tiên của mục nội dung nghe nhìn sẽ được cập nhật.
  6. Bất cứ khi nào các 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 chế độ kiểm soát tải trước mục tiêu một lần nữa để tìm hiểu xem cần tải bao nhiêu cho mỗi mục.
  7. 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.