美文网首页
Android mvp架构,后面的构思

Android mvp架构,后面的构思

作者: 薛定谔的猫QAQ | 来源:发表于2021-09-03 16:04 被阅读0次

    基础的框架已经搭好了

    • 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<T : IBaseView?> : 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架构,后面的构思

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