V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
KunMinX
V2EX  ›  Android

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

  •  1
     
  •   KunMinX · 2019-08-29 14:21:57 +08:00 · 12090 次点击
    这是一个创建于 1939 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很高兴见到你!

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

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

    20190801120247.png

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

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

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

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

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

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

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

    https://xiaozhuanlan.com/topic/5860149732
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1849 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:20 · PVG 00:20 · LAX 08:20 · JFK 11:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.