Android Jetpack
对于任何一个产品来说,我们开发中都会面对哪些问题?如:产品交互、用户体验、代码结构、数据获取、数据存储、网络优化、任务调度等等,虽然在现在的阶段这些问题已经有了很好的解决和优化,也有很多大神的开源组件方便开发者去使用,Android Jetpack就是Google给出的一个官方的处理方法(当然知识处理其中基本问题),Android Jetpack组件的优势:
- 轻松管理应用程序的生命周期
- 构建可观察的数据对象,以便在基础数据库更改时通知视图
- 存储在应用程序轮换中未销毁的UI相关数据,在界面重建后恢复数据
- 轻松的实现SQLite数据库
- 系统自动调度后台任务的执行,优化使用性能
Android Jetpack组件推荐的使用项目架构
上面架构组件的功能如下:
- Activity和Fragment负责产品与用户的交互
- ViewModel作为数据的存储和驱动
- Resposity负责调度数据的获取
- Room储存本地序列化的数据
- Retrofit获取远程数据的数据
按照谷歌推荐的项目架构配合Android Jatpack组件的使用,将会有不一样的开发体验,下面分析每个组件如何帮我们处理这些问题的。
Android Jetpack组件介绍
应用程序的开发和产品与用户的交互都是从UI开始的,用户可见的和开发者操作的结果都显示在界面上,所以界面的操作在卡法中占据很重要的地位,也是影响我们开发和使用体验的重要部分,常见的问题如:UI的声明周期处理、数据的显示和刷新、注册监听的释放等, Jetpack架构组件就可以帮我们规范化的解决他们。
Lifecycler
Lifecycler是一个生命周期感知组件,执行操作以响应另一个组件(例如活动和片段)的生命周期状态的更改,简单来说它可以监听活动组件声明周期的变化,在每个声明周期执行相应的方法,不同于以往想在生命周期中执行相应的方法需要设置接口,然后在声明周期中回调接口,这样会造成代码的耦合,也会引发声明周期的问题;
Lifecycler的优点
- Lifecycler实现了执行的逻辑和活动的分离,代码解耦并且增加了代码的额可读性
- Lifecycler在活动结束时自定移除监听,避免了声明周期的问题
Lifecycler的实现主要使用两个主要枚举来跟踪其关联组件的生命周期状态
- Event:从框架和Lifecycle类派发的生命周期事件。 这些事件映射到活动和片段中的回调事件。
- State:由Lifecycle对象跟踪的组件的当前状态。
Lifecycler的原理
Lifecycler为每个活动组件添加了一个没有界面的Fragment,利用Fragment周期会根据活动声明周期变化的特性实现的特性,从而实现声明周期的感知,然后根据注解的Event查找执行相应的方法