new一个module,选择Android Library,命名。
接着就可以直接在库里写mvp,然后引入到别的模块中使用并可以反复使用
其中的方法根据自身情况而定
接口:
model:
public interface IBaseModel {
void serverFail(String msg);}
presenter:
public interface IBasePresenter {
}
view:
public interface IBaseView {
void showLoading();
void hideLoading();
void serverFail(String msg);
}
Base方法
BaseModel:
public class BaseModel implements IBaseModel {
@Override
public void serverFail(String msg) {
}
}
Base Presenter:
public class BasePresenter<M extends BaseModel,V extends IBaseView> implements IBasePresenter {
public M model;
public V view;
/**
* 绑定view和model
* @param m
* @param v
*/
public void attch(M m,V v){
this.model = m;
this.view = v;
}
/**
* 回收资源,解绑,避免内存泄漏
*/
public void detach(){
this.model = null;
this.view = null;
}
}
BaseView就是Activity。
基类Activity
public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements IBaseView{
public P presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(bindLayoutId());
initView();
presenter = initPresenter();
if (presenter!=null){
presenter.attch(initModel(),this);
}
}
/**
* 初始化子类model
* @return
*/
protected abstract BaseModel initModel();
/**
* 初始化view
*/
protected abstract void initView();
/**
* 让子类初始化p
* @return
*/
protected abstract P initPresenter();
/**
* 绑定资源
* @return
*/
protected abstract int bindLayoutId();
@Override
public void showLoading() {
}
@Override
public void hideLoading() {
}
@Override
public void serverFail(String msg) {
}
@Override
protected void onDestroy() {
super.onDestroy();
if (presenter!=null){
presenter.detach();
}
}
}