实时数据,存储库被多次调用android

时间:2017-07-31 13:04:02

标签: android repository viewmodel android-livedata

我正在使用Google的新Android Architecture Component AAC

我的问题

内部ViewModel类中的方法被多次调用,导致错误

1 getLoggedInUser()被多次调用

2 在改装onNext()或onError()之前, onChanged()被调用

MyActivity

LoginPojo loginPojo=new LoginPojo();
            loginPojo.setEmailId(viewFunctions.getText(etLoginEmailId));
            loginPojo.setPassword(viewFunctions.getText(etLoginPwd));
            viewModel.loginUser(loginPojo);

            viewModel.getLoggedInUser().observe(this, new Observer<LoginPojo>() {
        @Override
        public void onChanged(@Nullable LoginPojo pojo) {
            viewFunctions.hideCustomProgress();
            if (pojo.isError()) {

                if (pojo.isNetworkError()) {

                } else {

                }


            } else {

                if (pojo.getStatus().equalsIgnoreCase(constants.ERROR)) {

                } else {

                }
            }
        }
    });

视图模型

private MutableLiveData<LoginPojo> mutableLogin = new MutableLiveData<>();

    public final LiveData<LoginPojo> loginData = Transformations.switchMap(mutableLogin, new Function<LoginPojo, LiveData<LoginPojo>>() {
        @Override
        public LiveData<LoginPojo> apply(LoginPojo input) {
            return repository.loginUser(input.getEmailId(), input.getPassword());
        }
    });


public void loginUser(LoginPojo loginPojo) {

         mutableLogin.setValue(loginPojo);

    }


    public LiveData<LoginPojo> getLoggedInUser() {

        return loginData;
    }

0 个答案:

没有答案