Ö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öneticisini oluşturmak için kullandığınız
DefaultPreloadManager.Buildernesnesini kullanarak uygulamanınExoPlayernesnelerini oluşturun.ExoPlayeroluşturmak içinDefaultPreloadManager.Builder.buildExoPlayer()yöntemini çağırın. - Önceden yükleme yöneticisine, izlemesi gereken her bir medya öğesini bildirin. Bu, banttaki tüm içerikler olmayabilir. Bunun yerine, oynatılacak ilk birkaç öğeyi söyleyebilirsiniz. Kullanıcı, bantta gezinirken önceden yükleme yöneticisinin havuzuna medya öğeleri ekleyebilir ve kaldırabilirsiniz.
- Önceden yükleme yöneticisinden gelen sorgulara yanıt vererek yöneticiye her öğe için ne kadar içerik önceden yükleneceğini bildirin.
Kullanıcı bir öğeyi oynatmaya başladığında önceden yükleme yöneticisinden medyayı getirin. Önceden yükleme yöneticisi, uygulamanıza bu içerik için bir
MediaSourceverir.Önceden yükleme yöneticisine, o anda oynatılan öğenin dizinini bildirin. Bu bilgiler, önceden yükleme yöneticisi tarafından her bir medya öğesinin oynatılan öğeye ne kadar yakın olduğunu belirlemek ve önceden yüklemeyi buna göre dinamik olarak önceliklendirmek için kullanılır. Kullanıcı yeni bir öğeye gittiğinde önceden yükleme yöneticisiyle bu dizini güncelleyin.
İşiniz bittiğinde ön yükleme yöneticisini serbest bırakarak kaynaklarını boşaltın.
Ö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
MediaSourcesağ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.
- 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.
- Uygulama bir
DefaultPreloadManager.Builderoluş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. - Uygulama, önceden yükleme yöneticisine medya öğeleri ekler. Uygulama, her öğe için öğenin banttaki konumunu belirten bir dizin sağlar.
- Ö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.
- Kullanıcı içerik oynatmaya başladığında uygulama, önceden yükleme yöneticisini çağırarak bu medya öğesi için
MediaSourceister. Uygulama, önceden yükleme yöneticisine hangi medya öğesinin oynatıldığını bildirmek içinsetCurrentPlayingIndex()yöntemini de çağırır. Böylece medya öğelerinin öncelikleri güncellenir. - Ö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.
- Uygulama, bandı kapattığında kaynaklarını serbest bırakmak için önceden yükleme yöneticisini serbest bırakır.