Проверяет знание архитектуры, сетевого взаимодействия, потоков и UI.
Используйте RecyclerView/LazyColumn, ViewModel, WebSocket или polling, и Room для хранения истории сообщений.
1. Архитектура:
ViewModel — логика.
Repository — данные.
Room — хранение сообщений.
WebSocket — обновление в реальном времени.
2. UI:
RecyclerView (XML) или LazyColumn (Compose).
Адаптер с DiffUtil.
Scroll-to-bottom и группировка сообщений.
3. Сеть:
OkHttp WebSocket или Retrofit с polling.
Обработка reconnect и ошибок.
4. Реализация входящего сообщения:
webSocket.onMessage = {
room.insert(message)
liveData.postValue(message)
}5. Дополнительно:
Прокрутка к последнему сообщению.
Уведомления о новых сообщениях.
Шифрование, если нужно.