Android Использует сервис для обновления пользовательского интерфейса в архитектуре MVVM

#java #android #mvvm #service #android-viewmodel

#Ява #Android #mvvm #Обслуживание #android-модель просмотра

Вопрос:

Как реализовать службу, которая приведет к обновлению пользовательского интерфейса с помощью ViewModel в архитектуре Android MVVM с использованием JAVA?

Текущий проект запускает класс A, который добавляет данные в модель представления, фрагмент A которой прослушивается для обновления пользовательского интерфейса.

в классе А я использую:

 mViewModel = ViewModelProviders.of((FragmentActivity) applicationContext).get(myViewModel.class);  

и во Фрагменте А:

 mViewModel = ViewModelProviders.of(getActivity()).get(myViewModel.class);  ...  mViewModel.getThreatsDetails().observe(getViewLifecycleOwner(), new Observerlt;Listlt;msggt;gt;() {  @Override  public void onChanged(Listlt;msggt; msg) {  Timber.i("changes observed, generating list");  }  });  

Вопрос в том, как реализовать службу, которая запускает класс A и обеспечивает ту же функциональность?

Ошибка, которую я получаю в строке, инициирующей модель ViewModelProvider представления, вызвана

java.lang.ClassCastException: КЛАСС SERVICE_CLASS не может быть приведен к androidx.fragment.app.FragmentActivity

Таким образом, проблема заключается в том, как использовать правильный ViewModelProvider, который может обеспечить обновление LiveData, чтобы при возобновлении работы приложения обновлялся пользовательский интерфейс FragmentA.

Я старался не использовать ViewModelProvider и напрямую инициировать новую ViewModel, так как mViewModel = new myViewModel(); все в порядке, но, как и ожидалось, фрагмент не может прослушивать изменения.

Есть ли какой-либо способ сделать это без необходимости хранения данных в базе данных?

Спасибо!