Size: a a a

Android Architecture

2020 May 11

ФХ

Филадельфия Хачатуря... in Android Architecture
Понял
источник
2020 May 12

МE

Михаил E1ement in Android Architecture
И все же, как один интерактор дёргает методы другого? Интеракторы - Singleton?
источник

VP

Vitaly Peryatin in Android Architecture
Михаил E1ement
И все же, как один интерактор дёргает методы другого? Интеракторы - Singleton?
Композиция
источник

sm

sasha merkulev in Android Architecture
Или лучше аггрегацию?
источник

VP

Vitaly Peryatin in Android Architecture
sasha merkulev
Или лучше аггрегацию?
Разница лишь концептуальна
На практике это плюс-минус одно и то же
Действительно, здесь больше бы подошло понятие «агрегация»
источник

sm

sasha merkulev in Android Architecture
Ну да с одним г, а разница где создается зависимость, внутри или снаружи.
источник

VP

Vitaly Peryatin in Android Architecture
sasha merkulev
Ну да с одним г, а разница где создается зависимость, внутри или снаружи.
Я лично всегда использую композицию
Мне кажется, что можно использовать и то, и другое, но композиция создает меньше Boilerplate кода
источник

sm

sasha merkulev in Android Architecture
Да я не против, я к тому что автор вопроса может использовать две возможности, вот я про вторую и напомнил.
источник

sm

sasha merkulev in Android Architecture
Но при написании юнит тестов - будете тестировать два класса - замокать созданный внутри не получится.
источник

МE

Михаил E1ement in Android Architecture
@merkulev @infinity_coder спасибо, коллеги
источник

СМ

Стас М in Android Architecture
Есть фрагмент, который знает о вм активити и своей собственной. Насколько ок подписаться на лайвдату в activityVm и в обсервере изменять лайвдату в fragmentVm?
источник

EM

Eugene Matsyuk in Android Architecture
Ребят, прорекламирую годный канал с годным автором =)
Сам уже участвовал в подкасте Кирилла, и вам советую =)
источник

EM

Eugene Matsyuk in Android Architecture
Переслано от Kirill Rozov
Чтобы уследить за всем новостями Android разрботки необходимо постоянно читать множество статей, смотреть видео, посещать митапы и конференции, следить за лучшими разработчиками в социальных сетях.

Telegram канал Android Broadcast - это место, где вы можете найти подборку лучших материалов по Android разработке в компактном формате с кратким обзором и личным мнением автора.

Помимо всего вы найдете интервью с лучшими разработчиками индустрии и обучающие видео на YouTube канале Android Broadcast.
источник

S

Sergey8827 in Android Architecture
Eugene Matsyuk
Переслано от Kirill Rozov
Чтобы уследить за всем новостями Android разрботки необходимо постоянно читать множество статей, смотреть видео, посещать митапы и конференции, следить за лучшими разработчиками в социальных сетях.

Telegram канал Android Broadcast - это место, где вы можете найти подборку лучших материалов по Android разработке в компактном формате с кратким обзором и личным мнением автора.

Помимо всего вы найдете интервью с лучшими разработчиками индустрии и обучающие видео на YouTube канале Android Broadcast.
+
источник

I

Ilnar in Android Architecture
UI state

sealed class ObjectListUIState {
   class Lists(val data: List<TreeObjectUIModel>): ObjectListUIState()
   class Error(val throwable: Throwable): ObjectListUIState()
   object Loading: ObjectListUIState()
}

Во ViewModel есть метод который возвращает LiveData
fun objectsState(): LiveData<ObjectListUIState> = state

В активити подписался

objectsViewModel.objectsState().observe(this, Observer {
 when(it){
   is ObjectListUIState.Lists -> {
     objectsRecyclerView.adapter = ObjectsAdapter(it.data)
   }
   is ObjectListUIState.Loading -> {
     Snackbar.make(objectsRecyclerView, "Loading", Snackbar.LENGTH_SHORT).show()
   }
   is ObjectListUIState.Error -> {
     Snackbar.make(objectsRecyclerView, "Error " + it.throwable.localizedMessage, Snackbar.LENGTH_SHORT).show()
   }
 }
})

т.е. одна LiveData отвечает за состояние экрана.

Но, когда LiveData = ObjectListUIState.Error при поворотах экрана начинается аттракцион с Snackbar (да и не только в этом дело)..
Используете ли такой подход? Используете так как выше или как то по другому?
Поделитесь своей практикой, спасибо.
источник

АЕ

Алексей Ершов... in Android Architecture
Ilnar
UI state

sealed class ObjectListUIState {
   class Lists(val data: List<TreeObjectUIModel>): ObjectListUIState()
   class Error(val throwable: Throwable): ObjectListUIState()
   object Loading: ObjectListUIState()
}

Во ViewModel есть метод который возвращает LiveData
fun objectsState(): LiveData<ObjectListUIState> = state

В активити подписался

objectsViewModel.objectsState().observe(this, Observer {
 when(it){
   is ObjectListUIState.Lists -> {
     objectsRecyclerView.adapter = ObjectsAdapter(it.data)
   }
   is ObjectListUIState.Loading -> {
     Snackbar.make(objectsRecyclerView, "Loading", Snackbar.LENGTH_SHORT).show()
   }
   is ObjectListUIState.Error -> {
     Snackbar.make(objectsRecyclerView, "Error " + it.throwable.localizedMessage, Snackbar.LENGTH_SHORT).show()
   }
 }
})

т.е. одна LiveData отвечает за состояние экрана.

Но, когда LiveData = ObjectListUIState.Error при поворотах экрана начинается аттракцион с Snackbar (да и не только в этом дело)..
Используете ли такой подход? Используете так как выше или как то по другому?
Поделитесь своей практикой, спасибо.
Вынесите одноразовые события в отдельную LiveData. Будут отдельно состояние, отдельно события.
источник

RM

Ravil Mukhametzyanov in Android Architecture
Ilnar
UI state

sealed class ObjectListUIState {
   class Lists(val data: List<TreeObjectUIModel>): ObjectListUIState()
   class Error(val throwable: Throwable): ObjectListUIState()
   object Loading: ObjectListUIState()
}

Во ViewModel есть метод который возвращает LiveData
fun objectsState(): LiveData<ObjectListUIState> = state

В активити подписался

objectsViewModel.objectsState().observe(this, Observer {
 when(it){
   is ObjectListUIState.Lists -> {
     objectsRecyclerView.adapter = ObjectsAdapter(it.data)
   }
   is ObjectListUIState.Loading -> {
     Snackbar.make(objectsRecyclerView, "Loading", Snackbar.LENGTH_SHORT).show()
   }
   is ObjectListUIState.Error -> {
     Snackbar.make(objectsRecyclerView, "Error " + it.throwable.localizedMessage, Snackbar.LENGTH_SHORT).show()
   }
 }
})

т.е. одна LiveData отвечает за состояние экрана.

Но, когда LiveData = ObjectListUIState.Error при поворотах экрана начинается аттракцион с Snackbar (да и не только в этом дело)..
Используете ли такой подход? Используете так как выше или как то по другому?
Поделитесь своей практикой, спасибо.
Привет, у тебя проблема что пересоздании вью одноразовые события отрабатывают снова?
источник

EM

Eugene Matsyuk in Android Architecture
​​Не часто на канале появляется рубрика «Интервью с разработчиком». Сегодня именно тот день, когда копилка интервью пополнится.

Думаю, что многие из вас слышали про про программу GDE (Google Developers Experts) – это технические эксперты и лидеры, которые являются профессионалами в своей области и зачастую выступают в качестве спикеров на различных мероприятиях, являются авторами статей и других активностей.

В России не так много GDE: если зайти на сайт, то можно увидеть 10 экспертов из России по различным направлениям, от Firebase до Payments.

Совсем недавно к списку GDE присоединились Евгений Мацюк и Александр Денисов.
Евгений стал экспертом по Android, а Александр по Flutter.

Соответственно, у них есть наиболее свежая и полная информация о всем, что связано с GDE. У каждого из вас есть возможность спросить их об этом. Возможно, вам интересно, какие преимущества получают GDE или вы сами думаете о том, чтобы стать экспертом.

Свои вопросы вы можете задать тут, а интервью появится на канале позже!
источник

EM

Eugene Matsyuk in Android Architecture
Eugene Matsyuk
​​Не часто на канале появляется рубрика «Интервью с разработчиком». Сегодня именно тот день, когда копилка интервью пополнится.

Думаю, что многие из вас слышали про про программу GDE (Google Developers Experts) – это технические эксперты и лидеры, которые являются профессионалами в своей области и зачастую выступают в качестве спикеров на различных мероприятиях, являются авторами статей и других активностей.

В России не так много GDE: если зайти на сайт, то можно увидеть 10 экспертов из России по различным направлениям, от Firebase до Payments.

Совсем недавно к списку GDE присоединились Евгений Мацюк и Александр Денисов.
Евгений стал экспертом по Android, а Александр по Flutter.

Соответственно, у них есть наиболее свежая и полная информация о всем, что связано с GDE. У каждого из вас есть возможность спросить их об этом. Возможно, вам интересно, какие преимущества получают GDE или вы сами думаете о том, чтобы стать экспертом.

Свои вопросы вы можете задать тут, а интервью появится на канале позже!
закидывайте вопросы =)
источник

I

Ilnar in Android Architecture
Ravil Mukhametzyanov
Привет, у тебя проблема что пересоздании вью одноразовые события отрабатывают снова?
Привет, да.

В принципе, можно сделать как предложил @alaershov
Но в таком случае, наверное нужно колхозить какие то SingleLibeData'ы...
источник