#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();
все в порядке, но, как и ожидалось, фрагмент не может прослушивать изменения.
Есть ли какой-либо способ сделать это без необходимости хранения данных в базе данных?
Спасибо!