java - Android MVP - 调用服务器

标签 java android interface mvp

我开始学习 MVP,但我有一些与模型和演示者之间的通信相关的问题,例如登录功能

  • Activity 将获取所有字段,发送到演示者,演示者将进行验证,如果一切符合预期,演示者将调用模型发送到服务器,但此调用可能需要几秒钟,因此我需要等待服务器的回调以再次调用演示者,然后演示者调用 Activity 。

我的问题是:最好的方法是什么?目前,我在演示器中添加了一个 loginServerCallback() ,并将引用传递给模型,因此当模型完成时,我在演示器中调用 loginServerCallback() ,演示器分析响应并调用 View 中的方法。我这样做对吗?

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);
}}

谢谢, 泰雷兹

最佳答案

再添加一个回调

 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");
        }
    });
}

关于java - Android MVP - 调用服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52365802/

相关文章:

java - 从LinkedHashMap检索值

java - 如何仅在 Spring 中通过注释配置组件扫描?

java - 仅将 Dagger 2 的依赖项注入(inject)到其中一种产品风格中

C# ICommand 可以执行

java - 为什么在java8中使用 "default"关键字

java - 基于谁是被调用者的逻辑

java - 尝试显示我的应用的天气图标时遇到问题

Android float 按钮未出现在视频上方

java - 如何从类中隐藏不支持的接口(interface)方法

java - Shiro LDAP 授权配置