BaseActivity基类抽取和BasePrenter层业务处理
BaseActivity就是我们所创建的activity做出了简单的优化目的就是为了让我们方便调用代码实现:
public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity {
P mPreanter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutId());//做我们的加载视图
mPreanter=initPreanter();//MVP中的Presenter处理防止我们内存泄漏
initView();//做我们的查找控件的ID
initData();//做我们的逻辑层业务
}
public P getmPreanter() {
return mPreanter;
}
protected abstract int getLayoutId();
protected abstract P initPreanter();
protected abstract void initView();
protected abstract void initData();
@Override
protected void onDestroy() {
super.onDestroy();
if(mPreanter!=null){
mPreanter.datachView();//程序销毁则执行我们的清空操作
mPreanter=null;
}
}
}
// todo 做fragment基类抽取也是一样的操作
再看一下BasePresenter的逻辑
public abstract class BasePresenter<V extends IBaseView> {//IBaseView就是一个公共的接口
private WeakReference<V> vWeakReference;
public BasePresenter(V v) {
vWeakReference = new WeakReference<>(v);//在这里创建一个弱引用防止我们的内存泄漏
initModel();
}
protected abstract void initModel();
protected void datachView(){
if(vWeakReference!=null){
vWeakReference.clear();
vWeakReference=null;
}
}
}
IBaseView就是一个接口什么代码都不写入
public interface IBaseView {
}