前言
MVP系列文章
MVP系列文章(一) - MVC 与 MVP
MVP系列文章(二) - 优化attach()、detach()方法
MVP系列文章(三) - 动态代理优化每次判断 View != null
MVP系列文章(四)- GC回收原理分析
MVP系列文章(五)- 泛型擦除
MVP系列文章(六)- 代码架构与运行时架构
MVP系列文章(七)- 知识梳理
1. 泛型构建基类
1>:对于每一个presenter类都需要调用 绑定、解绑方法,即就是attach()、detach()方法,比较麻烦,所以这里抽取基类 BaseMVPActivity,采用泛型构建基类,将 attach()、detach()都放到 基类中去写就可以:
/**
* Email: 2185134304@qq.com
* Created by Novate 2018/7/7 15:03
* Version 1.0
* Params:
* Description: 泛型构建基类,将attach()、detach()方法放到基类中
*/
public abstract class BaseMVPActivity<P extends BasePresenter> extends AppCompatActivity implements BaseView{
private P mPresenter ;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView();
// 创建 P ,只能交给子类,每个 Activity都不一样
mPresenter = createPresenter() ;
// 绑定
mPresenter.attach(this);
initView() ;
initData() ;
}
// 由子类去实现
public abstract P createPresenter();
public abstract void initData();
public abstract void initView();
public abstract void setContentView();
/**
* 解绑
*/
@Override
public void onDestroy() {
super.onDestroy();
mPresenter.detach();
}
}