美文网首页
搭建自己的 android MVP 框架

搭建自己的 android MVP 框架

作者: DaveZ | 来源:发表于2017-10-15 22:14 被阅读0次

一、MVP 是什么?
MVP,全称 Model-View-Presenter,它是从经典的 MVC 演变而来的一个开发思想。应用分层结构,使得各层结构各司其职,其中 Model 层负责提供数据,View 层负责页面展示,Presenter 负责业务逻辑处理。

二、MVP 有什么好处?

MVC.png MVP.png

上面两张图分别是 MVC 和 MVP 的结构层次划分图,可以看到 MVP 相较于 MVC 的优点在于 View 和 Model 层间的完全解耦。

三、在 android 项目中搭建自己的 MVP 框架
现有 android 项目中,为了便于更好的开发和维护,基本采用 MVP 框架进行开发。下面我们将一步一步进行 MVP 框架的搭建。

public interface IBaseView {

    Activity getActivity();

}

public abstract class EABaseActivity<P extends EABasePresenter> extends AppCompatActivity
        implements IBaseView {

    private boolean isFirst = true;
    protected P presenter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        generatePresenter();
        setContentView(getLayoutId());
        findViews();
        addEvents();
        if (presenter != null) presenter.onBundle(getIntent().getExtras());
    }

    private void generatePresenter() {

        Type type = getClass().getGenericSuperclass();
        try {
            Type[] types = ((ParameterizedType) type).getActualTypeArguments();
            presenter = (P) ((Class) types[0]).newInstance();
            presenter.setView(this);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    protected abstract int getLayoutId();

    protected void findViews() {
    }

    protected void addEvents() {
    }

    public Activity getActivity() {
        return this;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (presenter != null) {
            presenter.onActivityResult(requestCode, resultCode, data);
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
        if (isFirst) {
            if (presenter != null) presenter.onAttach();
            isFirst = false;
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (presenter != null) presenter.onResume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (presenter != null) {
            presenter.onDetach();
            presenter = null;
        }
    }
}

Activity 的基类。

public class EABasePresenter<V extends IBaseView> {

    protected V view;

    public void setView(V view) {
        this.view = view;
    }

    public void onBundle(Bundle bundle) {

    }

    public void onAttach() {

    }

    public void onResume() {

    }

    public void onDetach() {

    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

    }

}

四、总结
基本思想大体如此,还是要根据不同的项目进行自己调整,当然这个框架还很不完善,在此只不过是抛块砖罢了。

相关文章

  • MVP

    Google官方MVP+Dagger2架构详解【从零开始搭建android框架系列(6)】 Android MVP...

  • android项目框架搭建demo(RxJava+Retrofi

    android 项目框架搭建,直接进入开发,集成Rxjava+ReTrofit+okHttp+MVP+glide,...

  • 搭建自己的 android MVP 框架

    一、MVP 是什么?MVP,全称 Model-View-Presenter,它是从经典的 MVC 演变而来的一个开...

  • 收藏

    Android 项目最新架构 一个整合了大量主流开源项目的 Android MVP 快速搭建框架:MVPArms(...

  • Android MVP框架搭建

    MVP框架搭建·源码通过本文记录一下学习MVP三层架构的思想,并实现一个基础的MVP项目架构搭建过程,通过MVC架...

  • Android MVP框架搭建

    概述 MVP简介(VIew-Model-Presenter) Presenter整个功能的服务者,当用户通过界面(...

  • Android MVP架构搭建

    Android MVP架构搭建

  • Android主流框架面试准备

    MVP Android MVP架构搭建史上最全的Android MVP模式架构面试题集锦Android面试题-架构...

  • 搭建属于自己的Android MVP 框架

    本文主要是结合自己对MVP的理解搭建了符合自身业务场景的MVP框架。 先放一个Demo地址,文章末尾也有 关于MV...

  • Android架构篇 - 收藏集 - 掘金

    Android 框架篇—— 从零开始搭建一个完善的 MVP 开发框架 (三),对列表型数据请求进行抽象,优化列表型...

网友评论

      本文标题:搭建自己的 android MVP 框架

      本文链接:https://www.haomeiwen.com/subject/iyhhuxtx.html