Я создал экземпляр модели представления в onCreate
методе действия.
ticketViewModel = ViewModelProviders.of(this).get(TicketViewModel.class);
Затем у меня есть метод AddTicket
, который использует viewModel
для обращения к службе, и при ответе от viewModel
я отклоняю загрузочную анимацию.
public void addTicket(View view){
ticketViewModel.AddTicket(id).observe(this, response ->{
dismissLoadingAnimation();
}
Теперь после добавления заявки пользователь может повторно нажать кнопку Add Ticket
, и метод addTicket()
будет вызван снова.
но на этот раз observer
, определенный в ViewModel, вызывается 2 раза, что приводит к 2 сетевым вызовам и выполнению 2 dismissLoadingAnimation
.
И если я продолжаю нажимать кнопку addTicket
, количество выполняющих наблюдателей, определенных внутри ViewModel
keep, увеличивается.
Это код моей модели просмотра.
public class TicketViewModel extends AndroidViewModel implements IServiceResponse {
MutableLiveData<String> mObservableResponse = new MutableLiveData<String>();
public MutableLiveData AddTicket(String id){
JsonObject jsonObject= new JsonObject();
jsonObject.addProperty("id", id);
NetworkUtility networkUtility= new NetworkUtility(this, ADD_TICKET);
networkUtility.hitService(URL, jsonObject, RequestMethods.POST);
return mObservableResponse;
}
@Override
public void onServiceResponse(String response, String callType){
if(serviceTag.equalsIgnoreCase(ADD_TICKET)){
mObservableResponse.setValue("success");
}
}
}
sectionViewModel.getData
, когда я получаю результат от этого метода, мне нужно вызватьsectionViewModel.getSeats
- person dev90   schedule 16.12.2018