Menedżer wstępnego wczytywania pomaga zapewnić użytkownikom lepsze wrażenia, ponieważ szybciej wyświetla treści i skraca czas oczekiwania podczas przełączania się między elementami. Umożliwia też dostosowanie czasu trwania i rankingu wstępnego wczytywania dla każdego elementu.
W mediach społecznościowych często zdarza się, że aplikacja wyświetla użytkownikowi listę lub karuzelę z opcjami multimedialnymi. Aplikacja może na przykład wyświetlać karuzelę z krótkimi filmami. Gdy jeden film się skończy, aplikacja przełączy się na następny. Jeśli użytkownikowi nie spodoba się oglądany film, może przesunąć palcem, aby przejść do następnego lub poprzedniego filmu.
Jeśli nie będziesz wstępnie wczytywać treści wideo, może to spowodować frustrację użytkowników. Użytkownik kończy oglądać multimedia i musi czekać na wczytanie kolejnych.
Z drugiej strony, jeśli będziesz wstępnie wczytywać treści zbyt agresywnie, spowoduje to zużycie energii i przepustowości sieci na wczytywanie treści, których użytkownik może nigdy nie odtworzyć.
DefaultPreloadManager pomaga aplikacji zrównoważyć te kwestie. Menedżer wstępnego wczytywania współpracuje z aplikacją, aby określić, jak ważny jest każdy element multimedialny, i wczytuje odpowiednią ilość treści z wyprzedzeniem.
Podział pracy
Jeśli używasz DefaultPreloadManager, część pracy wykonuje Twój kod, a część – menedżer wstępnego wczytywania.
Twoja aplikacja musi wykonać te czynności:
- Utwórz obiekty
ExoPlayeraplikacji, używając tego samego obiektuDefaultPreloadManager.Builder, którego używasz do tworzenia menedżera wstępnego wczytywania. Aby utworzyćExoPlayer, wywołajDefaultPreloadManager.Builder.buildExoPlayer(). - Poinformuj menedżera wstępnego wczytywania o każdym elemencie multimedialnym, który ma śledzić. Nie muszą to być wszystkie treści w karuzeli. Możesz poinformować go tylko o kilku pierwszych elementach, które mają zostać odtworzone. Gdy użytkownik będzie przeglądać karuzelę, możesz dodawać i usuwać elementy multimedialne z puli menedżera wstępnego wczytywania.
- Odpowiadaj na zapytania menedżera wstępnego wczytywania, informując go, ile treści ma wstępnie wczytać dla każdego elementu.
Pobieraj multimedia z menedżera wstępnego wczytywania, gdy użytkownik zacznie odtwarzać element. Menedżer wstępnego wczytywania udostępnia aplikacji
MediaSourcedla tych treści.Poinformuj menedżera wstępnego wczytywania o indeksie aktualnie odtwarzanego elementu. Te informacje są używane przez menedżera wstępnego wczytywania do określania, jak blisko aktualnie odtwarzanego elementu znajduje się każdy element multimedialny, i do dynamicznego ustalania priorytetów wstępnego wczytywania. Gdy użytkownik przejdzie do nowego elementu, zaktualizuj ten indeks w menedżerze wstępnego wczytywania.
Gdy skończysz korzystać z menedżera wstępnego wczytywania, zwolnij go, aby zwolnić jego zasoby.
Menedżer wstępnego wczytywania wykonuje te czynności:
- Śledzi wszystkie elementy multimedialne dodane do niego przez aplikację.
- Za każdym razem, gdy jego priorytety są aktualizowane, wysyła zapytanie do aplikacji, wywołując a
TargetPreloadStatusControlzaimplementowany przez aplikację. Wywołuje go, aby dowiedzieć się ile każdego elementu multimedialnego ma wczytać. - Po wysłaniu zapytania do aplikacji wstępnie wczytuje odpowiednią ilość każdego elementu multimedialnego. Menedżer wstępnego wczytywania decyduje o kolejności wczytywania elementów. Priorytetowo traktuje elementy, które są najbliżej elementu odtwarzanego przez użytkownika.
- Gdy aplikacja zażąda treści, menedżer wstępnego wczytywania udostępni
MediaSourcez już wczytanymi treściami.
Przebieg pracy menedżera wstępnego wczytywania
W tej sekcji opisujemy typowy przebieg pracy aplikacji, która korzysta z menedżera wstępnego wczytywania. W tym przykładzie zakładamy, że aplikacja wyświetla karuzelę z krótkimi filmami. Wybrany film odtwarza się automatycznie, ale użytkownik może przewijać karuzelę w dowolnym kierunku. Spowoduje to zatrzymanie odtwarzania filmu i rozpoczęcie odtwarzania filmu, do którego użytkownik przewinie.
Wszystkie te kroki są szczegółowo omówione na kolejnych stronach.
- Aplikacja tworzy kontrolę stanu wstępnego wczytywania docelowego. Menedżer wstępnego wczytywania wysyła zapytanie do tej kontroli, aby dowiedzieć się, ile każdego elementu multimedialnego ma wczytać.
- Aplikacja tworzy
DefaultPreloadManager.Builderi przekazuje kontrolę stanu wstępnego wczytywania docelowego. Następnie aplikacja używa narzędzia do tworzenia, aby utworzyć menedżera wstępnego wczytywania. - Aplikacja dodaje elementy multimedialne do menedżera wstępnego wczytywania. Aplikacja podaje indeks każdego elementu, określając jego pozycję w karuzeli.
- W przypadku każdego elementu multimedialnego menedżer wstępnego wczytywania wywołuje kontrolę wstępnego wczytywania docelowego, aby sprawdzić, ile elementu ma zostać wczytane. Kontrola wstępnego wczytywania docelowego może nakazać wczytanie określonego czasu trwania treści, pobranie tylko metadanych elementu lub niepobieranie żadnych danych tego elementu w tym momencie. Gdy menedżer wstępnego wczytywania otrzyma te informacje, zacznie wczytywać treści multimedialne.
- Gdy użytkownik zacznie odtwarzać treści, aplikacja wywoła menedżera wstępnego wczytywania
aby poprosić o
MediaSourcedla tego elementu multimedialnego. Aplikacja wywoła teżsetCurrentPlayingIndex(), aby poinformować menedżera wstępnego wczytywania, który element multimedialny jest odtwarzany, dzięki czemu priorytety elementów multimedialnych zostaną zaktualizowane. - Za każdym razem, gdy priorytety menedżera wstępnego wczytywania są aktualizowane, wywołuje on kontrolę wstępnego wczytywania docelowego, aby dowiedzieć się, ile każdego elementu ma wczytać.
- Gdy aplikacja zamknie karuzelę, zwolni menedżera wstępnego wczytywania, aby zwolnić jego zasoby.