Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
#1

Оптимизация списка новостей - Программирование Android

24.02.2016, 20:26. Просмотров 328. Ответов 17
Метки нет (Все метки)

Написал я небольшое приложение которое выводит новости с одного сайта. Все бы ничего, но получилось много катртинок. Очень много. Примерно к 10 новости все начинает тормозить, дальше вылетает с out of memory. Есть ли возможность взять и скрыть вью, очистив память от картинок, но при этом не изменитьвысоту(чтоб скролл вью не прыгал) а потом если он вновь появится на экране - показать его?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2016, 20:26     Оптимизация списка новостей
Посмотрите здесь:

Хранение и кэширование новостей - Программирование Android
Доброе утро, сабж: В какой контейнер следует подгружать новости ( обычного string не хватит ) и кэшировать ли их в preferences или есть...

Парсинг сайта новостей - Программирование Android
Здравствуйте, уважаемые! В приложении Android пытаюсь вывести новости с сайта новостей в ListView Новости выводятся, но без активных...

Контейнер для новостей - Программирование Android
Новости подгружаются с помощью http с сервера, в какие контейнеры их стоит класть ? Среда разработки - Android studio

Приложение для Android [Постер новостей] - Программирование Android
Ребят, если есть возможность помочь с приложением(Минимальная социальная сеть для мобилы где будет только пост новостей) очень прошу...

Как реализовать дизайн ленты новостей? - Программирование Android
У меня есть вот такое вот активити Хотелось бы сделать примерно вот так ...

Приложение - парсер новостей с вконтакта ,быстрое создание - Программирование Android
Здравствуйте!Нужно в предельно короткие сроки заделать приложение-парсер новостей из вконтакта. Такое есть у паблика МДК. Может есть какие...

Диплом: тема Андроид приложение, лента новостей - Программирование Android
Тема создать приложения Лента новостей, вот хотелось бы узнать, как вы бы реализовали эту идею, данные откуда берет например итд. Основную...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,603
Завершенные тесты: 1
24.02.2016, 20:39     Оптимизация списка новостей #2
какой вопрос - такой ответ
надо использовать не ScrollView, а RecyclerView (примеров вагон и в инете и на форуме)
- заводим класс-модель для новостей с полями типа title, image_url, data и так далее
- в отдельном потоке парсится сайт и все складывается в ArrayList
- создаем адаптер и передаем его в RecyclerView
- в ViewHolder-е внутри recyclerview заполняем поля в View, которое будет показывать новость
- картинки грузим библиотекой Glide
все
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
25.02.2016, 10:11     Оптимизация списка новостей #3
danyasworld, если вкратце, то можете использовать любой компонент, хоть ListView, хоть RecyclerView, хоть ScrollView. Если будете работать с картинками, надо почитать про weak reference или сразу использовать Fresco или Glide. Первый, вроде как, по некоторым параметрам получше будет.
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
25.02.2016, 10:15  [ТС]     Оптимизация списка новостей #4
Паблито, RecyclerView, к сожалению, был добавлен в более поздних версиях андроида, чем те минимальные которые у меня установлены. С остальным у меня и так порядок, все парсится подгружается и выводится. Единственная проблема в изображениях. Они скоро начинают занимать слишком много памяти
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
25.02.2016, 10:34     Оптимизация списка новостей #5
Цитата Сообщение от danyasworld Посмотреть сообщение
RecyclerView, к сожалению, был добавлен в более поздних версиях андроида
Библиотеки поддержки же есть.
Цитата Сообщение от danyasworld Посмотреть сообщение
Единственная проблема в изображениях.
Используйте библиотеки, выше сказали какие.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
25.02.2016, 10:55     Оптимизация списка новостей #6
Spelcrawler, честно говоря, не понял, зачем здесь RecyclerView? Чисто для красоты? Всё решается и стандартным ListView.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
25.02.2016, 10:57     Оптимизация списка новостей #7
Цитата Сообщение от CoolMind Посмотреть сообщение
честно говоря, не понял, зачем здесь RecyclerView?
Ну он удобнее намного, возможностей больше, базовые вещи проще чем в ListView. Ну и ТС вероятно, только учится использовать что-то подобное. Дак зачем ему изучать устаревший элемент, когда есть хороший новый?
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
25.02.2016, 10:59     Оптимизация списка новостей #8
Spelcrawler, здесь я согласен. Особенно он в пору, если использовать Material Design с его CardView.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,603
Завершенные тесты: 1
25.02.2016, 11:54     Оптимизация списка новостей #9
Цитата Сообщение от danyasworld Посмотреть сообщение
чем те минимальные которые у меня установлены
почему бы просто взять и не посмотреть с какой версии андроида работает RecyclerView?
ListView - морально устаревший компонент, кроме вышеупомянутых анимашек еще есть кое что
проще процитировать
1.) Reuse cells while scrolling up/down - this is possible with implementing View Holder in the listView adapter, but it was an optional thing, while in the RecycleView it's the default way of writing adapter.

2.) Decouple list from its container - so you can put list items easily at run time in the different containers (linearLayout, gridLayout) with setting LayoutManager
одного только первого пункта должно хватить

или погуглить по словам "android recyclerview vs listview"
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
25.02.2016, 12:38     Оптимизация списка новостей #10
Да, первый пункт невероятен
Одно и то же, но у ListView сохраняется возможность работы и без ViewHolder. Так что преимуществ по первому пункту никаких.

Добавлено через 52 секунды
А если вспомнить про минусы RecyclerView, а также отсутствие Header, Footer, то и вовсе иногда лучше молчать, чем говорить.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,603
Завершенные тесты: 1
25.02.2016, 12:46     Оптимизация списка новостей #11
ты просто еще не понимаешь в чем их разница и в чем профит ресайклера, поэтому и бесишься
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
25.02.2016, 12:50     Оптимизация списка новостей #12
Цитата Сообщение от CoolMind Посмотреть сообщение
Одно и то же, но у ListView сохраняется возможность работы и без ViewHolder
Только вот толку от ListView без ViewHolder'a не больше чем от ScrollView. И работа с ViewHolder'ом в RecyclerView намного прозрачнее и удобнее.
Цитата Сообщение от CoolMind Посмотреть сообщение
А если вспомнить про минусы RecyclerView, а также отсутствие Header, Footer, то и вовсе иногда лучше молчать, чем говорить.
Там есть декораторы можно ими сделать, можно в LayuotManager'e сделать, можно даже в адаптере сделать. Даже тот же ExpandableListView повоторить в RecyclerView на 15-20 минут.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
25.02.2016, 13:33     Оптимизация списка новостей #13
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Только вот толку от ListView без ViewHolder'a не больше чем от ScrollView.
Это да, но и преимущества у RecyclerView в этом отношении нет. По сути, используется та же стратегия, что и у ListView.
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Там есть декораторы можно ими сделать, можно в LayuotManager'e сделать, можно даже в адаптере сделать.
Это интересно, надо будет посмотреть.
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
25.02.2016, 22:48  [ТС]     Оптимизация списка новостей #14
теперь немного по полочкам: recycler view и list view - одного куста ягоды. Дальше, хоть один из них выгружает из памяти ушедшие за экран итемы? (по результатам теста оказалось что нет) У меня получился некий аналог листвью основанный на скролл вью. Единственный вопрос - как скрыть и выгрузить изображения которые уже не видно на экране?
теперь про weak/soft reference. К чему их следует применить , если изображение рисуется на канве, а битмапы убираются?

Добавлено через 3 часа 18 минут
CoolMind, Spelcrawler, Паблито, отвееетьте
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
26.02.2016, 01:01     Оптимизация списка новостей #15
Цитата Сообщение от danyasworld Посмотреть сообщение
скрыть вью, очистив память от картинок, но при этом не изменитьвысоту(чтоб скролл вью не прыгал) а потом если он вновь появится на экране - показать его
Цитата Сообщение от danyasworld Посмотреть сообщение
Единственный вопрос - как скрыть и выгрузить изображения которые уже не видно на экране?
Наверное, проще через Fresco или Glide либо какую-то другую библиотеку, хоть даже и самописную. На stackoverflow есть много предложений.
Цитата Сообщение от danyasworld Посмотреть сообщение
weak/soft reference. К чему их следует применить
Насколько помню, можно при загрузке изображений создавать их через soft reference. Затем можно попробовать вычислить ширину и высоту изображений и зафиксировать их. Когда удалите изображение из памяти, вместо него в list item'ах можете просто сделать пустую рамку фиксированных размеров.
В общем, я не знаю, просто предполагаю. Делал подобную задачу ранее, работала для списка из нескольких десятков новостей с картинками и текстом. Картинки были, по-моему, одного размера. На старых устройствах по переполнению памяти не вылетала.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
26.02.2016, 10:11     Оптимизация списка новостей #16
Цитата Сообщение от danyasworld Посмотреть сообщение
Дальше, хоть один из них выгружает из памяти ушедшие за экран итемы?
Там совсем другой механизм. Создается несколько вьюшек, так чтобы закрыть весь список и они просто перерисовываются при скролле.
Цитата Сообщение от danyasworld Посмотреть сообщение
теперь про weak/soft reference. К чему их следует применить , если изображение рисуется на канве, а битмапы убираются?
А нафига? Кладите картинки в ImageView с помощью Glide и все.
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
27.02.2016, 12:30  [ТС]     Оптимизация списка новостей #17
Spelcrawler, дело в том что я в своем проекте не использую ImageView. Я написал свой компонент, тк image view меня не устравает. В нем все битмапы после отрисовки вычищаются. Остается только канва.

Добавлено через 48 секунд
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Там совсем другой механизм. Создается несколько вьюшек, так чтобы закрыть весь список и они просто перерисовываются при скролле.
механизм примерно понять я успел, пока писал аналог
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2016, 01:28     Оптимизация списка новостей
Еще ссылки по теме:

Установить соединение с веб-сервером rbc.ru и вычитывать с него заголовки новостей - Программирование Android
Задача в том, чтобы установить соединение с веб-сервером rbc.ru и вычитывать с него заголовки новостей и сами эти новости. Как это можно...

Оптимизация AVD - Программирование Android
Ребят, помогите разобраться! В общем, ситуация такая: недавно начал изучать java, потихоньку начал работать в eclipse, добрался до шага...

Оптимизация приложения - Программирование Android
Здравствуйте, уважаемые форумчане, подскажите пожалуйста в трех вопросах. 1)Допустим, что приложение генерит текст из нескольких...

Оптимизация приложения - Программирование Android
Дорогие форумчане!Работаю над приложение. Его смысл в том что бы заполнять таблицу случайными полями из других таблиц. Есть таблица с...

Оптимизация кода - Программирование Android
Глупый и очень обширный вопрос, но как оптимизировать код? У меня есть приложение, которое занимает озу телефона около 30 Мб, приложение, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
03.03.2016, 01:28  [ТС]     Оптимизация списка новостей #18
Скажите, когда я рисую битмап на канве, канва начинает занимать столько же памяти сколько до этого канва? И как чистить канву?

Добавлено через 52 секунды
и можно ли натаскать на канву GC?
Yandex
Объявления
03.03.2016, 01:28     Оптимизация списка новостей
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru