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