Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3

Мини чат, тонкости разработки

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

Студворк — интернет-сервис помощи студентам
Например приложение Viber и его аналоги..

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

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

как там реализована загрузка сообщений в "ListView"? так чтобы не вылетал OutOfMemory и всякая такая бяка..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2016, 16:33
Ответы с готовыми решениями:

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

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

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

18
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
05.04.2016, 17:21
ILNAR_93, а с чего должно быть OutOfMemory? Аватарки пользователей очень маленького размера, а сами фотки в чате, скорее всего, пережимаются в thumbnail, а по нажатию уже открывается оригинал
1
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
05.04.2016, 18:03
YuraAAA, видимо, имеются в виду JSON с диалогами, фотками, видео. Хотя да, они пережимаются в уменьшенные изображения.
1
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
05.04.2016, 19:26
CoolMind, JSON...ну если только попытаться распарсить сразу десятки тысяч сообщений, то может быть OOM. Иначе, не вижу проблем)
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
05.04.2016, 20:15
YuraAAA, да, я это и имел в виду. Хотя сам Viber грузит частями, начиная с конца. Ну и, понятное дело, всё решают потоки (хоть для GSON, хоть для JsonReader).
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
05.04.2016, 20:46
CoolMind, конечно же limit + offset =)
2
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
06.04.2016, 14:23  [ТС]
т.е.
1) сохраняем 2 изображения (1- оригинал, 2 уменьшенную копию) - в "ListView" загружаем уменьшенную копию изображения и по нажатию открываем оригинал?..
2) Adapter для "ListView" создается сразу со всеми сообщениями? или limit + offset?
3) с сервера получается тоже нужно сообщения получать limit + offset..!?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
06.04.2016, 15:20
Лучший ответ Сообщение было отмечено ILNAR_93 как решение

Решение

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
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.04.2016, 15:55
Цитата Сообщение от YuraAAA Посмотреть сообщение
Долистали до конца списка - попросили у сервера ещё 50, с оффсетом.
А если долистали до первой записи, OOM не будет?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
06.04.2016, 19:54
CoolMind, нет, с чего. Listview/recyclerView не грузит же одновременно все записи
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.04.2016, 23:29
YuraAAA, ListView-то - да, но в адаптер можно по глупости засунуть весь массив
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.04.2016, 08:12  [ТС]
Цитата Сообщение от CoolMind Посмотреть сообщение
А если долистали до первой записи, OOM не будет?
Наверное все загружаемые сообщения сохраняем в SQLlite и от туда уже загружаем limit + offset.

- Пока крутим вниз загружаем новые при этом удаляя старые (первые) записи.. И когда вверх листаем в обратном порядке.. - правильно понимаю?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
07.04.2016, 11:48
Цитата Сообщение от ILNAR_93 Посмотреть сообщение
- Пока крутим вниз загружаем новые при этом удаляя старые (первые) записи.. И когда вверх листаем в обратном порядке.. - правильно понимаю?
Зачем? ListView/RecyclerView сам этим занимается, кэшируя и отрисовывая только видимые элементы
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.04.2016, 11:59  [ТС]
Цитата Сообщение от YuraAAA Посмотреть сообщение
ListView/RecyclerView сам этим занимается, кэшируя и отрисовывая только видимые элементы
Получается только добавляем по мере необходимости(когда листаем вниз - listview), а верхние сообщения из адаптера удалять не надо?


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

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

p.s. пока не понимаю
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
07.04.2016, 12:05
ILNAR_93, да засовывайте в адаптер, сколько хотите. Он же использует какую-то Вашу коллекцию, как источник данных. А отрисовывает на экране только те, что видны сейчас.
1
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.04.2016, 12:16  [ТС]
Java
1
2
3
4
class product{
Bitmap  img;
String name;
}
если я создам вот такую "коллекцию"(много данных), ООМ не будет что-ли?
Я так понимаю что ООМ выходит не только когда в визуальной части много данных(например картинок), а когда в память загружено много.. В моем случае в коллекцию.. Или я чего-то не до понял и не знаю?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
07.04.2016, 13:26
ILNAR_93, будет. Надо хранить не bitmap, а String url. И подгружать изображения в лист асинхронно
1
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
07.04.2016, 15:45  [ТС]
Цитата Сообщение от YuraAAA Посмотреть сообщение
Надо хранить не bitmap, а String url. И подгружать изображения в лист асинхронно
А как это происходит? Механизм какой? При прокрутке вниз подгружает по URI(или url)? Как? - может есть разжеванный пример?)
И получается все храниться как string (url), а только видимая часть загружена(картинки и т.п.)?
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
08.04.2016, 13:43
Лучший ответ Сообщение было отмечено ILNAR_93 как решение

Решение

ILNAR_93, на SO есть множество примеров: http://stackoverflow.com/quest... n-listview. Советую следующие библиотеки: Fresco, Glide, Picasso.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.04.2016, 13:43
Помогаю со студенческими работами здесь

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

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

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

Дополнительные инструменты (мини справки) для удобства разработки XAML
Добрый день. Подскажите пожалуйста или поделитесь опытом, есть ли какие нибудь инструменты (мини справки) для того что бы облегчить жизнь...

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru