Android 是什么
Android 是一种基于 Linux 内核并由 Google 开发的开源操作系统。它用于各种设备包括智能手机、平板电脑、电视和智能手表。
目前,Android 是世界上移动设备使用最多的操作系统; 根据 statcounter 的一份最近 12 个月的样本报告;Android 的市场份额为71.96%。
Kotlin
Kotlin 是由 JetBrains 开发的一种编程语言。由谷歌推荐,谷歌于 2017 年 5 月正式宣布 Kotlin 作为 Android 开发语言。它是一种与 Java 兼容并可以运行在 JVM 上的现代编程语言这使得它在 Android 应用程序开发中的采用速度非常快。
不管你是不是 Android 新手,你都应该把 Kotlin 作为你的首选,不要逆水行舟 Google 在 Google I/O 2019上宣布了这种做法。有了Kotlin,你将可以使用所有现代语言的特性包括协程的强大功能和使用为 Android 生态系统开发的现代库。
学习资料 :
- Kotlin 文档
Jetpack Compose
Jetpack Compose 是 Android 推荐的用于构建原生 UI 的现代工具包。它简化并加速了 Android 上的 UI 开发。
Jetpack Compose 是 Android Jetpack 库的一部分。使用 Kotlin 编程语言轻松创建原生用户界面。此外,它还与其他 Android Jetpack 库,例如 LiveData 和 ViewModel集成,以便更轻松地构建响应式和可维护的 Android 应用程序。
一些主要功能包括:
- 声明式用户界面;
- 可定制的小部件;
- 易于与现有代码集成;
- 实时预览;
- 改进的性能。
学习资料:
- Jetpack Compose 文档
- Jetpack Compose 路线图
- Jetpack Compose 课程
- Compose 到 Kotlin 兼容性映射
Material Design
Material Design 是一个适应性强的指南、组件和工具系统。支持用户界面设计的最佳实践。在开源代码的支持下,Material Design 简化了设计人员和开发人员之间的协作,并帮助团队快速构建精美的产品。
学习资料:
- Material Design 官网
Clean Arch
它基于通过将软件划分为层来实现职责分离。
特征:
- 独立于框架
- 可测试
- 独立于用户界面
- 独立于数据库
- 独立于任何外部机构
- 依赖规则
Android 中的 Clean Arch
学习资料:
- 作者博客
Presentation Layer 的架构模式
架构模式是一种更高级别的策略。旨在帮助设计软件架构,其特点是在可重用框架内为常见架构问题提供解决方案。架构模式类似于设计模式,但它们的规模更大并且解决更多的全局问题。例如系统的整体结构、组件之间的关系以及数据的管理方式。
- MVC
刚接触编程,相信第一个遇到的框架就是 MVC ,不管你经意还是不经意写出来的 Android 程序他就是 MVC 框架,只不过是 MVC 框架的某一个变种(最混乱的那种)。Android 系统本身就根据 MVC 建造的。
-
MVP
MVP 全称:Model-View-Presenter ;MVP 是从经典的模式 MVC 演变而来,它们的基本思想有相通的地方:Controller/Presenter 负责逻辑的处理,Model 提供数据,View 负责显示。
-
MVVM
MVVM 是 Model-View-ViewModel 的简写。它本质上就是 MVC 的改进版。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。
MVVM 模式中,一个 ViewModel 和一个 View 匹配,它没有 MVP 中的 IView 接口,而是完全的和 View 绑定,所有 View 中的修改变化,都会自动更新到 ViewModel 中,同时 ViewModel 的任何变化也会自动同步到 View 上显示。
在 Android 中 DataBinding 帮助我们实现 MVVM,在 XML 进行数据绑定,增加了 XML 的重量,不再像以前那样仅仅是布局,均衡了各部分的职责。
-
MVI
MVI 与 MVVM 很相似,其借鉴了前端框架的思想,更加强调数据的单向流动和唯一数据源,架构图如下所示
不管是 MVC、MVP、MVVM 还是 MVI,主要就是 View 和 Model 之间的交互关系不同
- MVI 的核心是 数据的单向流动
- MVI 使用kotlin flow可以很方便的实现 响应式编程
- MVI 整个 View 只依赖一个 State 刷新,这个 State 就是 唯一可信数据源
学习资料:
- Android 架构指南
依赖注入
依赖注入是一种软件设计模式,它允许客户端从外部源获取其依赖项,而不是自己创建它们。它是一种用于在对象及其依赖项之间实现控制反转 (IoC) 的技术。
学习资料:
- Hilt ❤️
- Dagger
模块化
模块化是一种软件设计技术,它允许您将应用程序划分为独立的模块,每个模块都有自己的功能和责任。
模块化的好处:
- 可重用性
- 严格的可见性控制
- 可定制的交付
- 可扩展性
- 易于维护
- 易于测试
- 架构改进
- 改善协作
- 构建时间
网络
- OkHttp
- Retrofit