Koncepcje menedżera wstępnego wczytywania

Menedżer wstępnego wczytywania pomaga zapewnić użytkownikom większą wygodę, ponieważ szybciej wyświetla treści i skraca czas oczekiwania podczas przełączania się między poszczególnymi elementami. Umożliwia też dostosowanie czasu trwania i rankingu wstępnego wczytywania poszczególnych elementów.

Częstym przypadkiem w mediach społecznościowych jest sytuacja, w której aplikacja wyświetla użytkownikowi listę lub karuzelę opcji multimedialnych. Na przykład aplikacja może wyświetlać karuzelę krótkich filmów. 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 wstępnie załadujesz treści wideo, może to frustrować użytkowników. Użytkownik kończy odtwarzanie multimediów i musi poczekać na załadowanie kolejnych.

Z drugiej strony, jeśli wstępne wczytywanie treści jest zbyt agresywne, marnuje energię i przepustowość sieci na wczytywanie treści, których użytkownik może nigdy nie odtworzyć.

DefaultPreloadManager pomaga aplikacji zachować równowagę między tymi kwestiami. Menedżer wstępnego wczytywania współpracuje z aplikacją, aby określić, jak ważny jest każdy element multimedialny, i wczytuje odpowiednią ilość z wyprzedzeniem.

Podział pracy

Jeśli używasz DefaultPreloadManager, część pracy wykonuje Twój kod, a część – menedżer wstępnego wczytywania.

Aplikacja musi:

Menedżer wstępnego wczytywania wykonuje te czynności:

  • Śledzi wszystkie multimedia dodane do niej przez Twoją aplikację.
  • Za każdym razem, gdy priorytety są aktualizowane, wysyła do aplikacji zapytanie, wywołując funkcję TargetPreloadStatusControl zaimplementowaną przez aplikację. Wywołuje ją, aby dowiedzieć się, ile każdego elementu multimedialnego należy wczytać.
  • Po wysłaniu zapytania do aplikacji wstępnie wczytuje odpowiednią liczbę każdego elementu multimedialnego. Menedżer wstępnego wczytywania decyduje o kolejności wczytywania elementów. Priorytetowo traktuje elementy, które są najbardziej podobne do elementu, w który gra użytkownik.
  • Gdy aplikacja zażąda treści, menedżer wstępnego wczytywania udostępni MediaSourcez wczytanymi już treściami.

Przepływ pracy menedżera wstępnego wczytywania

W tej sekcji opisujemy typowy proces pracy aplikacji, która korzysta z menedżera wstępnego wczytywania. W tym przykładzie zakładamy, że aplikacja wyświetla karuzelę krótkich filmów. Wybrany film odtwarza się automatycznie, ale użytkownik może przewijać karuzelę w dowolnym kierunku. Spowoduje to zatrzymanie odtwarzanego filmu i włączenie filmu, do którego przewinie karuzelę.

Wszystkie te kroki zostały szczegółowo omówione na kolejnych stronach.

  1. Aplikacja tworzy element sterujący stanem wstępnego wczytywania. Menedżer wstępnego wczytywania wysyła zapytanie do tego elementu sterującego, aby dowiedzieć się, ile każdego elementu multimedialnego należy wczytać.
  2. Aplikacja tworzy DefaultPreloadManager.Builder i przekazuje kontrolę stanu wstępnego wczytywania do miejsca docelowego. Aplikacja używa narzędzia do tworzenia, aby utworzyć menedżera wstępnego wczytywania.
  3. Aplikacja dodaje elementy multimedialne do menedżera wstępnego wczytywania. Aplikacja udostępnia indeks każdego elementu, który określa jego pozycję w karuzeli.
  4. W przypadku każdego elementu multimedialnego menedżer wstępnego wczytywania wywołuje docelowy element sterujący wstępnym wczytywaniem, aby sprawdzić, ile elementu powinno zostać wczytane. Docelowy element sterujący wstępnym wczytywaniem może nakazywać wczytanie treści o określonym czasie trwania, pobranie tylko metadanych elementu lub niepobieranie tego elementu w danym momencie. Gdy menedżer wstępnego wczytywania otrzyma te informacje, rozpocznie wczytywanie treści multimedialnych.
  5. Gdy użytkownik zacznie odtwarzać treści, aplikacja wywoła menedżera wstępnego wczytywania, aby poprosić o MediaSource dla tego elementu multimedialnego. Aplikacja wywołuje też funkcję setCurrentPlayingIndex(), aby poinformować menedżera wstępnego wczytywania, który element multimedialny jest odtwarzany, dzięki czemu priorytety elementów multimedialnych zostaną zaktualizowane.
  6. Za każdym razem, gdy priorytety menedżera wstępnego wczytywania są aktualizowane, ponownie wywołuje on docelowy element sterujący wstępnym wczytywaniem, aby dowiedzieć się, ile każdego elementu należy wczytać.
  7. Gdy aplikacja zamknie karuzelę, zwalnia menedżera wstępnego wczytywania, aby zwolnić jego zasoby.