优点

  1. JetPack采用最新的设计方法构建,具有向后兼容性,可以减少应用的崩溃和内存泄露;
  2. 可以管理各种繁琐的Activity(比如后台任务、导航和生命周期管理),以便您可以专注于打造出色的应用;
  3. JetPack的各种库可在各种Android版本和设备中以一致的方式运作,帮助你降低项目的复杂性。在很大程度上提升了开发效率。

官网介绍


JetPack就是AndroidX,官网给的分类有四种。分别是Architecture(架构)、Foundation(基础)、Behavior(行为)、UI(界面)
我们着重介绍下架构,本文就熟悉常用的几种架构

元素 介绍
LifeCycle 组件内部感知自己的生命周期
Navigation 管理Fragment
ViewModel 视图与数据之间的桥梁
LiveData 实时更新数据
Room 数据库
WorkManager 智能后台任务
DataBinding xml中数据绑定
Paging 分页加载

https://developer.android.com/jetpack
https://developer.android.google.cn/jetpack(中文网)

简单入坑

传统的MVC架构

传统的MVC,一般是一个View对应一个Activity,这样一来model数据逻辑和Controller控制器代码都在Activity里。导致Activity代码过多,缺点就很明显不利于维护而且耦合度大。

ViewModel

ViewModel是单独管理数据,将View里的数据独立出来,使控制器更加简单。负责管理数据,防止数据丢失(比如切换系统语言,旋转屏幕)。还可以和LiveData配合,监听数据来改变UI 的数据。这时候ViewModel只是将数据独立出来,刷新UI还是在控制器的references里进行,下面LiveData的出现就是解决这一问题的。
JetPack(二)ViewModel小试牛刀

LiveData

观察者模式自动刷新数据,ViewModel采用LiveData来管理数据。ViewModel结合LiveData一起就可以直接观察数据的变化,如果数据变化就刷新UI。这样就架空了控制器和UI之间的联系,将数据刷新的功能直接赋能给ViewModel。
JetPack(三)LiveData利刃出鞘

DataBinding

当然在数据绑定中,我们发现有控制器里有很多重复的findViewById(当然用黄油刀可以改善)。这里JetPack也帮我们解决了这个问题,DataBinding的诞生就是实现UI界面直接绑定数据,然后在ViewModel中实现数据的逻辑,控制器进行控制。
JetPack(四)DataBinding大法好

Navigation

Navigation的作用想当如路由route,我们可以在主Activity的UI布局中添加fragment的子UI布局,然后子fragment之间的跳转和数据传递都可以利用Navigation完成。Navigation的使用是创建一个navigation布局的xml实现可拖动效果,然后设置对应的action等等属性。

个人心得

因为我自己是从传统架构MVC一直走到MVVM的,再到现在的JetPack,所以没少走弯路。JetPack肯定能规范开发,并且避免一些不必要的问题,比如生命周期的控制、减少应用崩溃和内存泄露。但是万事都有利弊,JetPack把代码脱的一件都不剩,这样不利于阅读代码和理清业务逻辑。所以对于Android初学者和小白,不建议一上来就JetPack,万丈高楼平地起。我们知道了传统架构存在的问题,有了一定的经验积累自然就能很快的接收和理解JetPack的设计思想。

JetPack(一) JetPack入坑指南——不会吧不会吧,不会还有人不会用JetPack吧相关推荐

  1. 发布开源框架到CocoaPods入坑指南

    个人原文博客地址: 发布开源框架到CocoaPods入坑指南 在开发过程中一定会用到一些第三方框架, 只要安装了CocoaPods, 然后通过pod install命令, 就可以集成框架到项目中了 可 ...

  2. python这个软件学会能做什么工作-学会Python真的有高收入?盯,请查收这份入坑指南...

    学会Python真的有高收入?盯,请查收这份入坑指南 2018-10-10 20:51:00 567点赞 6312收藏 186评论 小编注:想获得更多专属福利吗?金币加成.尊享众测.专属勋章.达人福利 ...

  3. python web-python web入坑指南

    原标题:python web入坑指南 Invest regularly in your knowledge portfolio. Make learning a habit. 自学python web ...

  4. 旧android 4 平板,如今的安卓平板值不值得买:小米平板4入坑指南

    如今的安卓平板值不值得买:小米平板4入坑指南 2018-08-04 07:30:40 29点赞 25收藏 42评论 购买理由 三年前入坑小米平板2,在当年的安卓平板环境里,小米平板还是一款十分值得购买 ...

  5. api 微信内置浏览器js_多端开发框架uni-app入坑指南,一套代码适用微信、头条等小程序...

    前言 hello 小伙伴们,现在我已经正式入坑 uni-app 了.uni-app 已经发布好几个月了,期间也是踩坑无数,但是官方秉承着不抛弃不放弃的精神,积极解决开发者的各种简单的.复杂的问题,在此 ...

  6. 微信小程序继续入坑指南

    微信小程序继续入坑指南 wxml 类似于html 感觉和ejs灰常的相似 数据绑定 js Page({data: {message: "hello world"} }) wxml ...

  7. Rust 入坑指南:鳞次栉比 | CSDN 博文精选

    作者 | Jackyzhe 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉 ...

  8. uniapp调用c语言方法,uni-app 入坑指南-web开发

    编辑推荐: 本文重点介绍了 uni-app 入坑指南,方便大家更好的了解 uni-app 本篇只讲述 uni-app,不与其他类似框架进行对比 本文来自于博客园,由火龙果软件Alice编辑推荐. 什么 ...

  9. 小白深度学习入坑指南

    小白深度学习入坑指南 小白深度学习入坑指南 写博客的初衷适合的人群 理论篇 说明 数学 CV ML DL 优化 实践篇 linux python 深度学习框架 框架学习 硬件配置 软件环境配置 常见的 ...

  10. Air202入坑指南4---UART2(简单使用)

    Air202入坑指南4-UART2 下面的代码就是这个串口的简单使用的代码,可见波特率是115200,8N1.其他就是定义了一个信号量UART2_RECEIVE,这个信号量作为接收到信号之后串口怎么处 ...

最新文章

  1. 两位院士同时受聘,山东大学再添强援
  2. 全球Top1000计算机科学家h指数发布,数据院院长Philip S. Yu上榜(附完整名单)...
  3. 方向:AI研究方向历史性转变!从机器学习到人类研究
  4. UITableView 滑动删除
  5. 如何设计日志系统_架构 - 如何设计一个百亿级日志系统
  6. java中怎么判断相等_Java中判断相等 (== 与 .equals())
  7. HTML+CSS+JS实现 ❤️swiper倾斜图片特效❤️
  8. 值类型和引用类型及其区别!
  9. Comet服务器推送与SignalR
  10. java锁的对象引用
  11. 亚马逊出的平板电脑_加量不加价,亚马逊推出新款 Fire 7 平板电脑
  12. 从输入URL到页面加载的全过程
  13. ffmpeg 下载网上m3u8的视频文件
  14. libtorch-gpu推理时占用CPU 100%问题解决
  15. php提取pdf中的文字,如何提取pdf中的文字内容 如何从pdf中提取文字
  16. 逻辑分析题目:“给你一个9升的水桶和一个4升的水桶,在河里取6升水”
  17. 多屏下dde-dock切换速度太慢
  18. rust编程 UI框架 -druid -Selector选择器
  19. java实现word转换pdf并批量生成水印
  20. 学习分享:RNN(持续更新)

热门文章

  1. 慧创脑科学第八期直播精彩回顾丨fNIRS与神经退行性疾病
  2. 无线网卡无法获取dhcp服务器,无线网卡无法获得IP地址
  3. 微信小程序学生选课系统app设计
  4. MySQL如何制作报表_(MySQLToSQL) 生成报表 - SQL Server | Microsoft Docs
  5. 前端学习———用css实现顶部导航条及下拉框
  6. Elastic Search 中文拼音搜索补全实战
  7. 关于小米无人机的未来
  8. HDLC、ppp、MGRE实验(1.1)
  9. 别再小看硬件防火墙了!一些关于防火墙的小知识。
  10. 关于ArcSDE版本压缩(Compress)的再研究