我在onCreate活动的方法中创建了View Model的实例。
ticketViewModel = ViewModelProviders.of(this).get(TicketViewModel.class);
Run Code Online (Sandbox Code Playgroud)
然后,我有了方法,AddTicket该方法viewModel用于命中服务,并在响应时viewModel关闭了加载动画。
public void addTicket(View view){
ticketViewModel.AddTicket(id).observe(this, response ->{
dismissLoadingAnimation();
}
Run Code Online (Sandbox Code Playgroud)
现在,添加票证后,用户可以Add Ticket按下按钮,然后addTicket()将再次调用该方法。
但是这次observer在ViewModel中定义的时间被调用了2次,导致2次网络调用和2次dismissLoadingAnimation执行。
如果我一直按下addTicket按钮,则内部ViewModelkeep中定义的执行观察器的数量会增加。
这是我的视图模型代码。
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 …Run Code Online (Sandbox Code Playgroud)