前言

之前我有个学弟,应届毕业生,秋招拿了一些 offer,这几天非常纠结。

offer 要考虑的因素太多了,盲目地搜索了几天,网上各种各样的声音都有,收获不多。为此咨询我一下,面对这种情况应该如何选择,我相信这个情况不仅仅是我学弟一人有,所以写了这篇文章,是我选择简历是一些新的,希望能帮到大家(一个案例哦!)

JetPack里的组件

上图就是JetPack中包含的组件列表,每个组件都是相对独立的,可以被单独使用和构建。其中像被介绍的最多,也是最常被使用的LiveData, ViewModel, Room, Navigation, WorkManager之类的都发布了正式版,而CameraX, Compose之类的还处在Alpha版本,未正式发布,官方并不建议在生产环境中使用。

然后说下,JetPack所有的组件都是基于AndroidX构建的,如果想在项目中使用JetPack需要先将项目中对Support Lib的依赖全部换成AndroidX

Android目前已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了MVP和MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O 2018大会上推出的Android Jetpack有望解决以上的问题。

三、Android Jetpack简介

Jetpack并不是一个框架或者组件,它是一套库、工具和指南的集合,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂任务,以便将精力集中放在所需的代码上。
Android Jetpack中的很多组件并不都是新开发的,而是很早就有了,比如在Goole I/O 2017大会时推出了 Android Architecture Component(AAC),它包括了LifeCycle、LiveData、ViewModel、Room。在Goole I/O 2018大会上,
用AndroidX替代了Android Support Library,并在Android Architecture Component的基础上发布了Android Jetpack,AndroidX也是属于Android Jetpack。

Jetpack主要特性有以下三点:

1.加速开发
组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率。

2.消除样板代码
Android Jetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理)。

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

四、Android Jetpack分类

下图是Jetpack的分类。

谷歌仍旧不断的完善Android Jetpack,截至到2019年8月已经有很多新加的组件并没有显示在上图中,比如CameraX等。Android Jetpack分类有4种,分别是Architecture、Foundationy、Behavior、UI,下面分别介绍下。

1. Architecture(架构组件)

Architecture指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,本系列也是围绕着架构组件进行讲解。

DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用。

Lifecycle:用于管理Activity和Fragment的生命周期,可帮助开发者生成更易于维护的轻量级代码。

LiveData: 在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规observable不同,LiveData是生命周期感知的。
Navigation:处理应用内导航。

Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。

Room:友好、流畅的访问SQLite数据库。它在SQLite的基础上提供了一个抽象层,允许更强大的数据库访问。

ViewModel: 以生命周期的方式管理界面相关的数据,通常和DataBinding配合使用,为开发者实现MVVM架构提供了强有力的支持。

WorkManager: 管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。

官方推荐的Android应用架构如下图所示。

这些架构组件既可以配合使用,也可以单独使用,这里建议还是尽量按照官方推荐的来。

2. Foundationy(基础组件)

基础组件提供横向功能,例如向后兼容性、测试、安全、Kotlin 语言支持,并包括多个多个平台开发的组件。

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

3. Behavior(行为组件)

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

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

4. UI(界面组件)

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

五、在应用中引入Jetpack相关组件

在项目build.gradle中添加google() 库,如下所示。

  allprojects {repositories {google()jcenter()}}

如果想引入Room,可以在模块build.gradle中这么写:

    implementation   "android.arch.persistence.room:runtime:1.1.1"annotationProcessor   "android.arch.persistence.room:compiler:1.1.1 "androidTestImplementation  "android.arch.persistence.room:testing:1.1.1"

总结

这篇文章内部不多,旨在让大家了解Android Jetpack是什么,包括什么,如何引用,从下一篇开始,就开始学习Android Jetpack的架构组件。

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

最后

下面是辛苦给大家整理的学习路线,有需要的可以点击这里免费获取

%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)
[外链图片转存中…(img-C9mBMvy4-1610199616708)]

apk开发教程!安卓资深架构师分享学习经验及总结,技术详细介绍相关推荐

  1. 可视化安卓开发工具!安卓资深架构师分享学习经验及总结,offer拿到手软

    前言 成为一个专业人士是所有程序员的目标,近几年的工作经历,近距离观察了很多大公司的大佬.有幸与其中的一部分一起工作.在此分享大牛程序员的行为风格以及我自己的所思所想,希望对大家有所帮助. 特此声明: ...

  2. 看下资深架构师平时需要解决的问题,对比你离资深架构师还有多少距离——再论技术架构的升级之路...

    我目前奋力在技术架构的路上不断前行,虽然中间遇到很多障碍,目前自己感觉,勉强能达到架构师的级别,所以自己感觉还有底气写这篇文章. 之前,我写过篇博文,架构师更多的是和人打交道,说说我见到和听说到的架构 ...

  3. kotlin教程!Android架构师必备框架技能核心笔记,详细的Android学习指南

    雪上加霜 本人一名Android程序员,今年29岁了.大厂小厂都呆过,现在在腾讯工作!明明工作顺利,家庭和睦儿女成全,但是总是会感觉到,一股无形的压力,推着我走!作为一名程序员我最怕的不是996,也是 ...

  4. 轻时代来临 资深架构师分享手游五大设计要点

    本文经作者董锡军授权发布,转载请注明作者及来源! 第一节:轻网游时代已经来了 "世界频现三消,上帝也爱消除",腾讯广告做得不多,但这次做了,而且还涵盖央视.广告充满了创意,很好的契 ...

  5. BAT架构师分享之:大型网站技术架构

    早期的网站为了节省成本一般会设计成集中式系统,应用程序.数据库等都部署在一台服务器上. 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分.服务拆分.数据拆分.应用解耦)**,向分布式系统 ...

  6. kafka源码_十年资深架构师多年工作经验结晶:Kafka源码解析与实战

    前言 本篇系统介绍Kafka的实现原理和应用方法,并介绍Kafka的运维工具.客户端编程方法和第三方集成方式,深入浅出.图文并茂.分析透彻. 本篇将从初学者的角度出发,循序渐进地讲解Kafka内部的实 ...

  7. 分享Android资深架构师的成长之路,建议收藏

    背景 经常有网友在知乎问答提两个问题:"现在学习移动开发还有前景吗?""开发还有什么可以研究的?".网友回复:"现在还学移动开发?如同49年加入国军! ...

  8. 资深架构师十几年的架构干货经验总结分享!

    图片来源:pexels.com 1 架构师承担什么样的责任 记录片<黑猩猩的守护者>中珍妮·古道尔博士说过:「唯有了解,才會關心,唯有關心,才會採取行動,唯有行動,生命才有希望」,套用到架 ...

  9. python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议

    一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...

最新文章

  1. Cocoa的MVC架构分析
  2. Android自定义ScrollView
  3. 28条有关人工智能的名言,靠不靠谱你来看!
  4. 纳米颗粒C语言数值模拟_J.Hazard. Mater.当“金属纳米酶”邂逅“重金属离子”:机遇与挑战...
  5. 数据科学家 数据工程师_发展数据科学家和工程师
  6. Visual Studio 2010旗舰版正式版序列号 - civilman的专栏 - 博客频道 - CSDN.NET
  7. BlockingQueue接口分析
  8. java 链表_java数据结构与算法之顺序表与链表深入分析(一)
  9. [.NET] EF LINQ 按时间对数据分类汇总
  10. 各个ip地址库对比与java实现
  11. UVA - 10099 The Tourist Guide kruskal算法
  12. OpenLayers3基础教程——OL3基本概念
  13. 诺基亚NBU备份文件名片导出程序 vCard助手
  14. C# MVC 微信支付教程系列之公众号支付
  15. 龙之谷服务器仓库在哪个位置,全区全服版本更新至Ver.190
  16. 计算机软考高级职称论文,关于计算机软考,这里可以解决你所有的问题
  17. HTTP状态码及说明大全
  18. 转:成功学专家卡耐基所言
  19. 下雪 -- Free .Net Snow
  20. 无限宝客户端服务器版本号不匹配,无限宝客户端安装问题

热门文章

  1. Spring Boot 2.0 配置图文教程第 2 章 Spring Boot 配置## 书信息 demo.book.name=[Spring Boot 2.x Core Action] demo.b
  2. ORA-00933: SQL命令未正确结束 解决办法
  3. 2020CCPC绵阳站 D-Defuse the Bombs (二分答案)
  4. tkinter:Toplevel
  5. UG NX1980一键安装正式版+安装说明(安装简单)
  6. LBP特征学习及实现
  7. Matlab绘制多个折线图的方法
  8. 计算机选择题7,计算机选择题7.doc
  9. windows 98 设置 TEMP 环境变量时的一个有趣现象
  10. string头文件函数