Önceden yükleme yöneticisi kavramları

Ön yükleme yöneticisi, kullanıcılara içerikleri daha hızlı sunarak ve bir öğeden diğerine geçerken bekleme süresini azaltarak 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, uygulamanın kullanıcıya medya seçeneklerinin listesini veya bandı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. İzlediği videoyu beğenmeyen kullanıcılar, sayfayı kaydırarak bir sonraki veya önceki videoya geçebilir.

Video içeriğini önceden yüklemezseniz kullanıcılar hayal kırıklığına uğrayabilir. 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 durum, kullanıcının hiçbir zaman oynatmayabileceği içeriği yüklemek için güç ve ağ bant genişliğinin boşa harcanmasına neden olur.

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ın şunları yapması gerekir:

Ö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 sorguyu, her medya öğesinden ne kadar yükleneceğini öğrenmek için çağırır.
  • 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 ile birlikte önceden yüklenmiş olan tüm içerikleri 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ı yapar. Bu çağrı, ö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 setCurrentPlayingIndex() adlı işlevi de çağırır.
  7. Kullanıcı farklı bir medya öğesine geçerse uygulama, önceden yükleme yöneticisinden bu öğeyi ister ve mevcut oynatma dizinini de günceller. Ardından, önceden yükleme yöneticisine önceliklerini şu anda oynananlara göre güncellemesini söylemek için invalidate() işlevini tekrar çağırır.
  8. Uygulama, medyaları carousele ekler veya carouselden kaldırırsa bu öğeleri önceden yükleme yöneticisine de ekler ya da 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.