Search
Write a publication
Pull to refresh
3
0
Aleksandr @Rasalexman

Пользователь

Send message
Решение ивентов с enum, на мой взгляд, не самое эффективное. Лучше использовать sealed class
sealed class Event<T : Any> {
var isHandled: Booleand = false
data class Success<T>(val data: T) : Event<T>()
data class Error(val message: String, val error: Throwable?) : Event<Nothing>()
object Loading : Event<Nothing>()
}

это дает некую мутабельность ивентов при пересечении архитектурных слоев если использовать Clean Architecture. Например, DataLayer может работать только с
Event<DatabaseEntity>
, а PresentationLayer может принимать только
Event<DataUIModel>
, тогда мы можем более лучше разграничить какие объекты могут пересекать архитектурные слои.
Конвертер в данном случае будет простой функцией
inline fun <reified T : Any, reified R : Any> Event<T>.mutateTo(): Event<R> {
// ваша логика конвертации
}


“If you think that good architecture is expensive, try bad architecture.”
— Brian Foote and Joseph Yoder
На сколько я помню есть проблемы со взаимодействием с TabLayout
7) начиная с версии 0.1.7 можно подписыватсья на список событий в одном методе subscribeList(....)
1) События обрабатываются синхронно, но так как внутри kotlin object то это потоко безопасный объект.
2) Обрабатывается сразу же
3) Тут все зависит указали ли вы приоритет вызова коллбэка для подписывамого события. если приоритет не указан то вызовется сначала первая функция слушателя а затем вторая которая находиться внутри первого.
4) Не будет, вы же отписываете слушатель. (опять же вопрос приоритета, если у последней приортиет вызова больше то естественно она вызовется первой)
5) Никак, он запишет только первый вызов, второй проигнорирует
6) К сожалению в настоящий момент я исключения не обрабатываются, спасибо за пояснение. Цепочка прервется.
7) Да можно
ну всеже моя бибилиотека немного про другое, это всеже больше про события

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity