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

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

Войти
Регистрация
Восстановить пароль
 
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
#1

Мини чат, тонкости разработки - Программирование Android

05.04.2016, 16:33. Просмотров 368. Ответов 18
Метки нет (Все метки)

Например приложение Viber и его аналоги..

Как в них реализован чат? А именно "ListView" с сообщениями.

Допустим БД SQLlite с сообщениями (текст, ссылки на картинки и звук и т.п.), звук и картинки как файл в SD

как там реализована загрузка сообщений в "ListView"? так чтобы не вылетал OutOfMemory и всякая такая бяка..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2016, 16:33     Мини чат, тонкости разработки
Посмотрите здесь:

Тонкости потоков - Программирование Android
Не до конца понимаю что из себя представляет поток в яве андроида! Сделал второй поток для помощи в отрисовке. Он в бесконечном цикле...

Тонкости ООП в SurfaceView. Можно ли написать графический движок? - Программирование Android
Гуру ООП, помогите! Задумал написать свой микро-графический-движок. Хочу обьединить работу с Canvas и с OpenGL в одном классе....

Мини GoogleUser - Программирование Android
Делать было нечего и я решил создать для примера GoogleUser,и первым делом надо в манифест добавить пермишены: <uses-permission...

Мини-пиложение для Android - Программирование Android
Доброго времени суток всем. Хочу спросить. Вот хочу поздравить друга с ДР. Есть заготовленное видео. Как сделать мини-приложение на...

Мини игра для Планшетников под Андроид - Программирование Android
Доброго времени суток, Уважаемые разработчики. Я здесь очень давно не был, но в последний раз когда был - был очень благодарен за помощь....

Среда разработки на С++ - Программирование Android
Покажите "дорожку" куда топать хоть ,что бы приложение для Android на C++ писать ? (Статьи,книги,ссылки,студии) Про C# не говорите...

среда разработки - Программирование Android
Здравствуйте, объясните пожалуйста популярно как правильно установить среду разработки Eclipse и sdk.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.04.2016, 17:21     Мини чат, тонкости разработки #2
ILNAR_93, а с чего должно быть OutOfMemory? Аватарки пользователей очень маленького размера, а сами фотки в чате, скорее всего, пережимаются в thumbnail, а по нажатию уже открывается оригинал
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
05.04.2016, 18:03     Мини чат, тонкости разработки #3
YuraAAA, видимо, имеются в виду JSON с диалогами, фотками, видео. Хотя да, они пережимаются в уменьшенные изображения.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.04.2016, 19:26     Мини чат, тонкости разработки #4
CoolMind, JSON...ну если только попытаться распарсить сразу десятки тысяч сообщений, то может быть OOM. Иначе, не вижу проблем)
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
05.04.2016, 20:15     Мини чат, тонкости разработки #5
YuraAAA, да, я это и имел в виду. Хотя сам Viber грузит частями, начиная с конца. Ну и, понятное дело, всё решают потоки (хоть для GSON, хоть для JsonReader).
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.04.2016, 20:46     Мини чат, тонкости разработки #6
CoolMind, конечно же limit + offset =)
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
06.04.2016, 14:23  [ТС]     Мини чат, тонкости разработки #7
т.е.
1) сохраняем 2 изображения (1- оригинал, 2 уменьшенную копию) - в "ListView" загружаем уменьшенную копию изображения и по нажатию открываем оригинал?..
2) Adapter для "ListView" создается сразу со всеми сообщениями? или limit + offset?
3) с сервера получается тоже нужно сообщения получать limit + offset..!?
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
06.04.2016, 15:20     Мини чат, тонкости разработки #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ILNAR_93,
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
1) сохраняем 2 изображения (1- оригинал, 2 уменьшенную копию) - в "ListView" загружаем уменьшенную копию изображения и по нажатию открываем оригинал?..
На "крутых" серверах используются медиа транскодеры. Они пережимают оригинальное изображение.
Если нет такой возможности, то надо при загрузке ресайзить изображение до превью размера.

Цитата Сообщение от ILNAR_93 Посмотреть сообщение
2) Adapter для "ListView" создается сразу со всеми сообщениями? или limit + offset?
limit конечно
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
3) с сервера получается тоже нужно сообщения получать limit + offset..!?
Ага. Т.е. загрузили сначала, например, 50 сообщений. Долистали до конца списка - попросили у сервера ещё 50, с оффсетом.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
06.04.2016, 15:55     Мини чат, тонкости разработки #9
Цитата Сообщение от YuraAAA Посмотреть сообщение
Долистали до конца списка - попросили у сервера ещё 50, с оффсетом.
А если долистали до первой записи, OOM не будет?
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
06.04.2016, 19:54     Мини чат, тонкости разработки #10
CoolMind, нет, с чего. Listview/recyclerView не грузит же одновременно все записи
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
06.04.2016, 23:29     Мини чат, тонкости разработки #11
YuraAAA, ListView-то - да, но в адаптер можно по глупости засунуть весь массив
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.04.2016, 08:12  [ТС]     Мини чат, тонкости разработки #12
Цитата Сообщение от CoolMind Посмотреть сообщение
А если долистали до первой записи, OOM не будет?
Наверное все загружаемые сообщения сохраняем в SQLlite и от туда уже загружаем limit + offset.

- Пока крутим вниз загружаем новые при этом удаляя старые (первые) записи.. И когда вверх листаем в обратном порядке.. - правильно понимаю?
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.04.2016, 11:48     Мини чат, тонкости разработки #13
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
- Пока крутим вниз загружаем новые при этом удаляя старые (первые) записи.. И когда вверх листаем в обратном порядке.. - правильно понимаю?
Зачем? ListView/RecyclerView сам этим занимается, кэшируя и отрисовывая только видимые элементы
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.04.2016, 11:59  [ТС]     Мини чат, тонкости разработки #14
Цитата Сообщение от YuraAAA Посмотреть сообщение
ListView/RecyclerView сам этим занимается, кэшируя и отрисовывая только видимые элементы
Получается только добавляем по мере необходимости(когда листаем вниз - listview), а верхние сообщения из адаптера удалять не надо?


1) Если пока мы листаем вниз у нас в адаптер загрузится очень много сообщений, что будет?
2) В адаптер же сразу 500 и больше сообщений не засовываем?

Если есть время объясни по подробнее пжлста)

p.s. пока не понимаю
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.04.2016, 12:05     Мини чат, тонкости разработки #15
ILNAR_93, да засовывайте в адаптер, сколько хотите. Он же использует какую-то Вашу коллекцию, как источник данных. А отрисовывает на экране только те, что видны сейчас.
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.04.2016, 12:16  [ТС]     Мини чат, тонкости разработки #16
Java
1
2
3
4
class product{
Bitmap  img;
String name;
}
если я создам вот такую "коллекцию"(много данных), ООМ не будет что-ли?
Я так понимаю что ООМ выходит не только когда в визуальной части много данных(например картинок), а когда в память загружено много.. В моем случае в коллекцию.. Или я чего-то не до понял и не знаю?
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.04.2016, 13:26     Мини чат, тонкости разработки #17
ILNAR_93, будет. Надо хранить не bitmap, а String url. И подгружать изображения в лист асинхронно
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,645
Записей в блоге: 3
07.04.2016, 15:45  [ТС]     Мини чат, тонкости разработки #18
Цитата Сообщение от YuraAAA Посмотреть сообщение
Надо хранить не bitmap, а String url. И подгружать изображения в лист асинхронно
А как это происходит? Механизм какой? При прокрутке вниз подгружает по URI(или url)? Как? - может есть разжеванный пример?)
И получается все храниться как string (url), а только видимая часть загружена(картинки и т.п.)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2016, 13:43     Мини чат, тонкости разработки
Еще ссылки по теме:

Простой чат - Программирование Android
Всем привет. Возникла надобность создать чат. На сколько я понял мне нужна будет серверная часть и сам клиент с набором API методов. Не...

Делаю чат - Программирование Android
Всем привет Делаю некое подобие чата. Окно чата состоит из ListView и находиться в отдельной Activity. Данные получаю (сразу скажу...

wifi чат - Программирование Android
Подскажите пожалуйста необходимо данные с ячейки передать на другой девайс через wifi изначально подключённые к одной сети. Заранее спасибо

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

Android ЧАТ! - Программирование Android
Помогите сделать чат для андроида ! что бы с одного устройства мог отправить , а на другом прочесть и ответить . может есть исходники ? или...


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

Или воспользуйтесь поиском по форуму:
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
08.04.2016, 13:43     Мини чат, тонкости разработки #19
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ILNAR_93, на SO есть множество примеров: http://stackoverflow.com/questions/5...es-in-listview. Советую следующие библиотеки: Fresco, Glide, Picasso.
Yandex
Объявления
08.04.2016, 13:43     Мини чат, тонкости разработки
Ответ Создать тему
Опции темы

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