改造mvp为mvvm模式

看下我的mvvm代码结构:

1 生命周期控制类:

public abstract class MvvmFragment<V extends IView, VM extends ViewModel> extends BaseFragment {

2 view类

public class DsNaviView extends DsBaseNaviView<FragmentNaviBinding> implements IBaseNaviViewTest {

    interface OnViewAction{
        void onClick();
        void onLongClick();
    }
交互事件的处理放到fragment里了(fragment也主要是调用viewmodel来处理),view只负责提供页面数据的展示    

3 viewmodel类

public class NaviViewModel extends BaseNaviViewModel implements IRouteResultCallBack, IPosSwitchParallelRoadObserver, IPosParallelRoadObserver {


数据控制给到 ViewModel ,viewmodel 处理完后通过 MutableLiveData传递对象到 fragment里,
fragment通过绑定MutableLiveData通知来进行view的更新。
至于引导中各种后台数据上报还是放到放到服务中去,通过observer 或eventbus通知到 viewmodel里

4 有待思考的地方

fragment现在负责了view的交互事件,以及生命周期变化时候对view的控制,以及对 viewmodel的数据的更新。
整体改造后,感觉清晰了很多。

view:更新显示
viewmoel 数据的组装整理并通过 MutableLiveData传出去
fragment 生命周期相关的操作在这里发起,事件触发在这里发起。

有待确认点:


1 我也在像是不是让view和viewmodel各自监听lifecicle自己处理?但想来这样会导致混乱,统一放到fragment里更好吧。

2 这个主要没有通过框架对代码的流程和编写进行限制,我在考虑是否在搞一层限制以下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值