我在中创建了视图模型的实例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 次网络调用,以及 2dismissLoadingAnimation
执行。
如果我继续按addTicket
按钮,里面定义执行观察者的数量ViewModel
保持增加。
这是我的视图模型代码。
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");
}
}
}