• 从官方文档中探索 Android App 架构演进的方向


    作者:madroid
    转载地址:https://juejin.cn/post/7114193651206455326

    背景

    近期,无意间重新翻阅了一下 Android 官方文档,发现文章的目录结构有不少改动的地方。我尝试从这些改动的地方,一探 Android App 架构的演进方向。当然文档中包含的主题有很多,本文主要从架构相关的主题进行介绍。

    官方文档中,中文与英文中的目录结构并不相同,英文版本结构更加合理,中文文档结构应该是翻译进度问题有所滞后。也正是由于这种滞后的现象,才可以更加方便的对比出官方对于各项技术的思考。

    下面我们就看下具体的差异点在什么地方。

    突出架构设计,独立为章节

    在中文版本的文档中,架构相关的内容散落在核心主题的各处,而在英文版本中则将架构部分单独抽成一个相对独立的部分。

    英文版本中相较于中文版本的改动主要有以下几点:

    1. 新增 App architecture 章节,并且在核心主题(Core topics)之上;
    2. 将核心主题中的新版架构指南、架构组件、导航内容放入架构章节;
    3. 将最佳实践章节中的依赖注入放入架构章节;

    下面会对涉及的改动的部分做一个详细的展开。

    架构指南

    指南这部分在中文版本中无法在目录结构中无法直接索引,英文版本中则可以比较清晰的看到 UI LayerDomain LayerData Layer 等内容。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1bJoInlv-1656484631697)(https://upload-images.jianshu.io/upload_images/16900214-829601668c969af4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

    架构组件

    架构组件目前看是 Jetpack 系列组件的子集,包含大家日常过程中可能会经常使用到的组件。

    中文版本中,这部分是直接罗列;在英文版本中则是对其进行了分类。 UI 相关的组件放到了 UI Layer 中,数据相关的则放到了 Data Layer 中。UI Layer 中对生命周期相关的内容做了个收敛。

    App 入口(App Entry points)

    App 入口这部分在中文版本中是没有定义的,在英文版本中则是把核心主题的 Activity 内容做了拆分。讲中文中的 Activity 原先内容中抽离出了额外的两部分:Shortcuts 和 App Widgets。Shortcuts调整成和 Activity 平级,都是 App 的入口,App Widgets 则是继续待在核心主题部分。

    App 导航

    App 导航部分英文版本也是中文版本做了一次梳理,逻辑更加清晰。除了包含 Jetpack 组件中的 Navigation 之外,还有 Fragment 、App Links 以及 ViewPager 等内容。

    依赖管理

    这部分内容基本上内容没有调整,仅仅是从最佳实践部分移动到App 架构部分。

    App Startup

    这部分在中文版本中是在架构组件内,英文版本中是和依赖注入、App导航等内容是平级的关系,这也是比较好理解的。

    大胆预测

    根据个人理解,英文版本中的组织结构应该也不是最终版本,也会不断更新的。我个人觉得后面还会有相关的知识点会纳入到 App 架构的章节中。下面就是我个人的大胆预测。

    1. Data Layer 中会新增 Room 库,当然可能不仅仅会新增 Room 库,整个数据及文件部分都有可能移入到 Data Layer 中,目前 Room 库也是在数据及文件部分的。
    2. App 入口部分加入 App Widgets/Glance 及 Service 部分,App Widgets 比较好理解,在技术方面他是和 App Shortcuts 类似的东西,对外暴露的 Service,也可以当做是 App 的入口,当然这部分也可以当做是代码块调用的入口。

    整体结构如下:

    总结

    通过对比中英版本文档,我们可以看到官方文档对各个知识点组织方式的演进方向。除了 App 的分层架构之外,还在逐步完善 App 整体架构。

    也是期望通过这次对官方文档的梳理,能够将 Jetpack 中常用的一些组件库在大家的脑海中建立一个网状关系,知道知识与知识之间的关系及链接,建立自己的知识网络。

  • 相关阅读:
    C#将实体类转为JSON字符串
    设计模式总结-笔记
    力扣203-移除链表元素——链表
    [附源码]SSM计算机毕业设计学生互评的在线作业管理系统JAVA
    Selenium自动化测试-设置元素等待
    拓端tecdat|Python之LDA主题模型算法应用
    云原生Kubernetes:Yaml文件编写
    价值9890元的600集Python教程,在此透露给大家!速度来拿哇
    java计算机毕业设计疗养院管理源码+系统+数据库+lw文档+mybatis+运行部署
    LeetCode #94.二叉树的中序遍历
  • 原文地址:https://blog.csdn.net/weixin_61845324/article/details/125521644