Önceden yükleme yöneticisi kavramları

Önceden yükleme yöneticisi, kullanıcılara içerikleri daha hızlı sunarak ve bir öğeden diğerine geçerken daha az beklemelerini sağlayarak daha iyi bir deneyim sunmanıza yardımcı olur. Ayrıca, öğe başına önceden yükleme süresini ve sıralamasını özelleştirmenize de olanak tanır.

Sosyal medyada yaygın bir durum, bir uygulamanın kullanıcıya medya seçeneklerinin bir listesini veya carousel'ini göstermesidir. Örneğin, bir uygulama kısa videolardan oluşan bir bant gösterebilir. Bir video bittiğinde uygulama bir sonraki videoya geçer. Kullanıcı izlediği videoyu beğenmezse kaydırarak sonraki veya önceki videoya geçebilir.

Video içeriğini önceden yüklemezseniz kullanıcı deneyimi olumsuz etkilenebilir. Kullanıcı bir medya içeriğini bitirdikten sonra bir sonraki medya içeriğinin yüklenmesini beklemek zorunda kalır.

Öte yandan, içeriği çok agresif bir şekilde önceden yüklerseniz kullanıcının hiçbir zaman oynatmayabileceği içeriği yüklemek için güç ve ağ bant genişliği boşa harcanır.

DefaultPreloadManager, uygulamanızın bu endişeleri dengelemesine yardımcı olur. Önceden yükleme yöneticisi, her bir medya öğesinin ne kadar önemli olduğuna karar vermek için uygulamanızla birlikte çalışır ve uygun miktarı önceden yükler.

İş bölümü

DefaultPreloadManager kullanıyorsanız bazı işlemler kodunuz tarafından, bazıları ise önceden yükleme yöneticisi tarafından gerçekleştirilir.

Uygulamanızın şunları yapması gerekir:

Önceden yükleme yöneticisi şunları yapar:

  • Uygulamanızın eklediği tüm medya öğelerini takip eder.
  • Öncelikleri her güncellendiğinde, uygulamanız tarafından uygulanan bir TargetPreloadStatusControl çağırarak uygulamanızı sorgular. Bunu, her bir medya öğesinin ne kadarının yükleneceğini öğrenmek için çağırır.
  • Uygulamayı sorguladıktan sonra her medya öğesini uygun miktarda önceden yükler. Ön yükleme yöneticisi, öğenin hangi sırayla yükleneceğine karar verir. Kullanıcının oynadığı öğeye en yakın öğelere öncelik verir.
  • Uygulama içerik istediğinde önceden yükleme yöneticisi, önceden yüklenmiş içeriklerle birlikte bir MediaSource sağlar.

Yönetici iş akışını önceden yükleme

Bu bölümde, önceden yükleme yöneticisini kullanan bir uygulamanın tipik iş akışı açıklanmaktadır. Bu örnekte, uygulamanın kısa videolardan oluşan bir bant gösterdiğini varsayıyoruz. Seçilen video otomatik olarak oynatılır ancak kullanıcı, ruloyu her iki yöne de kaydırabilir. Bu durumda, oynatılan video durur ve kullanıcının kaydırdığı video başlar.

Tüm bu adımlar, sonraki sayfalarda ayrıntılı olarak ele alınmaktadır.

  1. Uygulama, hedef önceden yükleme durumu kontrolü oluşturur. Önceden yükleme yöneticisi, her bir medya öğesinin ne kadarının yükleneceğini öğrenmek için bu denetimi sorgular.
  2. Uygulama bir DefaultPreloadManager.Builder oluşturur ve hedef önceden yükleme durumu kontrolünü geçer. Uygulama daha sonra ön yükleme yöneticisini oluşturmak için oluşturucuyu kullanır.
  3. Uygulama, önceden yükleme yöneticisine medya öğeleri ekler. Uygulama, her öğe için öğenin banttaki konumunu belirten bir dizin sağlar.
  4. Önceden yükleme yöneticisi, her medya öğesi için hedef önceden yükleme denetimini çağırarak öğenin ne kadarının yüklenmesi gerektiğini sorgular. Hedef önceden yükleme kontrolü, belirli bir süre boyunca içerik yüklemeyi, yalnızca öğenin meta verilerini getirmeyi veya şu anda bu öğenin hiçbirini getirmemeyi söyleyebilir. Ön yükleme yöneticisi bu bilgileri aldıktan sonra medya içeriğini yüklemeye başlar.
  5. Kullanıcı içerik oynatmaya başladığında uygulama, önceden yükleme yöneticisini çağırarak bu medya öğesi için MediaSource ister. Uygulama, önceden yükleme yöneticisine hangi medya öğesinin oynatıldığını bildirmek için setCurrentPlayingIndex() yöntemini de çağırır. Böylece medya öğelerinin öncelikleri güncellenir.
  6. Önceden yükleme yöneticisinin öncelikleri her güncellendiğinde, her bir öğenin ne kadarının yükleneceğini öğrenmek için hedef önceden yükleme kontrolünü bir kez daha çağırır.
  7. Uygulama, bandı kapattığında kaynaklarını serbest bırakmak için önceden yükleme yöneticisini serbest bırakır.