
获得徽章 0
- 昨晚和一位作者交流后,改进了数据层返回结果的方式。
此前是内定通过 LiveData 返回,可正如我们在《MVP、MVVM关系精讲》中提到的,不仅仅有页面开发,也存在不是页面的用户接口,它们可能公用同一套 repo 方法。
因此定义了一个 DataResult 类,并且目前 repo 方法传参改为注入 DataResult,把 LiveData 限制在 domain 层及往前,感兴趣的小伙伴可 pull 最新源码查阅。github.com
展开等人赞过评论7 - 刚刚通过掘友分享的官方参考,对 Event-LiveData 做了重新设计,并且称谓回归 UnPeekLiveData,以增加辨识度。
UnPeekLiveData 通过独创的 “延时自动清理消息” 的设计,解决了数据倒灌问题,支持消息的多观察者消费,支持消息自动从内存释放,并且遵循开闭原则、实现了零入侵的设计。
已提交 Jcenter 远程依赖,感兴趣的小伙伴可前往查阅github.com
展开等人赞过14 - 昨天收到小伙伴的私信说,Event-LiveData 在 Activity 返场的场景下不起效
于是萌生了一个创意设计,通过对消息延迟置空,来一举三得:
1. 分发事件给多个观察者时,不会因第一个观察者消费了而直接置空
2. 时间到了,content 能自动被清理
3. 能够在维持低入侵设计的前提下,实现上述两个需求
感兴趣的小伙伴可前往查阅github.com
展开赞过评论1 - 考虑到新上手的小伙伴可能将 ViewModel 和 Presenter 的特质混淆,刚刚将《最佳实践》中 ViewModel 与 Domain.Request 的关系做了简化。
目前的做法是,移除代理模式,将 Request 作为 ViewModel 公开的成员字段直接供 UI 访问。
正如算法中的拿空间换时间,此处拿一定的“耦合”来换取结构和语义上的方便理解。
MVVM 开发模式中的 ViewModel 从本质上来说是对 View 的映射,通过 “只操作 ViewModel 中的视图绑定数据”,来规避视图调用的一致性问题。与 Presenter 有天壤之别。
感兴趣的小伙伴可 pull 最新源码查阅。github.com
展开等人赞过评论5 - 刚刚重写了 LiveData 底层并提供了专用于一次性的事件通知的 EventLiveData
有了它,不再需要手写在 Java 下容易造成 null 安全一致性问题的 Event 事件包装器,也规避了此前 UnPeekLiveData 的事件滞留内存 和 反射导致的延迟 等问题。
代码已上传到《最佳实践》项目,感兴趣的小伙伴可 pull 最新源码查阅。github.com
展开等人赞过111 - 自上一期专访《开源项目被人拿去做课程卖了 1000 多万是什么体验》发表后,陆陆续续有作者加我,诉说他们原创文章、项目在被人剽窃、出版甚至出售后,维权或弃笔的经历。
对此我感到十分惋惜。
与此同时,今天在恰饭广告看到上次的卖课方再次剽窃原创 —— 在多人协作的软工背景下解决“一致性”问题,是我全网首创的对此类问题现象本质的概况。
感兴趣的小伙伴大可直接到 GitHub 访问持续更新维护的 Jetpack MVVM 最佳实践项目。我是原创作者 KunMinX,Remember me。github.com
展开等人赞过1213