1、两个Base接口类
public interface BaseView<T extends BasePresenter> {//规定view中必须实现setPresenter()方法,保持引用presenter
void setPresenter(T presenter);
}
public interface BasePresenter {//presenter必须实现start方法
void start();
}
该方法的作用是Presenter开始获取数据并调用View的方法来刷新界面,其调用时机是在Fragment类的onResume方法中。
2、定义了Contract(整合接口)
使用时为了减少类文件数目,可以写一个Contract接口来统一管理每一层的接口
<span style="font-size:10px;">public interface TaskDetailContract {
interface View extends BaseView<Presenter> {
void setLoadingIndicator(boolean active);
void showMissingTask();
void hideTitle();
void showTitle(String title);
void hideDescription();
void showDescription(String description);
void showCompletionStatus(boolean complete);
void showEditTask(String taskId);
void showTaskDeleted();
void showTaskMarkedComplete();
void showTaskMarkedActive();
boolean isActive();
}
interface Presenter extends BasePresenter {
void editTask();
void deleteTask();
void completeTask();
void activateTask();
}
}</span>
TaskDetailContract中的View接口定义了该界面(功能)中所有的UI状态情况
Presenter 接口则定义了该界面(功能)中所有的用户操作事件
3、Activity在mvp中的作用
Activity在项目中是一个全局的控制者,负责创建view以及presenter实例,并将二者联系起来。TaskDetailActivity 的onCreate()回调中创建TaskDetailPresenter 实例,TaskDetailPresenter 的构造函数中实现了View和Presenter的关联。
4、Model层
该项目中Model层最大的特点是被赋予了数据获取的职责,与我们平常Model层只定义实体对象截然不同。实例中,数据的获取、存储、数据状态变化都是Model层的任务,Presenter会根据需要调用该层的数据处理逻辑并在需要时将回调传入。
..................是不是写的太简单粗暴了。。。。。。。。。。。