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

重学安卓:是 难得一见 的 Jetpack MVVM 最佳实践!

  •  
  •   KunMinX · 2019-11-05 10:15:18 +08:00 · 9319 次点击
    这是一个创建于 1627 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很高兴见到你!

    上周我在 各大技术社区 发表了一篇 《 Jetpack MVVM 精讲》,原以为在 知识网红 唱衰安卓 的 2019 会无人问津,没想到文章一经发布,从 国内知名公司 的架构师、技术经理,到 世界级公司 的 Android 开发 都在看。😉

    20191027123940 1.png

    并且从读者的反馈来看,近期大部分安卓开发 已跳出舒适圈,开始尝试认识和应用 Jetpack MVVM 到实际的项目开发中。

    只可惜,关于 Jetpack MVVM,网上多是 东拼西凑、人云亦云、通篇贴代码 的文章,这不仅不能提供完整的视角 来帮助读者 首先明确背景状况,更是给还没入门 Jetpack 的读者 徒添困扰、起到 劝退 的作用。

    好消息是,这一期,我们带着 精心打磨的 Jetpack MVVM 最佳实践案例 来了!

    | PureMusic | LiveData Dispatch | PlayMode Switch | | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | | 333.gif | 3333.gif | ![playmode.gif](播放模式.gif) |

    本人拥有 3 年的 移动端架构 践行和设计经验,领导团队重构的 中大型项目 多达十数个,对 Jetpack MVVM 架构在 确立规范化、标准化 开发模式 以 减少不可预期的错误 所作的努力,有着深入的理解。

    在这个案例中,我将为你展示,Jetpack MVVM 是如何 蕴繁于简 地 将原本十分容易出错、一出错就会耽搁半天时间的开发工作,通过 寥寥的几行代码 轻而易举地完成。😉

    https://github.com/KunMinX/Jetpack-MVVM-Best-Practice

    25 条回复    2019-11-18 10:47:41 +08:00
    laibin2
        1
    laibin2  
       2019-11-05 10:59:11 +08:00
    看过,影响深刻
    kile
        2
    kile  
       2019-11-05 11:08:17 +08:00
    绝不使用 dagger 挺有意思的...

    有这个说明是以前是很久前就喜欢尝新的老江湖了...
    KunMinX
        3
    KunMinX  
    OP
       2019-11-05 11:08:18 +08:00
    @laibin2 感谢你的阅读 😉
    shiguiyou
        4
    shiguiyou  
       2019-11-05 11:41:04 +08:00
    感谢分享,最近也在啃官网的 jetpack 相关架构组件
    aabbcc112233
        5
    aabbcc112233  
       2019-11-05 12:48:57 +08:00 via Android
    感谢,这几天正好在看这个
    starerlloll
        6
    starerlloll  
       2019-11-05 13:08:20 +08:00
    jetpack 最大的问题个人感觉不是用法,而是只适合符合 material design 的 app. 一旦设计师发散下思维就很蛋疼了。。
    charlieputon
        7
    charlieputon  
       2019-11-05 13:11:30 +08:00 via Android
    @starerlloll 感觉你并没有理解 jetpack,建议多看看官方文档
    hhhsuan
        8
    hhhsuan  
       2019-11-05 13:14:07 +08:00
    写的有点难懂啊,比如“状态托管 和 状态管理的分治” ,这都啥意思啊。
    starerlloll
        9
    starerlloll  
       2019-11-05 13:25:34 +08:00
    @charlieputon 大佬,说说你的理解?
    Kmmoonlight
        10
    Kmmoonlight  
       2019-11-05 13:32:08 +08:00
    所以我该怎么看关于这个项目的文档介绍,而不是让我看源码呢
    starerlloll
        11
    starerlloll  
       2019-11-05 13:46:00 +08:00   ❤️ 1
    @Kmmoonlight 这时候就要你花 99 你去订阅他的专栏了
    closedevice
        12
    closedevice  
       2019-11-05 14:15:12 +08:00
    @starerlloll 哈哈哈......你懂得太多了
    charlieputon
        13
    charlieputon  
       2019-11-05 15:21:43 +08:00 via Android
    @starerlloll jetpack 是为了规范和方便安卓开发而提供的一些组件,md 是 ui 设计的规范,完全是两码事鸭
    ilotuo
        14
    ilotuo  
       2019-11-05 15:46:24 +08:00
    呃虽然你说 "将 标准化开发模式的 深度思考知识 和 实战反思经验 无保留地分享" 我还是看得檬茶茶.
    我觉得看 Google 那个 Todo MVVM 版示例源码就挺好. 主要就 ObservableField 的应用嘛.
    Kmmoonlight
        15
    Kmmoonlight  
       2019-11-05 16:34:43 +08:00
    @starerlloll 哦 这样的嘛 但是我看他的专栏 好像试看部分也没讲这个项目
    bydgg
        16
    bydgg  
       2019-11-05 16:44:21 +08:00
    不用 kotlin 是为了接地气吗
    KunMinX
        17
    KunMinX  
    OP
       2019-11-05 17:16:02 +08:00
    @Kmmoonlight

    你好,本专栏 专为 两年以上工作经验、已熟练掌握 深度思考能力、乃至于适合 通过订阅来换时间的读者。

    专栏目前已经为 130 位读者过了一遍 视图控制器 和 标准化开发模式 的知识点。

    标准化开发模式 是在软件工程的背景下,为解决 视图控制器 在 数据交互过程中存在各种一致性问题而存在的。

    因此,在了解 标准化开发模式 之前,需要彻底了解 视图控制器 的 生命周期、重建机制、状态管理、路由导航、页面通信 等知识点,这样才有机会理解 为什么会存在 Lifecyler、LiveData、ViewModel、DataBinding、Navigation,这些 架构组件、它们的存在究竟是为了解决什么问题,它们各自的职责边界分别是哪里到哪里。

    此外,我的专栏不止于技术,每一篇都经过深度思考,确保能够讲明白状况,并且必要的时候(像讲视图这一块),还会以 难得一见的方式 结合 交互设计知识 来讲解。

    以下是来自 近期热心读者的评价:

    https://i.loli.net/2019/11/05/6ZfKnjtSOaCu8lP.png
    https://i.loli.net/2019/11/05/YkomxlVKUQfSqWA.png
    https://i.loli.net/2019/11/05/PyD8EM3RBzwiTdq.png
    https://i.loli.net/2019/11/05/7wKbjBqyDSLopGa.png
    KunMinX
        18
    KunMinX  
    OP
       2019-11-05 17:19:26 +08:00
    @bydgg 是的。一方面,Java 作为一门标准化语言,为大众所熟知,另一方面,Java 在软件工程中存在诸多 诸如 一致性问题 的安全性隐患,因而,以 Java 为标准来讲解,能够降低人们明白状况的成本。

    与此同时,kotlin 是一门支持良好封装的语言,在后续,我们会介绍这门语言,以及基于这门语言而存在的实用技术。
    KunMinX
        19
    KunMinX  
    OP
       2019-11-06 11:17:40 +08:00
    刚刚有读者不吝对专栏文章发出由衷的赞美,很高兴我的深度思考知识 能帮助读者解除 认知上的困扰 😉

    https://i.loli.net/2019/11/06/1bdnoDkuKqAmBSx.png
    locoz
        20
    locoz  
       2019-11-06 15:38:03 +08:00
    事实证明,不标题党、不涉及贩卖焦虑并没有利用前两者赚钱的文章更受技术人员喜爱...
    我还记得上次楼主发的一篇文章,就因为标题看起来比较营销、简介列了个工资占比,底下评论就出现了一堆喷子
    KunMinX
        21
    KunMinX  
    OP
       2019-11-06 15:49:00 +08:00
    @locoz

    人类社会最根本的规则之一 就是价值交换。

    我只为愿意遵守规则、愿意为自己投资的读者负责。

    对于写作,我有自己的思考、自己的风格、自己的节奏,没有人有资格对别人的写作指指点点。
    KunMinX
        22
    KunMinX  
    OP
       2019-11-06 15:53:56 +08:00
    上次的那帮喷子,没有一个是 Android 本专业。

    一群非专业人士,放下手中的活,忙着来指导 Android 开发者怎么写 Android 文章,真是够了。

    喷子为了散发戾气,可以找任何借口、随便逮着任何人就开喷。

    以下是近期 真正的读者 在私底下 对本专栏以及本人 的评价和感谢

    https://i.loli.net/2019/11/06/nWS4PgqDtoXjmKE.png
    https://i.loli.net/2019/11/06/PLzSDhJWZQ2fFpv.png
    ihgoo
        23
    ihgoo  
       2019-11-14 20:42:22 +08:00
    “从 国内知名公司 的架构师、技术经理,到 世界级公司 的 Android 开发 都在看。”

    不得不喷你了,那么以上身份的都有谁在看呢?请举例?
    KunMinX
        24
    KunMinX  
    OP
       2019-11-14 22:30:02 +08:00
    当你抬起头,看见天上有驾飞机飞过时,飞机上的人并没有在看你。

    既然你这么想看,我也不介意满足好奇心。而我在文章开头提到的这些读者,也不过是千千万万优秀读者中的一个缩影。

    https://i.loli.net/2019/11/14/A9GH6BgKLmJN7pn.png
    https://i.loli.net/2019/11/14/cJzeXkTqsd1U7P9.png
    https://i.loli.net/2019/11/14/LQSijRUk7gKYcbX.png
    https://i.loli.net/2019/11/14/cnqkDF4t3XBQsNi.png
    https://i.loli.net/2019/11/14/yZDHWCKUzM1YuF2.png
    gaifanking
        25
    gaifanking  
       2019-11-18 10:47:41 +08:00
    java 的还是 kotlin 的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1087 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.