Если вы хотите внести некоторые изменения, я думаю, что мы сможем справиться с этим более чётким способом
LiveData предназначен для использования в качестве значения свойства представления
В ViewModel
public class TicketViewModel extends AndroidViewModel implements IServiceResponse {
private MutableLiveData<Boolean> showLoadingAnimationLiveData = new MutableLiveData<String>();
public LiveData<Boolean> getShowLoadingAnimationLiveData(){
return showLoadingAnimationLiveData;
}
public void addTicket(String id){
JsonObject jsonObject= new JsonObject();
jsonObject.addProperty("id", id);
NetworkUtility networkUtility= new NetworkUtility(this, ADD_TICKET);
networkUtility.hitService(URL, jsonObject, RequestMethods.POST);
showLoadingAnimationLiveData.setValue(true);
}
@Override
public void onServiceResponse(String response, String callType){
if(serviceTag.equalsIgnoreCase(ADD_TICKET)){
showLoadingAnimationLiveData.setValue(false);
}
}
}
В onCreate вашей деятельности / фрагмента
ticketViewModel.getShowLoadingAnimationLiveData().observe(this,showLoadingAnimation->{
if(showLoadingAnimation != null && showLoadingAnimation){
startLoadingAnimation();
}else{
dismissLoadingAnimation();
}
})
Основная концепция заключается в разделении обязанностей, Деятельности / фрагменту не нужно знать, какой процесс происходит, им нужно только знать, каковы текущие свойства / состояние дочерних представлений.,
Нам необходимо поддерживать LiveData в ViewModels для каждого изменяющегося свойства / состояния в зависимости от представлений.ViewModel должен обрабатывать состояния представления в зависимости от того, что происходит.
Единственная ответственность, которую Activity / Fragment несет в отношении процесса, - это запускать его и забывать, а ViewModel должен обрабатывать все (например, информирование репозиториев о выполнении работы и изменение View.Свойства).
В вашем случае 'addTicket' - это процесс, о котором Деятельности / Фрагменту не нужно знать о своем статусе.Единственная ответственность Activity / Fragment об этом процессе - запускать его.
ViewModel - это тот, кому необходимо проанализировать состояние процесса (выполняется / успешно / не удалось) и дать соответствующие значения LiveDatas для информирования.соответствующие виды