Size: a a a

Android Architecture

2020 July 08

M

Malik in Android Architecture
Ivan Sablin
окей, еще перефразирую, как правильно обсервить лайвдату, которая приходит асиинхронно?
Звучит как что-то очень странное. Используй Flow из бд
источник

ВК

Виталий Куликовский... in Android Architecture
Ivan Sablin
окей, еще перефразирую, как правильно обсервить лайвдату, которая приходит асиинхронно?
можно поробовать как то так
val myLiveData = liveData { //Suspend block
emitSource(...)
}
источник

IS

Ivan Sablin in Android Architecture
Malik
Звучит как что-то очень странное. Используй Flow из бд
Сама эта лайвдата в себе содержит PagedList. тут работа с пагинацией короче. И получается так, что она асинхронность там берется чтобы настроить работы BoundaryCallback
источник

IS

Ivan Sablin in Android Architecture
Виталий Куликовский
можно поробовать как то так
val myLiveData = liveData { //Suspend block
emitSource(...)
}
получается livedata in livedata?
источник

IS

Ivan Sablin in Android Architecture
Виталий Куликовский
можно поробовать как то так
val myLiveData = liveData { //Suspend block
emitSource(...)
}
а ты знаешь, работает
источник

IS

Ivan Sablin in Android Architecture
Благодарочка))
источник

M

Malik in Android Architecture
Создай поле livedata и пости туда
источник

IS

Ivan Sablin in Android Architecture
Malik
Создай поле livedata и пости туда
я попробовал чет такое, но как я понял, что пока не подпишешься на возвращаемую лайвдату, то моя пагинация не взлетит
источник

М

Максим in Android Architecture
Malik
У меня приложение разделено на 3 слоя
view-domain-data. Два слоя view и data являются android-specific. В data у меня есть LocationProvider, который работает с местоположением пользователя. В нем есть метод помеченный аннотацией RequiresPermission, которая из либы Android. Чтобы протащить данные о местоположении через domain, мне методы в domain тоже приходится помечать этой аннотаций, но тогда я тащу androidx:annotation в domain слой, чего очень не хочется делать. Что посоветуете?
Минусы слоеной архитектуры. То что оно у вас по слоям, не значит что это не одно и тоже, это ваш презентор в итоге. Если приложение простое, зачем вам эти лишние проблемы с тем что бы гонять данные по слоям и выстраивать зависимости. Пишите по простому, что бы работало. Если платформозависимое попробуйте оставить в фрагменте.
источник

M

Malik in Android Architecture
На странице со списком подписался сразу на livedata, затем вызвал метод загрузки первой порции данных. Как только загрузятся, выполнить post в livedata и получишь результат на экране. Пользователь сделает скрол, вызовешь метод подгрузки данных, опять сделаешь пост в livedata, и данные отобразятся на экране.
источник

M

Malik in Android Architecture
Максим
Минусы слоеной архитектуры. То что оно у вас по слоям, не значит что это не одно и тоже, это ваш презентор в итоге. Если приложение простое, зачем вам эти лишние проблемы с тем что бы гонять данные по слоям и выстраивать зависимости. Пишите по простому, что бы работало. Если платформозависимое попробуйте оставить в фрагменте.
Я так не думаю. Я сделал шаблон, где все уже разделено, так что не вижу никаких проблем с самого начала делать со слоеной архитектурой. Забить на архитектуру можно в example-приложениях.

То, что есть минусы - это да. Иногда приходится просто транзитом тащить данные и делать лишние преобразования. Но я не знаю подходов, у которых вообще нет минусов. «Забить на архитектуру» явно не из таких.
источник

М

Максим in Android Architecture
Главное что бы все были довольны👍
источник

AI

Arkadii Ivanov in Android Architecture
Evgeny Cherkasov
А кто должен вызывать эту функцию?
Кто-то, кто подписывается на состояния. Можно во фрагменте, можно в отдельный файл вынести связывание.
источник

АЕ

Алексей Ершов... in Android Architecture
Спрошу нетипичный вопрос. Представьте, что у вас есть сокет-соединение с каким-то бэком, и какой-то свой протокол общения по нему. Набор команд, логика их обработки, где-то автоматическая, где-то по событию от пользователя.
Видны сразу понятные части для такой штуки: транспорт для сокета и декодирования сообщений, модель команд, парсер-сериализатор, и стейт-машина со всей логикой. Вопрос: есть ли какой-то стандартизированный подход к проектированию такой штуки? Типа стандартного паттерна или фреймворка, готовый каркас (или рисунок каркаса), где нужно просто каждую часть правильно реализовать?
источник

AD

Aleksey D. in Android Architecture
Алексей Ершов
Спрошу нетипичный вопрос. Представьте, что у вас есть сокет-соединение с каким-то бэком, и какой-то свой протокол общения по нему. Набор команд, логика их обработки, где-то автоматическая, где-то по событию от пользователя.
Видны сразу понятные части для такой штуки: транспорт для сокета и декодирования сообщений, модель команд, парсер-сериализатор, и стейт-машина со всей логикой. Вопрос: есть ли какой-то стандартизированный подход к проектированию такой штуки? Типа стандартного паттерна или фреймворка, готовый каркас (или рисунок каркаса), где нужно просто каждую часть правильно реализовать?
наверное, не совсем ответ на вопрос, но:
WebSocketStateContext - содержит в себе текущее состояние и Flow/Flowable событий, умеет передовать входящие сообщения и всякие подключиться/отключиться
WebSocketState (Connected, Diconnected, Connecting…) - умеет обрабатывать только те команды, которые допустимы в текущем состоянии (подключить или отключить/отправить
WebSocketEvent - все, что вылетает из сокета - сообщение, события подключения/отключения
имхо, парсер должен лежать где-то в WebSocketStateContext и трансформировать сырые данные в какие-то классы/объекты
источник

АЕ

Алексей Ершов... in Android Architecture
Не вебсокет, просто сокет) Примерная структура понятна, да. Вопрос скорее в том, реально ли каждый это заново изобретает, или есть общепринятая практика.
источник

AD

Aleksey D. in Android Architecture
Алексей Ершов
Не вебсокет, просто сокет) Примерная структура понятна, да. Вопрос скорее в том, реально ли каждый это заново изобретает, или есть общепринятая практика.
первый мой опыт был на обычном сокете и там было переизобретение всего и вся
сейчас пришел к такой штуке и она вполне комфортной кажется, с допилами бы таскал туда-сюда
источник

АЕ

Алексей Ершов... in Android Architecture
Спасибо что поделились)
источник

A

ABI in Android Architecture
У меня с сокетами стандартно все разделено на уровни дата,  модель, и т.д.
источник

ML

Mikhail Levchenko in Android Architecture
Artem Osipov
@themishkun ты есть в этой группе?)
Есть, но она в архиве у меня
источник