Я хочу реализовать приложение для Android с шаблоном MVVM.мое приложение имеет несколько действий и фрагментов.Каждое действие или фрагмент имеет собственное действие (Отправка запроса на сервер, Запрос в базу данных, Чтение из файла и т. д.).мое приложение имеет несколько модулей для взаимодействия с базой данных, сетью, файлом и т. д., проблема заключается в том, что некоторые действия требуют подключения к нескольким компонентам, а затем агрегирования их результатов и обновления LiveData, которые наблюдаются в поле зрения. можно ли написать универсальную оболочку, которая может использоваться во всех моих моделях viewMode?1004 * Активность public class RegisterPhoneActivity extends
AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityRegisterPhoneBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_register_phone);
viewModel = ViewModelProviders.of(this).get(RegisterMobileViewModel.class);
binding.setViewModel(viewModel);
binding.setLifecycleOwner(this);
viewModel.getResponse().observe(this, new Observer<BaseResponse>() {
@Override
public void onChanged(BaseResponse baseResponse) {
//do something
}
});
}
}
ViewModel public class RegisterMobileViewModel extends ViewModel {
public void onRegisterButtonClick() {
BaseSender.getInstance().sendRequest(new RegisterCommand());
}
public LiveData getResponse(){
BaseSender.getInstance.getResponse();
}
}
Модель (сетевая модель) public class BaseSender {
//observed in Activity -- this design only works when i have a single network call
private MutableLiveData<String> response = new MutableLiveData<>();
private static BaseSender instance;
private BaseSender() {
}
public static BaseSender getInstance() {
if (instance == null) {
instance = new BaseSender();
}
return instance;
}
private class SenderHolder extends AsyncTask<String, Void, String> {
SenderHolder() {
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... strings) {
// sending request to server
}
@Override
protected void onPostExecute(String s) {
response.setValue(s);
}
}
public MutableLiveData getResponse() {
return responseObject;
}
}