Size: a a a

Android Architecture

2020 September 27

E

Eugene in Android Architecture
Chucky Noon
Хотя вот щас подумал,отдельный экран для загрузки это ведь тоже самое что progressdialog юзать, а это deprecated.  А как вообще поступают, когда нужно подождать прежде чем можно будет перейти к новой активити?
у меня как сделано, есть кастомная вьюха, у которой полупрозрачный бэкгрануд,  прогресс бар и текст, при каком то действии я ее показываю, причем она не блочит стрелку назад, надоест ждать можешь выйти)) а блочит только необходимое, поля, кнопки, зачастую весь лэйаут кроме тулбара
источник

P

Pavel in Android Architecture
Chucky Noon
Хотя вот щас подумал,отдельный экран для загрузки это ведь тоже самое что progressdialog юзать, а это deprecated.  А как вообще поступают, когда нужно подождать прежде чем можно будет перейти к новой активити?
Это скорее вопрос к дизайнеру, если он есть.
Как вариант, затенить весь экран и белую крутилку по центру показать.
источник

CN

Chucky Noon in Android Architecture
Ладно, всем спасибо. Я так понимаю тут на вкус и цвет
источник

MH

Maksus Heinz in Android Architecture
Товарищи, я хочу создать проект используя паттерн MVI, я уже прочитал некоторый материал по этому паттерну, но в основном примеры очень простые и не понятно что дальше делать. Вопрос такой, в MVI я должен создать глобальную ViewModel или для каждого фрагмента свою, как в MVVM?
источник

MH

Maksus Heinz in Android Architecture
или я на MVI даже навигацию гугла не могу использовать и нужно другое юзать?
источник

AY

Andy Yanechko in Android Architecture
Maksus Heinz
Товарищи, я хочу создать проект используя паттерн MVI, я уже прочитал некоторый материал по этому паттерну, но в основном примеры очень простые и не понятно что дальше делать. Вопрос такой, в MVI я должен создать глобальную ViewModel или для каждого фрагмента свою, как в MVVM?
Смотря какую проблему хотите решить. Вам нужно определить у вас стейт как-то шерится между экранами или конкретно в каждом экране независимый (в любом случае на экране будет какой-то свой стейт, так что создавать VM/Presenter/Controller что хотите нужно будет под каждый экран). Если есть что шарить, можете создать общую VM (привязать например к ЖЦ активити, если юзаете Single Activity подход). Или создать что-то вроде репозитория-кеша - сущность которая хранит некий стейт в виде StateFlow/LiveData/ObserbaleSubject или просто сущность, если не нужно реактивщины - только тут нужно акуратно с ЖЦ быть (если юзаете DI нужно грамотно продумать как и куда инжектить, что бы не висело всё время) или очищать.
источник

AY

Andy Yanechko in Android Architecture
Maksus Heinz
или я на MVI даже навигацию гугла не могу использовать и нужно другое юзать?
А что Вам мешает её юзать?
источник

MH

Maksus Heinz in Android Architecture
Andy Yanechko
А что Вам мешает её юзать?
Я подумал, что экраны выдает какое-то хранилище, в зависимости от действия, видимо ошибся🥴кажется MVI сложнее чем MVVM, информации мало и хороших примеров почти нет( Хочется без привязки к фреймворкам типа MVI Core научиться создавать приложения...
источник

AY

Andy Yanechko in Android Architecture
Maksus Heinz
Я подумал, что экраны выдает какое-то хранилище, в зависимости от действия, видимо ошибся🥴кажется MVI сложнее чем MVVM, информации мало и хороших примеров почти нет( Хочется без привязки к фреймворкам типа MVI Core научиться создавать приложения...
Ну как я воспринимаю MVI, могу ошибаться или как-то не верно мыслить, поправте если что:
Юзер делает какое-то значимое действие и оно передаёться ввиде Intent'a туда, где его нужно обработать (VM/Presenter/Controller), дальше эта сущность дергаёт нужные репозитории/юзкейсы/интеракторы и обновляет Model, которая является стейтом  - единственным источником данных. Вроде как ничего сложного.
источник

MH

Maksus Heinz in Android Architecture
Andy Yanechko
Ну как я воспринимаю MVI, могу ошибаться или как-то не верно мыслить, поправте если что:
Юзер делает какое-то значимое действие и оно передаёться ввиде Intent'a туда, где его нужно обработать (VM/Presenter/Controller), дальше эта сущность дергаёт нужные репозитории/юзкейсы/интеракторы и обновляет Model, которая является стейтом  - единственным источником данных. Вроде как ничего сложного.
Буду разбираться🧩
источник

P

Pavel in Android Architecture
Посмотри библиотеку MVIKotlin
https://arkivanov.github.io/MVIKotlin/
На мой взгляд, там очень хорошо представлена концепция MVI. Так же расписаны все компоненты подхода и как ими пользоваться
источник

AY

Andy Yanechko in Android Architecture
Pavel
Посмотри библиотеку MVIKotlin
https://arkivanov.github.io/MVIKotlin/
На мой взгляд, там очень хорошо представлена концепция MVI. Так же расписаны все компоненты подхода и как ими пользоваться
Спасибо
источник

DB

Dmitro Boiko in Android Architecture
а подскажите кто где-то использует coroutine scope внутри viewmodel или же usecase?
источник
2020 September 28

GK

Gen K in Android Architecture
Dmitro Boiko
а подскажите кто где-то использует coroutine scope внутри viewmodel или же usecase?
Зависит от решаемых задач.
источник

DB

Dmitro Boiko in Android Architecture
Gen K
Зависит от решаемых задач.
а можно поподробнее ибо я не вижу разницы
источник

GK

Gen K in Android Architecture
Во viewmodel - если тебе нужно лишь сделать развязку между UI потоком и фоновым.
В usecase - если тебе нужно выполнить какие-то бизнесовые расчеты на корутинах.
источник

DB

Dmitro Boiko in Android Architecture
а зачем тягать 2 корутины, если все равно можно сделать все во вьюмодели?
источник

M

Maksim Gridin in Android Architecture
Maksus Heinz
Я подумал, что экраны выдает какое-то хранилище, в зависимости от действия, видимо ошибся🥴кажется MVI сложнее чем MVVM, информации мало и хороших примеров почти нет( Хочется без привязки к фреймворкам типа MVI Core научиться создавать приложения...
Вы правы, я тоже только начал изучать MVI и почитав общую теорию пришел к выводу что должен быть какой-то navigationState, который отвечает за переключение экранов
источник

MH

Maksus Heinz in Android Architecture
Maksim Gridin
Вы правы, я тоже только начал изучать MVI и почитав общую теорию пришел к выводу что должен быть какой-то navigationState, который отвечает за переключение экранов
🥴придется ждать релиза Jetpack Compose, чтоб нормальный материал по MVI от гугла был, как сейчас с MVVM и примеры приложений хороших, типа sunflower и ioshed, хотя подсолнечник есть на компоузе, но мне кажется там всё сделано на коленке и не есть хороший припер MVI(
источник

MH

Maksus Heinz in Android Architecture
Есть прикольный пример приложение Coffeegram вроде, там и jetpack и MVI и Kotlin Flow, но там два экрана... нет полноценной навигации, разных действий...
источник