NowinAndroid—2024 Android现代开发全功能应用
现代Android开发全功能示例应用Now-in-Android,它是用Kotlin和Jetpack Compose开发的,功能非常强大。这个应用遵循了安卓设计和开发的最佳方法,旨在给开发者提供实用的参考资料。无论你是新手还是专家,都能从中学到很多有用的知识和技巧。
作为一款开发中的应用,它的目标是通过定期提供新闻更新,帮助开发者们与安卓开发的世界保持同步。该应用目前正在开发中prodRelease
版本已经在Play商店上可用。
“Now in Android” 应用展示了 “Now in Android” 系列的内容,用户可以浏览最新的视频、文章和其他内容的链接。此外,用户还可以关注自己感兴趣的主题,当有新内容发布与其关注的主题相匹配时,会收到通知提醒。
Now in Android应用遵循官方架构指南及模块化开发。
UI
该应用采用了 Material 3 设计准则进行设计。
所有的屏幕和用户界面元素都是使用 Jetpack Compose 构建的。
该应用有两个主题:
动态颜色主题 - 根据用户当前的颜色主题使用相应的颜色(如果支持)
默认主题 - 当不支持动态颜色时,使用预定义的颜色
每个主题都支持暗黑模式。
应用采用自适应布局,以支持不同尺寸的屏幕。
app架构
在app架构学习过程中,您将深入了解 Now in Android 应用的架构:包括其各个层级、关键类以及它们之间的相互作用。
app架构包含三层: data layer, domain layer 和 UI layer。
该架构采用了响应式编程模型,具有单向数据流。在最底层是数据层,其核心概念包括:
- 上层对下层的变化进行响应。
- 事件从上层向下流动。
- 数据从下层向上流动。
- 使用流实现数据流,采用 Kotlin Flows 实现。
示例:显示新闻列表
当应用程序首次运行时,它会尝试从远程服务器加载新闻资源列表(在选择“正式版”构建时,演示版本将使用本地数据)。加载完成后,根据用户选择的兴趣向其展示这些新闻。
下面的图示展示了所发生的事件以及数据如何从相关对象中流动,实现这一目标。
模块化
在这个学习过程中,您将深入了解模块化概念,以及在 Now in Android 应用程序中用于创建模块的模块化策略。
模块化是将原本庞大且单一的代码库拆分成松耦合、自包含的模块的一种实践。
模块化优点
-
可扩展性:模块化将关注点分离,使得项目更容易扩展和修改,提供了更大的自主权和架构模式的支持。
-
并行工作:模块化减少了版本控制冲突,使得开发人员在大型团队中能够更高效地并行工作。
-
单一职责:每个模块都有专门负责的所有者,负责维护代码、修复错误和审核更改。
-
封装性:隔离的代码更易于阅读、理解、测试和维护。
-
减少构建时间:利用 Gradle 的并行和增量构建可以减少构建时间。
-
动态交付:模块化是 Play Feature Delivery 的要求,可以根据条件或按需下载特定功能。
-
可重用性:适当的模块化使得代码共享和从相同基础构建多个应用程序成为可能,跨不同平台。
模块化缺点
-
过多的模块会增加构建配置的复杂性,导致 Gradle 同步时间增加,并产生持续的维护成本。
-
如果模块数量过少、大而紧密耦合,就会失去模块化的好处,形成另一个庞大的模块。
-
模块化可能会导致项目过于复杂,没有一种通用解决方案。并不是所有项目都适合进行模块化,特别是对于规模较小且不太可能进一步扩展的项目来说,可扩展性和构建时间优势可能并不适用。
综上所述,模块化是有益的,但需要根据实际情况进行权衡和决策。
模块化策略
需要遵循2条原则
低耦合 - 模块之间应该尽可能独立,这样对一个模块的更改对其他模块的影响应该为零或最小。
高内聚 - 一个模块应该包含一个作为系统运行的代码集合。它应该有明确定义的职责,并在某些领域知识的界限内保持。
NowinAndroid中的模块化类型
参考链接
https://developer.android.com/topic/architecture
https://developer.android.com/jetpack/compose
https://developer.android.com/topic/architecture
https://github.com/android/nowinandroid
https://m3.material.io/