相关疑难解决方法(0)

视图模型不断创建实时数据实例

我在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)

performance android android-layout android-viewmodel

5
推荐指数
1
解决办法
399
查看次数