Android MVP - 调用服务器

我开始学习 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);

}}

谢谢,泰勒斯


RISEBY
浏览 189回答 3
3回答

慕桂英3389331

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

胡说叔叔

再添加一个回调 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");        }    });}

萧十郎

从您的活动或片段中,presenter.loginServerCallback()在验证后调用 。在loginServerCallback()in内部LoginPresenter,处理成功和错误并将视图更新为view.loginSuccess()和view.loginFailure("msg")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python