Android mvp架构,后面的构思

基础的框架已经搭好了

  • Presenter 继承自(extend) ViewModel,实现(implements)LifecycleObserver
  • Model 层就是简单的实现,利用Presenter层的lifecycle,对RxJava实现的网络请求做了内存泄漏的管理
  • View层就是简单的写了一个BaseActivity实现了2个泛型,做一个些初始化简单的东西
  • 后续就是继续封装一些公用类,方便后续使用MVP开发
  • 下面简单的放了一些代码
public abstract class BasePresenter extends ViewModel implements LifecycleObserver {
    private LifecycleOwner lifecycleOwner;

    @Override
    protected void onCleared() {
        super.onCleared();
        if (lifecycleOwner != null) {
            lifecycleOwner.getLifecycle().removeObserver(this);
        }
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    void onCreate() {

    }
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    void onStart() {

    }
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    void onResume() {

    }
    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    void onPause() {

    }
    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    void onStop() {

    }
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    void onDestroy() {

    }
    public Lifecycle getLifecycle() {
        return lifecycleOwner.getLifecycle();
    }
    public void attachLifeCycle(LifecycleOwner lifecycleOwner) {
        this.lifecycleOwner = lifecycleOwner;
        if (this.lifecycleOwner != null) {
            this.lifecycleOwner.getLifecycle().addObserver(this);
        }
    }

}

这是最上层的类,功能也简单,有一个继承自他的实现类 BaseUIPresenter

abstract class BaseUIPresenter : BasePresenter() {

    var view: T? = null

    override fun onCleared() {
        super.onCleared()
        onDetach()
        this.view = null
    }

    override fun onCreate() {
        super.onCreate()
        start()
    }

    override fun onResume() {
        super.onResume()
    }

    /**
     * attach 上你的view
     */
    fun onAttachView(view: T?) {
        this.view = view
    }

    /**
     * 释放该释放的资源
     */
    abstract fun onDetach()

    /**
     * 第一次操作
     */
    abstract fun start()

}

也是比较简单的

后续的思考

  • 实现RecyclerView+StateView+Presenter的封装,对于后续大量使用单一的列表,单接口的页面实现快速开发
  • 对Dialog中请求的封装,因为我统一使用了DialogFragment,对内存管理基本上都可以放入Presenter中,主要是对使用Dialog中的单接口使用的情况

2021.9.7

  • 最近完成了一个ListStatePresent和ListStateView的改造,这个针对单RecyclerView和单接口的情况
  • 下一步将封装通用的Dialog,将分(AlertDialog,BottomDialog,CustomDialog),统一用DialogFragment使用,摒弃PupopWindow和Dialog
  • 将图片加载简单封装一下
  • 将整体项目改造,将ButterKinfe取消改用ViewBinding
  • 尽量从Java切换到Kotlin
  • 改造IM的写法,将数据库,调用做一个分离
  • 改造音视频通话流程,其中包括(Push,应用内唤起,后台唤起等等)

你可能感兴趣的:(Android mvp架构,后面的构思)