sadr0b0t / yashlang

PeerTube and YouTube player for Android with local playlists and whitelisted recommendations
GNU General Public License v3.0
50 stars 3 forks source link

Ревизия алгоритма загрузки иконок плейлистов в списке плейлистов в режиме оффлайн #159

Closed sadr0b0t closed 1 year ago

sadr0b0t commented 1 year ago

История отсюда https://github.com/sadr0b0t/yashlang/issues/156

На телефоне 5-тилетней давности на довольно обширной базе (скорее всего уже более 100 тыс роликов) работает норм, хотя уже не мгновенно. Плейлисты появляются сразу, но "плавно". Иконки плейлистов (причем, не онлайн, а уже из кэша) начинает подгружать с заметной задержкой - через несколько секунд (здесь можно посмотреть, что там с потоками, которые начинают грузить эти иконки - скорее всего там загрузка не начинается до тех пор, пока не завершится полный запрос в базу), но, в целом, приемлемо.

в отдельный тикет

Есть шанс визуально ускорить загрузку. Т.к. элементы в списке уже появляются со всей информацией, нет только иконок. А это скорее всего не просто тормоза, но больше похоже на ожидание операции внутри очереди потоков.

sadr0b0t commented 1 year ago

Иконки грузятся в PlaylistInfoPagedListAdapter https://github.com/sadr0b0t/yashlang/blob/master/app/src/main/java/su/sadrobot/yashlang/view/PlaylistInfoPagedListAdapter.java в нескольких фоновых потоках сразу при отображении элемента, как надо. Проблема не в тормозах из-за фильтра, а в том, что сейчас из-за очередной поломки ютюба у большей части плейлистов в списке не прогружаются картинки и из-за этого возникают тормоза при загрузке иконок для элементов внизу списка. Если изменить сортировку, то элементы наверху (у которых иконка есть в кэше) рисуют иконку мгновенно. И если отключить на устройстве сеть (в таком случае загрузка иконки завершается мгновенно с ошибкой, а не после таймаута загрузки), то кэшированные иконки у нихних элементов тоже появляются мгновенно.