重学安卓: RxJava 才不是 LiveData 的对手!

2019-08-29 14:21:57 +08:00
 KunMinX

很高兴见到你!

上上上周,通过友人的介绍,我 承接并独立负责了 29 个页面、34 个 API、涉及 350 余个细节 的中大型电商软件的开发(感谢友人在项目后期 主动提出帮忙调整布局和对接 JS 😃)。

该软件有成熟的 iOS 实例,有专门适配 Android 的 360dp 设计稿,有 Restful API,所以尽管是第一次为合作方代工,总的来说还是一次满意的合作。

在该项目中,我广泛地采用了 Jetpack 架构组件。

事实上,正因为 依托于 Jetpack 面向标准化的、普适的 架构设计 和 理念规约,我才 得以在如此高强度的、紧凑的研发周期内,完成合作方原以为不太可能完成的任务

在有过这次研发经历后,我越发地想要向所有认识的、或者不认识的人推( qiang )荐( po )使用 Jetpack 架构组件。

并且,在架构组件中,如果说有哪个组件是我首推的,我一定会选择 LiveData。

作者:KunMinX 链接: https://juejin.im/post/5d6763dc5188257a5f39635b

11626 次点击
所在节点    Android
9 条回复
momocraft
2019-08-29 14:31:39 +08:00
没有看懂 不过能感受到你的热情
zjsxwc
2019-08-29 16:22:47 +08:00
666,
把前端的 State 概念抄过来改了个名字叫做 LiveData
zjsxwc
2019-08-29 16:27:14 +08:00
@zjsxwc #2 原文:“ 666,把前端的 State 概念抄过来改了个名字叫做 LiveData ”
======
回复:还是有一点区别,由于前端组件是通过 ui 里的 props 属性来传递数据的,所以前端的 State 会比较纯粹,而安卓没有,于是 LiveData 只能增加订阅者模式把监听 props 变动的活也一起揽过来干了
HarryQu
2019-08-29 16:44:51 +08:00
29 个页面, 34 个 api ,中大型应用。。。。
winterbells
2019-08-29 16:46:17 +08:00
livedata 用多了感觉就是另一种形式的 MVP,看着很乱
我习惯用 databinding,多个页面共用数据,绑同一个 model 就好了
crs0910
2019-08-29 16:50:29 +08:00
不懂安卓开发,看起来文章是在说 1. RxJava 跟 LiveData 不是一样的东西 2. SSOT 真香
提问:为啥没有像前端 NgRx 这样的库,这样不就不用吵了
wingyiu
2019-08-30 11:34:36 +08:00
你们发明的这些玩意,微软老人家都搞过
innerpeace03
2019-08-30 12:17:40 +08:00
别的不说,只是想问下大佬,LiveData 每次都获取最新状态这个问题你是怎么解决的,比如如果配合 Navigation 使用,当你点击某个 button 进行某种判断,然后进入到下个页面,当返回的时候你所监听的那个 livedata 就会去获取一遍最新状态,然后此时就会出问题。。
KunMinX
2019-08-30 13:39:32 +08:00
@innerpeace03 很简单,是 Navigation 的路由采取的是 replace,而非 show hide 的办法,导致返回时会重新请求一把状态。如果上一级页面是嵌套多个 Fragment 的 Container 的话,返回还会造成一定程度的卡顿。

解法是通过自定义一个 Navigator,我在这篇文章中有详尽的介绍:

https://xiaozhuanlan.com/topic/5860149732

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/596201

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX