Size: a a a

Android Architecture

2020 June 12

L

Leonid in Android Architecture
вопрос по мероприятию, все в режиме онлайн, а записи будут и будут ли они доступны некоторое время? не всегда есть возможность смотреть в режиме онлайн, тем более регион не МСК.
источник
2020 June 13

Е

Евгений in Android Architecture
Посоветуйте пожалуйста. Какие есть способы обмена данными Android с собственным сервером (asp.net, wcf...) с https столкнулся с проблемой сертификатов. На сервере никогда не будет домена, а значит и проблема вечная. На постоянной основе делать игнор кажется не самой хорошей идеей. Есть ли другие адекватные способы обмена которые бы не затрагивали ssl? Прошу понимания, андроид только осваиваю
источник

Д

Дмитрий in Android Architecture
Всем привет! Мне необходимо сделать UI с различными состояниями, обозначу их, допустим, как состояние 1, 2, 3 и 4. Переход не одиночный, то есть из состояния 1 можно попасть не только в состояние 2, а ещё и в какое-нибудь другое, аналогично с остальными состояниями. В своём приложении использую архитектуру MVVM. У меня возник вопрос - каким образом построить такую систему состояний? Какими-нибудь способами добавлять тип нового состояния и оповещать о нём мой View из моего ViewModel? Или, стоит смотреть в сторону реализации State Machine (конечного автомата состояний)? Очень жду любых советов.
источник

КР

Кирилл Романенко... in Android Architecture
Дмитрий
Всем привет! Мне необходимо сделать UI с различными состояниями, обозначу их, допустим, как состояние 1, 2, 3 и 4. Переход не одиночный, то есть из состояния 1 можно попасть не только в состояние 2, а ещё и в какое-нибудь другое, аналогично с остальными состояниями. В своём приложении использую архитектуру MVVM. У меня возник вопрос - каким образом построить такую систему состояний? Какими-нибудь способами добавлять тип нового состояния и оповещать о нём мой View из моего ViewModel? Или, стоит смотреть в сторону реализации State Machine (конечного автомата состояний)? Очень жду любых советов.
Сделай всё состояние в виде одного sealed класса или дата класса в одной ливдате, а не размазанное состояние по нескольким ливдатам. И у тебя получится почти-MVI.
источник

Д

Дмитрий in Android Architecture
Кирилл Романенко
Сделай всё состояние в виде одного sealed класса или дата класса в одной ливдате, а не размазанное состояние по нескольким ливдатам. И у тебя получится почти-MVI.
Хорошо, больше спасибо!)
источник

КР

Кирилл Романенко... in Android Architecture
Alexander Lex
У меня наверно уровень пониже)) Что плохого в зависимости интерактора от agp?) Как вы его планируете использовать?)
Смысл интерактора в том, чтобы он был независим от платформы и содержал чистую логику. Даже в presenter/viewmodel/updater не желательно их держать, в идеале об R должен знать только фрагмент/активити.
источник

DK

Denis Koval in Android Architecture
Кирилл Романенко
Смысл интерактора в том, чтобы он был независим от платформы и содержал чистую логику. Даже в presenter/viewmodel/updater не желательно их держать, в идеале об R должен знать только фрагмент/активити.
а как быть, если выкинуть исключение с текстом?
источник

DK

Denis Koval in Android Architecture
текст из R.string...
источник

КР

Кирилл Романенко... in Android Architecture
Denis Koval
текст из R.string...
А ты выбрасываешь исключения типо throw IllegalStateException(getString(R.string.some)) ???
источник

DK

Denis Koval in Android Architecture
без разницы какого типа
источник

DK

Denis Koval in Android Architecture
Кирилл Романенко
А ты выбрасываешь исключения типо throw IllegalStateException(getString(R.string.some)) ???
да
источник

КР

Кирилл Романенко... in Android Architecture
Позволь поинтересоваться, зачем?🤨🙂
источник

DK

Denis Koval in Android Architecture
чтобы в интеракторе в catch отловить его и выкинуть в колбэк ошибку с текстом
источник

MM

Mikhail Mustakimov in Android Architecture
Каждое исключение однозначно мапится на сообщение, которое уже в отображении (или ViewModel/Presenter/etc, но здесь уже с абстракцией какой-либо) мапится на сообщение
источник

КР

Кирилл Романенко... in Android Architecture
Denis Koval
чтобы в интеракторе в catch отловить его и выкинуть в колбэк ошибку с текстом
Это очень плохое решение. Интерактор вообще ничего не должен знать про такого рода вещи. И уж тем более, на какое сообщение промаппится ошибка. Задача интерактора в бизнес логике.
источник

MM

Mikhail Mustakimov in Android Architecture
Mikhail Mustakimov
Каждое исключение однозначно мапится на сообщение, которое уже в отображении (или ViewModel/Presenter/etc, но здесь уже с абстракцией какой-либо) мапится на сообщение
У себя использую подход GitFox, где большая часть сообщений обрабатывается в презентере через глобальный обработчик ошибок, который включает в себя абстракцию получения локализованных сообщений (обертка над ResourceManger)
источник

DK

Denis Koval in Android Architecture
ну например интерактору надо сделать запрос на сервер и получить результат.
а в ходе запроса произошло исключение, например сервак вернул 500 код, или у устройства нет инета
источник

КР

Кирилл Романенко... in Android Architecture
Denis Koval
ну например интерактору надо сделать запрос на сервер и получить результат.
а в ходе запроса произошло исключение, например сервак вернул 500 код, или у устройства нет инета
Так сделай разные типы экзепшенов, свои, и их выбрасывай.
источник

DK

Denis Koval in Android Architecture
ок. выброшу я разные типы.. в блоке catch в интеракторе они словятся, а дальше что с ними делать?
источник

KD

Konstantin Dovnar in Android Architecture
Denis Koval
ок. выброшу я разные типы.. в блоке catch в интеракторе они словятся, а дальше что с ними делать?
fun Exteption.exceptionToHumanText(res: Resources) = when(this) {
   is MyExp -> res.getString(..)
  else -> res.getString()
}
источник