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

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

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

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

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

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

как там реализована загрузка сообщений в "ListView"? так чтобы не вылетал OutOfMemory и всякая такая бяка..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2016, 16:33
Ответы с готовыми решениями:

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

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

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

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

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

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


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

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

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

Решение

ILNAR_93, на SO есть множество примеров: http://stackoverflow.com/quest... n-listview. Советую следующие библиотеки: Fresco, Glide, Picasso.
1
08.04.2016, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2016, 13:43
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru