Есть набор Fragment (тут а обрабатываю все реакции происходящие во View , всякие там OnClick)
2) Для каждого из них я создаю свою AndroidViewModel ( тут я храню все данные)
3) В качестве View используется XML с биндингом данных
——-
Вопросы :
1) Всякие onClick , по кнопкам и все события происходящие во View обрабатывает у меня сам Fragment , нужно ли создавать еще один слой абстракции и использовать для бизнес логики Serivice ?
2) Будет ли верным реализовывать бизнес логику во AndroidViewModel
3) Правельный ли подход создать набор AndroidViewModel в которых акумулирована логика работы с определённым набором данных , потом просто их довольно легко использовать добавиы к фрагменту.
4) Верно ли хранить ссылку на binding в нутри AndroidViewModel ?
5) Верно ли в нутри одной AndroidViewModel исполььзовать другие AndroidViewModel с другой логикой (или задача этих классов тольько хранение данных которые не умирают)
Ну, а зачем тебе android viewmodel, это не самое лучшее решение, следует избегать использование связанных с жц компонентов во вьюмодели. Зачем хранить ссылку на биндинг во вьюмодели? Будет лик, при использовании фрагментов создавай инстанс биндинга в oncreateview и заналивай в ondestroyview. Все обновления стейтов только через дата-холдэры Для бизнес логики дели все на слои, можно ещё и на модули, зависит от сложности проекта и команды Первый вопрос не понял, что за сервис? Ты хочешь написать свой собственный а-ля биндер?
1) binding за тем и храню в модели что бы не заморачиваться с сохранением состояния при уничтожении фрагмента или активности, если это не верно то скажите почему так не стоит делать 2) AndroidМiewModel - живёт на протяжении всего жизненного цикла активности, или фрагмента к которому она привязана в не зависимости от его текущего состояния потому и исполььзую
Касательно биндинга, смотри, ты его создал в фэктори, после создании ты передал его во вьюмодель, все. Активити умерла, конфиг сменился, ты что делаешь? У тебя в вм старый биндинг, не новый, ты его скорее все все делаешь мутабельным и открытым, все это не vm, а херь какая-то, те при каждом повороте надо обновлять его поле, чего вообще быть не должно
после onDestroy умирает и ViewModel
ViewModel умирает в onCleared()
Обсуждают сегодня