为了账号安全,请及时绑定邮箱和手机立即绑定

Android MVP - 调用服务器

Android MVP - 调用服务器

RISEBY 2021-09-26 14:28:48
我开始学习 MVP 但我有一些关于模型和演示者之间的通信的问题,例如登录功能Activity 将获取所有字段,发送给演示者,演示者将验证,如果一切都符合预期,演示者将调用模型以发送到服务器,但此调用可能需要几秒钟,所以我需要等待来自服务器的回调以再次调用演示者,演示者调用活动。我的问题是:如何做到这一点最好?目前我loginServerCallback()在演示者中添加了 a并将引用传递给模型,因此当模型完成时,我loginServerCallback()在演示者中调用,演示者分析响应并调用视图中的方法。我这样做对吗?public interface LoginMVP {interface View {    void loginSuccess();    void loginFailured(String message);}interface Presenter {    void validateFields(String email, String password);    void loginServerCallback();}interface Model {    void loginServer(String email, String password);}}谢谢,泰勒斯
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您的解决方案是正确的,但最好使用 MVVP。您必须检查许多可能导致应用程序崩溃的条件,例如组件生命周期。但是在 MVVP 中,不需要检查这个条件。


查看完整回答
反对 回复 2021-09-26
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

再添加一个回调


 public interface LoginMVP {

    interface View {

        void showLoadingIndicator(boolean active);

        void loginSuccess();

        void loginFailured(String message);

    }

    interface Presenter {

        void validateFields(String email, String password);

        void loginServerCallback();

    }


    interface OnLoginCallBack{

        void onSuccess();

        void onError();

    }

    interface Model {

        void loginServer(String email, String password);

    }

}

并像这样在演示者中调用登录方法


public void doLogin(String userName, String password) {

    view.showLoadingIndicator(true);

    modal.loginServer(userName, password, new LoginMVP.OnLoginCallBack() {

        @Override

        public void onSuccess() {

            view.showLoadingIndicator(false);

            view.loginSuccess();

        }


        @Override

        public void onError() {

            view.showLoadingIndicator(false);

            view.loginFailured("SomeError");

        }

    });

}


查看完整回答
反对 回复 2021-09-26
?
萧十郎

TA贡献1815条经验 获得超12个赞

从您的活动或片段中,presenter.loginServerCallback()在验证后调用 。

loginServerCallback()in内部LoginPresenter,处理成功和错误并将视图更新为view.loginSuccess()view.loginFailure("msg")


查看完整回答
反对 回复 2021-09-26
  • 3 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信