Дизайн списка просмотра ленивой загрузки компонента изображения

У меня есть сценарий, который, я думаю, довольно распространен в приложениях для Android. Я знаю, что были предприняты частичные попытки решить проблему, но до сих пор я не сталкивался с полной реализацией. Я собираюсь попытаться реализовать такой компонент и впоследствии открыть его с открытым исходным кодом, но мне нужна ваша помощь в его разработке.

Итак, в основном мой случай следующий: у меня есть представление списка, показывающее изображение, загруженное из Интернета, и текст для каждой строки. Я хочу лениво загружать изображения, устанавливая по умолчанию для каждого изображения и заменяя его реальным, только когда изображение загружено. Я также хочу сохранить кэш изображений, избегая необходимости загружать изображения несколько раз за короткий период.

До сих пор я нашел несколько реализаций, которые частично работают, включая:

Том ван Зуммереньреализация аналогичного компонента с несколькими хорошо известными проблемамиДжереми Вадсакс изысканностью концепции, которая более или менее работаетЛенивые Drawables исходный кузнечный проект.

Я также видел несколько вопросов, связанных со стеком потока: 1, 2, 3

Однако у меня есть еще одно требование, которое делает мою задачу немного более сложной: я позволяю пользователю моего приложения присоединяться к некоторым изображениям. Я хочу загружать новые изображения, связанные с пользователем, когда пользователь переходит на главный экран. Из него он должен иметь возможность просматривать свои изображения даже до того, как они все были загружены, и в этом случае снова должны быть видны заполнители по умолчанию (обратите внимание на переход между экранами). Такие варианты использования:

Пользователь, перечисляющий приложениевидео с YouTubeПриложение для Facebook - рассмотрите изображения друзейПриложение, обслуживающее новости, которые поддерживают пользователялюбимые и т. д.

Обратите внимание, что я хочу начать получать новые данные, связанные с пользователем, на главном экране, чтобы обеспечить лучший пользовательский опыт. Я буду хранить пользовательские данные, хранящиеся локально, навсегда.

Вопрос

Поэтому мой основной вопрос: какой подход я должен использовать для реализации загрузки изображений? Я знаю, что руководства Android говорятService следует использовать только тогда, когда я хочу выполнить задачу, даже если приложение не запущено. С другой стороны, я начну загрузку изображений на главном экране и свяжу загрузки с элементами пользовательского интерфейса, как только пользователь перейдет на новый экран (Activity) - пользовательский вид списка, и я не знаю, как этого добиться сAsyncTask (не то чтобы у меня была очень четкая идея, как это сделать сService или).

Будем весьма благодарны за любые предложения, включая ссылки.

Ответы на вопрос(1)

Ваш ответ на вопрос