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

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

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

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

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

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

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

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

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

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

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

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

Мини-Чат - C#
Привет всем! Хотел бы реализовать такой маленький чат для одноклассников своих :) У меня есть сайт на ucoz, на сайте есть чат. Хотелось...

Мини-чат на флеш - Flash
всем привет. как на флеш сделать чат, который бы выводил сообщения сразу, а не с помощью кнопки обновления?)

Голосовой мини чат - Delphi
требуется написать программу голосового чата, весь интернет прогуглил и прояндексил, но во всех примерах используются компоненты написанные...

18
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
05.04.2016, 17:21 #2
ILNAR_93, а с чего должно быть OutOfMemory? Аватарки пользователей очень маленького размера, а сами фотки в чате, скорее всего, пережимаются в thumbnail, а по нажатию уже открывается оригинал
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
05.04.2016, 18:03 #3
YuraAAA, видимо, имеются в виду JSON с диалогами, фотками, видео. Хотя да, они пережимаются в уменьшенные изображения.
1
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
05.04.2016, 19:26 #4
CoolMind, JSON...ну если только попытаться распарсить сразу десятки тысяч сообщений, то может быть OOM. Иначе, не вижу проблем)
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
05.04.2016, 20:15 #5
YuraAAA, да, я это и имел в виду. Хотя сам Viber грузит частями, начиная с конца. Ну и, понятное дело, всё решают потоки (хоть для GSON, хоть для JsonReader).
0
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
05.04.2016, 20:46 #6
CoolMind, конечно же limit + offset =)
2
ILNAR_93
Android
221 / 221 / 23
Регистрация: 19.01.2013
Сообщений: 1,702
Записей в блоге: 3
06.04.2016, 14:23  [ТС] #7
т.е.
1) сохраняем 2 изображения (1- оригинал, 2 уменьшенную копию) - в "ListView" загружаем уменьшенную копию изображения и по нажатию открываем оригинал?..
2) Adapter для "ListView" создается сразу со всеми сообщениями? или limit + offset?
3) с сервера получается тоже нужно сообщения получать limit + offset..!?
0
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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, с оффсетом.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
06.04.2016, 15:55 #9
Цитата Сообщение от YuraAAA Посмотреть сообщение
Долистали до конца списка - попросили у сервера ещё 50, с оффсетом.
А если долистали до первой записи, OOM не будет?
0
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
06.04.2016, 19:54 #10
CoolMind, нет, с чего. Listview/recyclerView не грузит же одновременно все записи
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
06.04.2016, 23:29 #11
YuraAAA, ListView-то - да, но в адаптер можно по глупости засунуть весь массив
0
ILNAR_93
Android
221 / 221 / 23
Регистрация: 19.01.2013
Сообщений: 1,702
Записей в блоге: 3
07.04.2016, 08:12  [ТС] #12
Цитата Сообщение от CoolMind Посмотреть сообщение
А если долистали до первой записи, OOM не будет?
Наверное все загружаемые сообщения сохраняем в SQLlite и от туда уже загружаем limit + offset.

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


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

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

p.s. пока не понимаю
0
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
07.04.2016, 12:05 #15
ILNAR_93, да засовывайте в адаптер, сколько хотите. Он же использует какую-то Вашу коллекцию, как источник данных. А отрисовывает на экране только те, что видны сейчас.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2016, 12:05
Привет! Вот еще темы с ответами:

мини чат под Ios - Программирование iOS
Вообщем хочу сделать в своей програмке не большой чатик, и пока не приступил появилось немного вопросов по скольку никогда не делал такого....

Мини-чат через ftp - Delphi
драсти как отправить текстовый документ без нажатия кнопки? с кнопкой отправляется и обновляется как надо а вот через timer не как не хочет...

Написать самый простой мини-чат - C#
Всем првиет! У меня есть задача: написать самый простой мини-чат! Я даже не понимаю как он работает и даже не знаю с чего начать! Я...

.NET 2.x Готовое решение "User Datagram Protocol Client" (UDP Client или Мини чат) - Visual Basic .NET
Может быть кому пригодится:)


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
07.04.2016, 12:05
Ответ Создать тему
Опции темы

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