169 похожих чатов

Народ подскажите как верно ли я организвал структуру ? 1)

Есть набор Fragment (тут а обрабатываю все реакции происходящие во View , всякие там OnClick)
2) Для каждого из них я создаю свою AndroidViewModel ( тут я храню все данные)
3) В качестве View используется XML с биндингом данных

——-
Вопросы :
1) Всякие onClick , по кнопкам и все события происходящие во View обрабатывает у меня сам Fragment , нужно ли создавать еще один слой абстракции и использовать для бизнес логики Serivice ?
2) Будет ли верным реализовывать бизнес логику во AndroidViewModel
3) Правельный ли подход создать набор AndroidViewModel в которых акумулирована логика работы с определённым набором данных , потом просто их довольно легко использовать добавиы к фрагменту.
4) Верно ли хранить ссылку на binding в нутри AndroidViewModel ?
5) Верно ли в нутри одной AndroidViewModel исполььзовать другие AndroidViewModel с другой логикой (или задача этих классов тольько хранение данных которые не умирают)

5 ответов

12 просмотров

Ну, а зачем тебе android viewmodel, это не самое лучшее решение, следует избегать использование связанных с жц компонентов во вьюмодели. Зачем хранить ссылку на биндинг во вьюмодели? Будет лик, при использовании фрагментов создавай инстанс биндинга в oncreateview и заналивай в ondestroyview. Все обновления стейтов только через дата-холдэры Для бизнес логики дели все на слои, можно ещё и на модули, зависит от сложности проекта и команды Первый вопрос не понял, что за сервис? Ты хочешь написать свой собственный а-ля биндер?

Andrei- Автор вопроса

1) binding за тем и храню в модели что бы не заморачиваться с сохранением состояния при уничтожении фрагмента или активности, если это не верно то скажите почему так не стоит делать 2) AndroidМiewModel - живёт на протяжении всего жизненного цикла активности, или фрагмента к которому она привязана в не зависимости от его текущего состояния потому и исполььзую

Касательно биндинга, смотри, ты его создал в фэктори, после создании ты передал его во вьюмодель, все. Активити умерла, конфиг сменился, ты что делаешь? У тебя в вм старый биндинг, не новый, ты его скорее все все делаешь мутабельным и открытым, все это не vm, а херь какая-то, те при каждом повороте надо обновлять его поле, чего вообще быть не должно

Andrei- Автор вопроса

после onDestroy умирает и ViewModel

ViewModel умирает в onCleared()

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта