С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

17
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
24.02.2016, 20:39 #2
какой вопрос - такой ответ
надо использовать не ScrollView, а RecyclerView (примеров вагон и в инете и на форуме)
- заводим класс-модель для новостей с полями типа title, image_url, data и так далее
- в отдельном потоке парсится сайт и все складывается в ArrayList
- создаем адаптер и передаем его в RecyclerView
- в ViewHolder-е внутри recyclerview заполняем поля в View, которое будет показывать новость
- картинки грузим библиотекой Glide
все
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
25.02.2016, 10:11 #3
danyasworld, если вкратце, то можете использовать любой компонент, хоть ListView, хоть RecyclerView, хоть ScrollView. Если будете работать с картинками, надо почитать про weak reference или сразу использовать Fresco или Glide. Первый, вроде как, по некоторым параметрам получше будет.
0
danyasworld
4 / 4 / 1
Регистрация: 12.04.2015
Сообщений: 226
Завершенные тесты: 1
25.02.2016, 10:15  [ТС] #4
Паблито, RecyclerView, к сожалению, был добавлен в более поздних версиях андроида, чем те минимальные которые у меня установлены. С остальным у меня и так порядок, все парсится подгружается и выводится. Единственная проблема в изображениях. Они скоро начинают занимать слишком много памяти
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
25.02.2016, 10:34 #5
Цитата Сообщение от danyasworld Посмотреть сообщение
RecyclerView, к сожалению, был добавлен в более поздних версиях андроида
Библиотеки поддержки же есть.
Цитата Сообщение от danyasworld Посмотреть сообщение
Единственная проблема в изображениях.
Используйте библиотеки, выше сказали какие.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
25.02.2016, 10:55 #6
Spelcrawler, честно говоря, не понял, зачем здесь RecyclerView? Чисто для красоты? Всё решается и стандартным ListView.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
25.02.2016, 10:57 #7
Цитата Сообщение от CoolMind Посмотреть сообщение
честно говоря, не понял, зачем здесь RecyclerView?
Ну он удобнее намного, возможностей больше, базовые вещи проще чем в ListView. Ну и ТС вероятно, только учится использовать что-то подобное. Дак зачем ему изучать устаревший элемент, когда есть хороший новый?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
25.02.2016, 10:59 #8
Spelcrawler, здесь я согласен. Особенно он в пору, если использовать Material Design с его CardView.
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 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"
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
25.02.2016, 12:38 #10
Да, первый пункт невероятен
Одно и то же, но у ListView сохраняется возможность работы и без ViewHolder. Так что преимуществ по первому пункту никаких.

Добавлено через 52 секунды
А если вспомнить про минусы RecyclerView, а также отсутствие Header, Footer, то и вовсе иногда лучше молчать, чем говорить.
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,068
Завершенные тесты: 1
25.02.2016, 12:46 #11
ты просто еще не понимаешь в чем их разница и в чем профит ресайклера, поэтому и бесишься
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 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 минут.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
25.02.2016, 13:33 #13
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Только вот толку от ListView без ViewHolder'a не больше чем от ScrollView.
Это да, но и преимущества у RecyclerView в этом отношении нет. По сути, используется та же стратегия, что и у ListView.
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Там есть декораторы можно ими сделать, можно в LayuotManager'e сделать, можно даже в адаптере сделать.
Это интересно, надо будет посмотреть.
0
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, Паблито, отвееетьте
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
26.02.2016, 01:01 #15
Цитата Сообщение от danyasworld Посмотреть сообщение
скрыть вью, очистив память от картинок, но при этом не изменитьвысоту(чтоб скролл вью не прыгал) а потом если он вновь появится на экране - показать его
Цитата Сообщение от danyasworld Посмотреть сообщение
Единственный вопрос - как скрыть и выгрузить изображения которые уже не видно на экране?
Наверное, проще через Fresco или Glide либо какую-то другую библиотеку, хоть даже и самописную. На stackoverflow есть много предложений.
Цитата Сообщение от danyasworld Посмотреть сообщение
weak/soft reference. К чему их следует применить
Насколько помню, можно при загрузке изображений создавать их через soft reference. Затем можно попробовать вычислить ширину и высоту изображений и зафиксировать их. Когда удалите изображение из памяти, вместо него в list item'ах можете просто сделать пустую рамку фиксированных размеров.
В общем, я не знаю, просто предполагаю. Делал подобную задачу ранее, работала для списка из нескольких десятков новостей с картинками и текстом. Картинки были, по-моему, одного размера. На старых устройствах по переполнению памяти не вылетала.
0
26.02.2016, 01:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2016, 01:01
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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