Где находится код приложения в Android MVVM? - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в Android и MVVM, но уже сильно запутался. Думаю, мне не хватает части ментальной модели архитектуры, отсюда и довольно широкий вопрос. извините.

Android MVVM занимается разделением задач, чтобы иметь дело с созданием / уничтожением представлений / фрагментов, когда пользователь поворачивает устройство, а также для абстрагирования источника данных. Репозиторий object MyRepo работает с источником данных, возвращает LiveData (в моем случае var myLog : List<String>) в ViewModels (MyViewModel()), где за ним наблюдает MyFragment(). Это отлично подходит для вывода данных из базы данных или веб-сервиса на экран. Я также могу зарегистрировать OnClickListener, который действительно работает.

Но где мне начать с моего фактического кода? Я хочу выполнить команду Thread() на кнопке sh MyFragment, которая выводит вышеупомянутый список, который постоянно обновляется (вывод журнала). Путь от репозитория к экрану аналогичен указанному выше. Но этому потоку нужен Context, чтобы иметь возможность извлекать некоторые ресурсы, и он должен получать свои данные в репозиторий (что я делаю, получая экземпляр репозитория и используя функции, предоставляемые классом репозитория в классе Thread (), я думаю).

  • Я не могу поместить код в представление (это очевидно), но я также не могу поместить его в ViewModel из-за отсутствия контекста. Контекст может измениться, и viewModel не место для контекста.
  • Я не могу включить его в свою основную деятельность, потому что, если я думаю о более частом повторении этого шаблона, запуск приложения займет много времени из-за инициализации объекта и кажется совершенно неправильным использовать getApplication () в viewModel для непосредственного выполнения функций MainActivity
  • Репозиторий также не имеет никакого контекста, и IIR C не должен его получать

Где я могу создать экземпляр моего класса Thread () (и других классов, которые мне нужны, например, для слушателей и т. Д. c ..) в этом случае? Как мне получить контекст в этом случае?

Похоже, есть много возможностей, но есть и неочевидные Android связанные побочные эффекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...