Jetpack(一)—— 简介

jetpack [ˈdʒetpæk] 喷气发动机组件

由于之前Google并没有推出关于Android应用程序架构设计的标准,所以只要能够实现功能,代码怎么编写都可以。

为了追求更高的代码质量,就有第三方的社区和开发者将一些更加高级的项目架构引入到了Android平台上,如MVPMVVM等。使用这些架构开发出来的应用程序,在代码质量、可读性、易维护性等方面都有着更加出色的表现,于是这些架构渐渐成为了主流。

但是,这些方案都普遍存在以下两个问题:

  • Google官方解决方案
    一般有经验的工程师,都会从自己做过的项目中,总结出一套自己的架构设计,并且将其应用到生产环境中,不过或多或少的都会存在一定的问题,因此需要有人一直维护和持续优化项目的架构。并且随着项目需求复杂度的增加,也面临重新设计架构的工作。
  • 无法辨别最佳的解决方案
    由于每个工程师的设计思路都不相同,因此,也无法确认到底谁的架构是最佳方案,最终也导致了开发出来的应用参差不齐。

Google意识到了这个情况后,在2017年,推出了一个官方的架构组件库—— Architecture Components,旨在帮助开发者编写出更加符合高质量代码规范、更具有架构设计的应用程序。

architecture [ˈɑːrkɪtektʃər] 建筑设计 components [kəmˈpoʊnənts] 部件;组件;成分;分力

2018年,Google又推出了一个全新的开发组件工具集Jetpack,并将 Architecture Components作为Jetpack的一部分纳入其中。当然,Jetpack并没有就此定版,2019年又有许多新的组件被加入Jetpack当中,未来的Jetpack还会不断地继续扩充。

Jetpack是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码,并简化我们的开发过程。Jetpack中的组件有一个特点,它们大部分不依赖于任何Android系统版本,这意味着这些组件通常是定义在AndroidX库当中的,并且拥有非常好的向下兼容性。

Jetpack的优势:

  • 解决了Android架构问题。让开发者能够使用标准的架构组件,而不用去纠结架构的方案设计,可以将更多的精力放在自己的业务代码上;
  • 提升了代码质量。Jetpack拥有基于生命周期感知的能力,可以减少NPE(NullPointerException, 空指针异常)崩溃、内存泄漏。为我们开发出健壮且流畅的程序提供强力保障;
  • 提升了开发效率。Jetpack可以减少样板代码,有助于提升Android开发的效率。这些组件可以单独使用,也可以组合使用,并且在不同Android版本中运行一致;

目前Android官方最为推荐的项目架构就是MVVM,因而Jetpack中的许多架构组件是专门为MVVM架构量身打造的。

1 JetpackAndroidX

Jetpack是各种组件库的统称,AndroidX是这些组件的统一包名。

AndroidX对原始Android Support Library进行了重大改进,后者现在已不再维护。androidx软件包完全取代了support包,不仅提供同等的功能,而且提供了新的库。Jetpack组件中也是完全使用androidx开头的包名。

Support Library一样,androidx命名空间中的库与Android平台分开提供,并向后兼容各个Android版本。

androidX中的所有软件包都使用一致的命名空间,以字符串androidx开头。Support Library软件包已映射到对应的androidx.*软件包。

Support Library不同,androidx软件包会单独维护和更新。从版本1.0.0开始,androidx软件包使用严格的语义版本控制。可以单独更新项目中的各个AndroidX库。

版本28.0.0Support Library的最后一个版本。以后将不再发布android.support库版本。所有新功能都将在androidx命名空间中开发。

2 Jetpack的“全家福”

Jetpack(一)—— 简介_第1张图片

Jetpack是一个丰富的组件库,它的组件库按类别分为4类,分别是架构(Architecture)、界面(UI)、行为(behavior)和基础(foundation)。 像通知、权限、Fragment都属于Jetpack。由此可见,Jetpack并不全是些新东西,只要是能够帮助开发者更好更方便地构建应用程序的组件,Google都将其纳入了Jetpack

foundation [faʊnˈdeɪʃn] 地基,基础

每个组件都可以单独使用,也可以配合在一起使用。每个组件都给用户提供了一个标准,能够帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者能够集中精力编写重要的业务代码。

2.1 Architecture(架构组件)可设计稳健、可测试且易维护的应用

  • Data Binding:是一种支持库,借助该库,可以以声明方式将可观察数据绑定到界面元素;
  • Lifecycles:管理ActivityFragment的生命周期, 能够帮助开发者轻松的应对Activity/Fragment的生命周期变化问题,帮助开发者生成更易于维护的轻量级代码;
  • LiveData:在底层数据库更改时通知视图,是可观察的数据持有者类。与常规的可观察对象不同,LiveData具有生命周期感知功能(例如ActivityFragmentService的生命周期);
  • Navigation:处理应用内导航所需的一切;
  • Paging:逐步从数据源按需加载信息,帮助开发者一次加载和显示小块数据。 按需加载部分数据可减少网络带宽和系统资源的使用;
  • Room:流畅地访问SQLite数据库。SQLite上提供了一个抽象层,以在利用SQLite的全部功能的同时允许更健壮的数据库访问。
  • ViewModle:以注重生命周期的方式管理界面相关的数据。ViewModel类允许数据幸免于配置更改(例如屏幕旋转)。通常和DataBinding配合使用,为开发者实现MVVM架构提供了强有力的支持;
  • WorkManager:管理Android的后台作业,即使应用程序退出或设备重新启动,也可以轻松地调度预期将要运行的可延迟异步任务;

2.2 Foundation(基础组件)可提供横向功能,例如向后兼容性、测试和Kotlin语言支持。

  • Android KTX: 编写更简洁、惯用的Kotlin代码,是一组Kotlin扩展程序。 优化了供Kotlin使用的JetpackAndroid平台API。旨在让开发者利用Kotlin语言功能(例如扩展函数/属性、lambda、命名参数和参数默认值),以更简洁、更愉悦、更惯用的方式使用Kotlin进行Android开发。Android KTX不会向现有的Android API添加任何新功能;
  • AppCompat:帮助较低版本的Android系统进行兼容;
  • Auto:有助于开发Android Auto应用的组件。Google推出的专为汽车所设计之Android功能,旨在取代汽车制造商之原生车载系统来执行Android应用与服务并访问与存取Android手机内容;
  • Benchmark:从Android Studio中快速检测基于KotlinJava的代码;
  • Multidex:为具有多个DEX文件的应用提供支持;
  • Security:按照安全最佳做法读写加密文件和共享偏好设置;
  • Test:用于单元和运行时界面测试的Android测试框架;
  • TV:有助于开发Android TV应用的组件;
  • Wear OS by Google:有助于开发Wear应用的组件;

2.3 Behavior(行为组件)可帮助您的应用与标准Android服务(如通知、权限、分享和Google助理)相集成

  • CameraX:简化相机应用的开发工作。它提供一致且易于使用的API界面,适用于大多数Android设备,并可向后兼容至Android 5.0API级别 21);
  • DownloadManager:是一项系统服务,可处理长时间运行的HTTP下载。客户端可以请求将URI下载到特定的目标文件。下载管理器将在后台进行下载,处理HTTP交互,并在出现故障或在连接更改和系统重新启动后重试下载;
  • Media & playback:用于媒体播放和路由(包括Google Cast)的向后兼容API
  • Notifications:提供向后兼容的通知API,支持WearAuto;
  • Permissions:用于检查和请求应用权限的兼容性API
  • Preferences:创建交互式设置屏幕,建议使用AndroidX Preference Library将用户可配置设置集成至应用中;
  • Sharing:提供适合应用操作栏的共享操作;
  • Slices:是UI模板,可以通过启用全屏应用程序之外的互动来帮助用户更快地执行任务,即可以创建在应用外部显示应用数据的灵活界面。

2.4 UI(界面组件)可提供微件和辅助程序,让您的应用不仅简单易用,还能带来愉悦体验。了解有助于简化界面开发的Jetpack Compose

  • Animation & transitions:使开发者可以轻松地为两个视图层次结构之间的变化设置动画。 该框架通过随时间更改其某些属性值在运行时为视图设置动画。该框架包括用于常见效果的内置动画,并允许开发者创建自定义动画和过渡生命周期回调;
  • Emoji:使Android设备保持最新的最新emoji表情,开发者的应用程序用户无需等待Android OS更新即可获取最新的表情符号;
  • FragmentActivity的模块化组成部分;
  • Layout:定义应用中的界面结构。可以在xml中声明界面元素,也可以在运行时实例化布局元素;
  • Palette:是一个支持库,可从图像中提取突出的颜色,以帮助开发者创建视觉上引人入胜的应用程序。开发者可以使用调色板库设计布局主题,并将自定义颜色应用于应用程序中的视觉元素。

3 应用架构

Jetpack(一)—— 简介_第2张图片

参考

https://blog.csdn.net/sinat_35109311/article/details/108670581
https://zhuanlan.zhihu.com/p/334350927

你可能感兴趣的:(android,java,apache)