Projekt komponentu ładowania obrazów leniwych widoku listy

Mam scenariusz, który moim zdaniem jest dość powszechny w aplikacjach na Androida. Wiem, że podjęto częściowe próby rozwiązania problemu, ale do tej pory nie natknąłem się na pełne wdrożenie. Zamierzam później spróbować wdrożyć taki komponent i open source, ale potrzebuję twojej pomocy w jego projektowaniu.

Tak zasadniczo mój przypadek jest następujący: Mam widok listy pokazujący obraz załadowany z sieci i tekst na każdy wiersz. Chcę leniwie ładować obrazy, umieszczając domyślnie dla każdego obrazu i zastępując go rzeczywistym tylko wtedy, gdy obraz jest pobierany. Chcę także zachować pamięć obrazów, aby uniknąć konieczności wielokrotnego pobierania obrazów w krótkim czasie.

Do tej pory znalazłem kilka wdrożeń, które częściowo działają, w tym:

Wdrożenie Toma van Zummerena podobnego komponentu z kilkoma dobrze znanymi problemamiWyrafinowanie Jeremy'ego Wadsacka koncepcji, która działa mniej więcejLeniwe szuflady projekt źródłowy kuźnia.

Widziałem również kilka pytań dotyczących przepływu stosu dotyczących problemu:1, 2, 3

Mam jednak jeszcze jedno wymaganie, które sprawia, że ​​moje zadanie jest nieco bardziej skomplikowane: pozwalam użytkownikowi mojej aplikacji powiązać się z niektórymi obrazami. Chcę załadować nowe obrazy skojarzone z użytkownikiem za każdym razem, gdy użytkownik przejdzie do ekranu głównego. Z tego powinien być w stanie zobaczyć swoje obrazy, nawet zanim wszystkie zostaną pobrane iw tym przypadku ponownie powinny być widoczne domyślne symbole zastępcze (zwróć uwagę na przejście między ekranami). Takie przypadki użycia to:

Aplikacja wyświetlająca filmy z YouTube użytkownikaAplikacja na Facebooku - rozważ zdjęcia przyjaciółWiadomości obsługujące aplikacje, które obsługują ulubione użytkownika itp

Zauważ, że chcę rozpocząć pobieranie nowych danych związanych z użytkownikiem na ekranie głównym, aby zapewnić lepsze wrażenia użytkownika. Zachowam dane związane z użytkownikiem przechowywane lokalnie na zawsze.

Pytanie

Więc moje podstawowe pytanie brzmi: jakie podejście powinienem zastosować do implementacji pobierania obrazu? Wiem, jak mówią podręczniki AndroidaService powinien być używany tylko wtedy, gdy chcę wykonać zadanie, nawet gdy aplikacja nie jest uruchomiona. Po drugiej stronie rozpocznę pobieranie obrazu na ekranie głównym i połączę pobieranie z elementami interfejsu użytkownika tylko wtedy, gdy użytkownik przejdzie do nowego ekranu (Activity) - widok listy związany z użytkownikiem i nie wiem, jak to osiągnąćAsyncTask (nie to, że mam bardzo dokładny pomysł, jak to zrobićService zarówno).

Wszelkie sugestie będą bardzo mile widziane, w tym linki.

questionAnswers(1)

yourAnswerToTheQuestion