您的位置:首页 > 运维架构 > 网站架构

Android MVP架构简单封装

2016-05-29 20:13 633 查看
最近在研究MVP和MVVM架构模式,看了看觉得还是MVP好做点,特意查查资料,做了下简单的封装。先看一下自己封装项目的基本库结构。



来看看源码吧

BasePresenter.java

public abstract class BasePresenter<T> {

protected Reference<T> mViewRef;//View接口类型的弱引用

public void attachView(T view){

mViewRef=new WeakReference<T>(view);//建立关系

}

protected T getView(){

return mViewRef.get();
}

public boolean isViewAttached(){

return mViewRef!=null&&mViewRef.get()!=null;
}

public void detachView(){

if (mViewRef!=null){

mViewRef.clear();
mViewRef=null;
}

}

}


BaseActivity.java

public abstract class BaseActivity<V,T extends BasePresenter<V>> extends AppCompatActivity {

protected T mPresenter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mPresenter=createPresenter();//创建presenter
mPresenter.attachView((V)this);

initVariables();
initViews(savedInstanceState);
loadData();
}

@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
}

//初始化变量,接受其他页面传递的参数
protected abstract void initVariables();
//初始化布局文件、控件
protected abstract void initViews(Bundle savedInstanceState);
//加载数据
protected abstract void loadData();

protected abstract T createPresenter();
}


BaseFragment.java

public abstract class BaseFragment<V,T extends BasePresenter<V>> extends Fragment {

protected T mPresenter;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPresenter=createPresenter();//创建presenter
mPresenter.attachView((V) this);
initVariables();
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

return inflater.inflate(getContentId(),container,false);
}

@Override
public void onResume() {
super.onResume();
loadData();

}

@Override
public void onDestroy() {
super.onDestroy();
mPresenter.detachView();
}

protected abstract void initVariables();
protected abstract int getContentId();
protected abstract void loadData();
protected abstract T createPresenter();

}


数据监听接口

DataRequestListener.java

public interface DataRequestListener<T> {

void success(T data);
void fail();

}


特此记录特供大家参考,仅仅是简单的封装,可以根据自己的项目自己再次封装重构,自己也算做个笔记!~

如果觉得有用,打赏个呗!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: