Android Jetpack架构组件(一) 了解JetPack组件

一 前言

Android系统推出到现在已经有十多年了,发展也越来越成熟了。但是刚开始,开发Android的框架还是比较少的,也没有什么规范,大多数代码都是自己写,后来推出了一系列的框架帮助开发者开发,比如网络请求,从开始的Volley,到后来的OkHttp,Retrofit等,再比如图片加载框架,从开始的ImageLaoder,到后来的Picasso,Fresco, Glide等,还有其它的框架,比如XUtils,Butter Knife,各种Bus系列,各种Rx系列,MVP,MVVM等,框架越来越多,有Google自己的,也有开发者写的。框架越多,可供选择的也就越多,开发者可以选择不同的框架,也就造成了做出的应用质量参差不齐,这显然不是Google想看到的。因此,Google在I/O 2018大会上推出了Jetpack,希望解决上述问题。

二 Jetpack是什么

Jetpack是一套库,工具和指南,旨在帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。

从Google I/O 2017开始,Google 开始推出Architecture Component, ORM库Room, 用户生命周期管理的ViewModel/ListData。
Google I/O 2018将Support lib 更名为androidx. 将许多Google认为是正确的方案和实践集中起来。以高效的开发Android APP。

Jetpack主要有以下几个特点:

  • 1 加速开发
    组件可以单独采用(不过这些组件是为协同工作而构建的),同时利用 Kotlin 语言功能帮助您提高工作效率。

-2 消除样板代码
Android Jetpack 可管理繁琐的 Activity(如后台任务、导航和生命周期管理),以便您可以专注于如何让自己的应用出类拔萃。

  • 3 构建高质量的强大应用
    Android Jetpack 组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。

官方介绍来看,Jetpack总体包含四个部分:分别是Architecture、Foundationy、Behavior、UI,从下图可以看到

下面分别介绍一下各个部分:

一 基础

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

  • Android KTX:优化了供Kotlin使用的Jetpack和Android平台API。帮助开发者以更简洁、更愉悦、更惯用的方式使用Kotlin进行Android开发。
  • AppCompat:帮助较低版本的Android系统进行兼容。
  • Auto: 开发Android Auto应用的组件,提供了适用于所有车辆的标准化界面和用户交互。
  • 检测:从AndroidStudio中快速检测基于Kotlin或Java的代码。
  • 多Dex处理:为具有多个Dex文件应用提供支持。
  • 安全:安全的读写加密文件和共享偏好设置。
  • 测试:用于单元和运行时界面测试的Android 测试框架。
  • TV: 构建可让用户在大屏幕上体验沉浸式内容的应用。
  • Wear OS:开发Wear应用的组件。

二 架构

  • DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用。
  • Lifecycle:用于管理Activity和Fragment的生命周期,可帮助开发者生成更易于维护的轻量级代码。
  • LiveData: 在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规observable不同,LiveData是生命周期感知的。
  • Navigation:处理应用内导航。
  • Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。
  • Room:友好、流畅的访问SQLite数据库。它在SQLite的基础上提供了一个抽象层,允许更强大的数据库访问。
  • ViewModel: 以生命周期的方式管理界面相关的数据,通常和DataBinding配合使用,为开发者实现MVVM架构提供了强有力的支持。
  • WorkManager: 管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。架构组件可帮助您设计稳健、可测试且易维护的应用。

三 行为

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

  • CameraX:帮助开发简化相机应用的开发工作。它提供一致且易于使用的界面,适用于大多数Android。 设备,并可向后兼容至Android 5.0(API 21)。
  • DownloadManager:处理长时间运行的HTTP下载的系统服务。
    媒体和播放:用于媒体播放和路由(包括Google Cast)的向后兼容API。
  • 通知:提供向后兼容的通知API,支持Wear和Auto。
  • 权限:用于检查和请求应用权限的兼容性API。
  • 偏好设置:创建交互式设置,建议使用AndroidX Preference Library库将用户可配置设置集成到应用中。
  • 共享:可以更轻松地实现友好的用户共享操作。
  • 切片:切片是一种UI模板,创建可在应用外部显示应用数据的灵活界面元素。

四 界面

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

  • Animation and Transition:该框架包含用于常见效果的内置动画,并允许开发者创建自定义动画和生命周期回调。
  • Emoji Compatibility:即便用户没有更新Android系统也可以获取最新的表情符号。
  • Fragment:组件化界面的基本单位。
  • 布局:用XML中声明UI元素或者在代码中实例化UI元素。
  • 调色板:从调色板中提取出有用的信息。

三 AndroidX支持库

Android 9.0(API 级别 28)发布后,新版支持库 AndroidX 也随之诞生,它属于 Jetpack。除了现有的支持库,AndroidX 库还包含最新的 Jetpack 组件。

当然,我们可以继续使用支持库。以往的工件(27 及更早版本,并打包为 android.support.*)在 Google Maven 中仍然可用。不过,所有新库的开发都将在 AndroidX 库中进行。也就是说,Android以后所有的新库的开发都将在AndroidX进行。

另外,Google还建议将现有的项目迁移到AndroidX,迁移方法

四 如何看待Jetpack

Jetpack,相当于Google把自己的生态重新整理了一遍,是Android的未来,Jetpack里包含的内容,未来也会是Google大力推广和维护的,对于开发者而言,可以放心地去使用。目前来说,Jetpack还不是很成熟,许多库还是alpha版本,但是总的来说,Jetpack的推广,对开发者来说,还是利大于弊的。
因此,对于我们开发者,应该尽早拥抱Jetpack,早日开发出规范,优质的应用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容