Ö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 ön yükleme süresini ve sıralamasını da özelleştirebilirsiniz.

Sosyal medyada sık karşılaşılan bir durum, bir uygulamanın kullanıcıya medya seçeneklerinin listesini veya döngüsünü göstermesidir. Örneğin, bir uygulamada kısa videolardan oluşan bir bant gösterilebilir. Bir video bittiğinde uygulama bir sonrakine geçer. Kullanıcılar izledikleri videoyu beğenmezlerse sayfayı kaydırarak bir sonraki veya önceki videoya geçebilirler.

Video içeriğini önceden yüklemezseniz kullanıcılar olumsuz bir deneyim yaşayabilir. Kullanıcı bir medyayı bitirdikten sonra bir sonraki medyanın yüklenmesini beklemek zorunda kalır.

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

DefaultPreloadManager, uygulamanızın bu endişeleri dengelemesine yardımcı olur. Önceden yükleme yöneticisi, her 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, bazı işlemler ise ön yükleme yöneticisi tarafından yapılır.

Uygulamanız şunları yapmalıdır:

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

  • Uygulamanızın eklediği tüm medya öğelerini takip eder.
  • Öncelikleri her geçersiz kılındığında, uygulamanız tarafından uygulanan bir TargetPreloadStatusControl çağırarak uygulamanıza sorgu gönderir. Bu çağrıyı, her medya öğesinden ne kadar yükleneceğini öğrenmek için yapar.
  • Uygulamaya sorgu gönderdikten sonra her medya öğesinden 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 olan öğelere öncelik verir.
  • Uygulama içerik istediğinde, önceden yükleme yöneticisi MediaSource sağlar.

Önceden yükleme yöneticisi iş akışı

Bu bölümde, preload 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önde de kaydırabilir. Bu durumda, oynatılan video durdurulur ve kaydırılan video oynatılmaya başlar.

Bu adımların tümü aşağıdaki sayfalarda ayrıntılı olarak açıklanmıştır.

  1. Uygulama, hedef ön yükleme durumu kontrolü oluşturur. Önceden yükleme yöneticisi, her 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ünden geçer. Uygulama daha sonra ön yükleme yöneticisini oluşturmak için oluşturucuyu kullanır.
  3. Uygulama, medya öğelerini önceden yükleme yöneticisine ekler. Uygulama, her öğe için bir dizin sağlar ve öğenin banttaki konumunu belirtir.
  4. Tüm medya eklendikten sonra uygulama, invalidate() çağrısı yaparak önceden yükleme yöneticisine her öğe için öncelikleri ayarlamasını ve ardından bunları önceden yüklemesini söyler.
  5. Önceden yükleme yöneticisi, her medya öğesi için hedef önceden yükleme kontrolünü ç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üklenmesini, yalnızca öğenin meta verilerinin getirilmesini veya bu öğenin şu anda getirilmemesini isteyebilir. Ön yükleme yöneticisi bu bilgileri aldıktan sonra medya içeriğini yüklemeye başlar.
  6. Kullanıcı içeriği oynatmaya başladığında uygulama, önceden yükleme yöneticisini çağırarak söz konusu medya öğesi için MediaSource isteğinde bulunur. Uygulama, ön yükleme yöneticisine hangi medya öğesinin oynatıldığını bildirmek için de setCurrentPlayingIndex() çağrısı yapar.
  7. Kullanıcı farklı bir medya öğesine geçerse uygulama, bu öğeyi önceden yükleme yöneticisinden ister ve mevcut oynatma dizinini de günceller. Ardından, önceden yükleme yöneticisine önceliklerini şu anda oynatılanlara göre güncellemesini söylemek için invalidate() tekrar çağrılır.
  8. Uygulama, medyaları carousele ekler veya carouselden kaldırırsa bu öğeleri önceden yükleme yöneticisine de ekler ya da önceden yükleme yöneticisinden kaldırır ve bu işlem tamamlandığında invalidate() işlevini çağırır.
  9. Ön yükleme yöneticisinin öncelikleri her geçersiz kılındığında, her öğeden ne kadar yükleneceğini öğrenmek için hedef ön yükleme kontrolünü tekrar çağırır.
  10. Uygulama, döngüyü kapattığında kaynaklarını boşaltmak için ön yükleme yöneticisini serbest bırakır.