Size: a a a

Android arch. components

2019 March 17

ST

Sasha Tainyuk in Android arch. components
Kopusha
ну, как бы VM активити и есть тот source of truth, который переживает VM фрагментов... Пример, Onboarding flow какой-то. На первом экране ввел адрес, на другом телефон, потом сфоткался и тд. Все это фрагменты. По ходу дела ты эту инфу где-то в активити VM собираешь, чтоб в конце сохранить/создать аккаунт.
На кой ляд так делать? Отдельный фрагмент для номера телефона, потом отдельно аватар. В чем прикол?
источник

K

Kopusha in Android arch. components
че ты приебался к номеру телефона, ну рили. За деревьями леса не видишь. Я пример на ходу придумал, ну представь, что там вместо номера телефона, каждый шаг это пиздецки нагруженный фрагмент с кучей логики и запросами. И вот всем этим шагам надо куда-то в общее место складывать.
источник

K

Kopusha in Android arch. components
по ссылке совет от гугла "SharedViewModel", но в реальности у фрагмента еще свой "viewmodel" и вот ты ими как-то жонглируешь.
источник

ST

Sasha Tainyuk in Android arch. components
Kopusha
че ты приебался к номеру телефона, ну рили. За деревьями леса не видишь. Я пример на ходу придумал, ну представь, что там вместо номера телефона, каждый шаг это пиздецки нагруженный фрагмент с кучей логики и запросами. И вот всем этим шагам надо куда-то в общее место складывать.
Да даже если во фрагменте куча всего, то результат вообще сохранить на диск лучше, а не во вм, которая может сдохнуть. Вот же радости будет когда минут 10 вбивал какие-то данные - случайно вышел и андроид все грохнул.  Потому что-то там сожрало всю память.
источник

K

Kopusha in Android arch. components
поэтому я упомянул, что это временные данные. Они должны пережить поворот экрана там или если быстро переключился между приложениями. А если он завтра в приложение вернется и ты ему какой-то длиннющий флоу где-то в середине покажешь, то это тупо.
источник

K

Kopusha in Android arch. components
Т.е. данные должны жить ровно пока жива какая-то flow root VM.
источник

K

Kopusha in Android arch. components
я все больше ловлю себя на мысли, что это scopes в даггере. Но там эти кастомные аннотации лепить придется..
источник

ST

Sasha Tainyuk in Android arch. components
Kopusha
поэтому я упомянул, что это временные данные. Они должны пережить поворот экрана там или если быстро переключился между приложениями. А если он завтра в приложение вернется и ты ему какой-то длиннющий флоу где-то в середине покажешь, то это тупо.
Берешь рум, вот тебе и решение без всяких костылей. )
источник

ST

Sasha Tainyuk in Android arch. components
Если что, то я inMemory вариант имел ввиду
источник

ST

Sasha Tainyuk in Android arch. components
Имхо конечно, но шарить вью модель между фрагментами имеет смысл наверное только, когда у тебя на экране одновременно 2 и более фрагментов. А так, хз, как-то  костыльно и не имеющие особого смысла. Хотя может и чего то не догоняю)
источник

ES

Eugene Shapovalov in Android arch. components
В скоупе достаточно хранить объект, в который записываются данные, и который можно сохранить/восстановить в Activity.
источник

NB

Nikita Bulygin in Android arch. components
Не нужно шарить данные через ViewModel активити, это плохое решение и плохо что Гугл его показывает в туториале по VM. Имхо, лучше во VM держать данные относящиеся только к данному экрану, результат взаимодействия( типо ввел номер телефона нажал далее) лучше хранить выше. Как выше сказали ин мемори рум подойдёт.
источник

a

and in Android arch. components
Yura Gromyk
Всем привет, ребята
У меня вопрос насчёт активити в приложении. Много из вас юзает сингл-активити? Мне просто кажется, что лучше дать отдельное активити авторизации и сплэшу, чтобы как-то всё было более разделено чтоли. Поделитесь, пожалуйста, вашими подходами к этому, ибо раньше завертал всё в активити, но со временем понял, что это далеко не наилучшее решение
Глянь, как это в Телеграме реализовано (одна активити, свой lifecycle для фрагментов, которые не фрагменты, а набор вьюсов, свой actionbar на базе простого framelayout). Дёшево и сердито, короче. https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java
источник

NM

Nikita Minin in Android arch. components
Kopusha
ну, как бы VM активити и есть тот source of truth, который переживает VM фрагментов... Пример, Onboarding flow какой-то. На первом экране ввел адрес, на другом телефон, потом сфоткался и тд. Все это фрагменты. По ходу дела ты эту инфу где-то в активити VM собираешь, чтоб в конце сохранить/создать аккаунт.
Я в таком кейсе провайдил в каждый фрагмент одну общую вью модель через viewmodelProviders.of(fragment.getActivity). Не скажу про это  со стороны архитектурной философии. Но задачу это решало чисто и на 100%
источник

K

Kopusha in Android arch. components
@nminin спасибо, мы как раз обсуждаем, как этого не делать 🙂.
источник

М

Михаил in Android arch. components
Kopusha
@nminin спасибо, мы как раз обсуждаем, как этого не делать 🙂.
Либо флоу скоуп, либо иметь в холдере данных метод clear ()
источник

М

Михаил in Android arch. components
Я бы второе выбрал
источник
2019 March 18

YG

Yura Gromyk in Android arch. components
Aleksandr Yurkovskiy
Это относится к теме чата?
Или Я чего-то не понимаю?
Почему же нет? Разве это не вопрос, который может привести к nav. component с jetpack? Тот же Cicerone здесь обсуждался
источник

YG

Yura Gromyk in Android arch. components
Yura Gromyk
Всем привет, ребята
У меня вопрос насчёт активити в приложении. Много из вас юзает сингл-активити? Мне просто кажется, что лучше дать отдельное активити авторизации и сплэшу, чтобы как-то всё было более разделено чтоли. Поделитесь, пожалуйста, вашими подходами к этому, ибо раньше завертал всё в активити, но со временем понял, что это далеко не наилучшее решение
Всем спасибо за ответы👍
источник

K

Kopusha in Android arch. components
Михаил
Либо флоу скоуп, либо иметь в холдере данных метод clear ()
👍
источник