1、在Jetpack 的官方文档中定义如下:

Jetpack 是一套组件库,可帮助开发人员遵循最佳实践,减少样板代码并编写可在 Android 版本和设备上一致工作的代码,以便开发人员可以专注于他们关心的代码。

根据定义可以提炼出两个核心点:

1.1 它是一套组件库。(说明它是由许多个不同的组件库构成,并不是一个单一的组件库)

1.2 使用 Jetpack 可以帮助我们在不同的 Android 版本和不同的设备上,实现行为一致的工作代码。(说明 Jetpack 可以轻松的处理由 Android 版本不一致和设备不同产生的差异性和兼容性问题)

2、OKHttp网络库封装

  • 详细见《第一行代码》P319

  • NMv2.x : 接口请求代码

  • NXCUV1.01.xx : 接口请求代码,SimpleNet

  • IDNVATV1.03.xx :pct/loder/SimpleNet

3、Room数据库注入

3.1、Room是Google为了简化旧式的SQLite操作专门提供的

  • 拥有SQLite的所有操作功能

  • 使用简单(类似于Retrofit库),通过注解的方式实现相关功能。编译时自动生成实现类impl。

  • LiveData、LifeCycle、Paging天然融合支持。

使用Room数据库缓存网络请求数据。

3.2、Room的三大组件

Room使用很简单的,这里有三个基本的使用注解,@Database、@Entity、@Dao。分别对于数据库、表、表的具体操作(增删改查)。

  • Entity : 表示数据库内的表

每一张表都可以有一个对应的JavaBean类。在类的前一行加上注释 @Entity(),这就用Room形成了我们要创建的一个表。
一般类名会默认成为表名,如果想更改表名可以在@Entity()注释里指定tableName = “自定义的表名”。

  • DAO :包含用于访问数据库的方法

用Entity创建好表之后,就可以为其定义一些增删改查的操作了。这将在DAO里实现。

  • Database : 包含数据库持有者,并充当与应用程序持久化的、关系型的数据的底层连接的主要访问点。

4、缓存方案

4.1、电脑的缓存文件分为三级:

一级缓存:基本上都是内置在cpu的内部和cpu一个速度进行运行,能有效的提高cpu的工作效率。一级缓存越多,cpu的工作效率越高,是cpu的内部结构限制了一级缓存的容量大小,一级缓存的容量都很小。

二级缓存:主要作用是为了协调一级缓存与内存之间的工作效率。cpu首先用的是一级缓存,当cpu的速度慢慢提升之后,一级缓存就不够cpu的使用了,这就需要用到二级缓存。

当然二级缓存会比一级缓存的效率低很多。一级缓存和二级缓存主要是为cpu处理数据的时候临时进行数据交换的时候使用的

三级缓存:在读取二级缓存不够用的时候而设计的一种缓存手段,在有三级缓存的cpu中,只有大约百分之五的数据需要在内存中调取使用。这能大大提高cpu的工作效率,从而保证cpu能够高速工作。

核心的类是LruCache (此类在android-support-v4的包中提供) 。这个类非常适合用来缓存图片,

它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少

使用的对象在缓存值达到预设定值之前从内存中移除。

4.2、DataStore

Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和流程(Flow)以异步、一致的事务方式存储数据。

DataStore 提供两种不同的实现:Preferences DataStore 和 Proto DataStore。

Preferences DataStore 以键值对的形式存储在本地和 SharedPreferences 类似,此实现不需要预定义的架构,也不确保类型安全。存取一些简单的字段等。

Proto DataStore 将数据作为自定义数据类型的实例进行存储。此实现要求您使用协议缓冲区来定义架构,但可以确保类型安全。可以存取一些复杂的对象,适合保存一些重要对象的保存。

参考原文链接:https://blog.csdn.net/sunny2come/article/details/120363902?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-8-120363902.pc_agg_new_rank&utm_term=jetpack+%E7%BC%93%E5%AD%98%E6%95%B0%E6%8D%AE&spm=1000.2123.3001.4430

5、Koltin协程在网络层应用

5.1 协程的定义

协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。

image.png

协程 - 也叫微线程,是一种新的多任务并发的操作手段(也不是很新,概念早就有了)

特征:协程是运行在单线程中的并发程序

优点:省去了传统 Thread 多线程并发机制中切换线程时带来的线程上下文切换、线程状态切换、Thread 初始化上的性能损耗,能大幅度唐提高并发性能

漫画版概念解释:漫画:什么是协程?

简单理解:在单线程上由程序员自己调度运行的并行计算

5.2 Kotlin中协程的概念

官方文档描述:

协程通过将复杂性放入库来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底层库会为我们解决其异步性。该库可以将用户代码的相关部分包装为回调、订阅相关事件、在不同线程(甚至不同机器)上调度执行,而代码则保持如同顺序执行一样简单。
总结下,协程是跑在线程上的,一个线程可以同时跑多个协程,每一个协程则代表一个耗时任务,我们手动控制多个协程之间的运行、切换,决定谁什么时候挂起,什么时候运行,什么时候唤醒,而不是 Thread 那样交给系统内核来操作去竞争 CPU 时间片

可用Kotlin协程做网络请求

参考:

https://blog.csdn.net/weixin_38858037/article/details/101860937?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8.pc_relevant_paycolumn_v3&utm_relevant_index=10

【Jetpack 】相关推荐

  1. 【Jetpack】WorkManager

    [JetPack]WorkManager 转载自享学课堂-derry,非常感谢derry的讲解 WorkManager有什么用: 一:确保重要的后台任务,一定会被执行,后台任务(例如:非及时性的 (请 ...

  2. 【Jetpack】学穿:LiveData →

    作者:coder_pig 0x1.引言 在开始这篇文章前,我就遇到了第一个关于LiveData的问题:该怎么翻译这个词呢? 活的数据?→ 有点奇怪,难不成还有死的数据? 可观察数据?→ 感觉跟Obse ...

  3. 【JetPack】kotlin-android-extensions 插件 ( 视图绑定简单用法 )

    文章目录 一.动画效果添加对象 二.kotlin-android-extensions 插件使用步骤 1.配置 kotlin-android-extensions 插件 2.导入视图 3.完整布局文件 ...

  4. 【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )

    文章目录 I . 数据绑定 简介 II . 数据绑定 使用前提 ( 环境支持 ) III . 数据绑定 使用流程 一 : 启用数据绑定 IV . 数据绑定 使用流程 二 : 定义数据类 V . 数据绑 ...

  5. 【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )

    文章目录 I . 视图绑定 ( ViewBinding ) 界面的两种方式 II . Activity 界面中 应用 视图绑定 ( ViewBinding ) III . Dialog 对话框界面中 ...

  6. 【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )

    文章目录 I . 为现有项目配置 视图绑定 ( ViewBinding ) 应用 II . 视图绑定 ( ViewBinding ) 定制 III . 视图绑定 ( ViewBinding ) 对于正 ...

  7. 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

    文章目录 I . 视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV . 定制视图绑定 ( 启用视 ...

  8. 【JetPack+Retrofit+Rxjava】获取Bing每日一图并显示ViewModel+LiveData+DataBinding+MVVM 补充笔记

    扉: 原文来自:Android官方架构组件ViewModel+LiveData+DataBinding架构属于自己的MVVM 很喜欢作者的思路,但是使用Kotlin需要配置的东西好多并且很多细节要重写 ...

  9. Android开源框架【集合】

    Android开源框架[集合] 图解一览 Square& JakeWharton 框架名称 功能描述 Picasso 一个强大的图片下载与缓存的库 OkHttp Square出品,一个Http ...

最新文章

  1. C语言格式控制符和转义字符
  2. servlet Context (在servlet 中设定context)
  3. HTML5之Javascript多线程
  4. python话雷达图-Python 详解雷达图/蛛网图
  5. 程序员8大终极杀器,你get了几个?
  6. jQuery的三种bind/One/Live/On事件绑定使用方法
  7. Java接口中的成员变量为什么必须是static ?
  8. Java LinkedHashMap clear()方法与示例
  9. 学术科普 | 漫威电影中的智能大脑
  10. Quick BI功能篇之(一):20分钟入门
  11. 你看得上瘾的斗鱼,首次开源了自家项目
  12. 数字图像处理——图像锐化
  13. 基于C语言的移位密码和仿射密码
  14. 没有超级英雄?自己做一个java漫威英雄手办商城系统
  15. <statement> or DELIMITER expected, got ‘id‘
  16. SAP SD 销售订单收入和成本对应科目的逻辑
  17. 用1、2、3、4、5、6、7、8、9这9个数字,填入□ 中使等式□□×□□□ = □□□□ 成立,每个数字恰好只用一次。
  18. NSCD--DNS缓存服务
  19. 国产DSP,32位双核CPU,pin2pin替代TMS320F280049C,高频400MHz
  20. 我用Python爬取了4000+股票数据,并用plotly绘制了树状热力图(treemap)

热门文章

  1. python args函数_Python函数参数*args和**kwargs
  2. java关于23种设计模式的有趣见解
  3. BZOJ-1003-物流运输trans-ZJOI2006-SPFA+DP
  4. Ubuntu下切换Python版本
  5. access后台链接mysql_ASP.NET连接 Access数据库的几种方法
  6. python queue get 方法_Python Queue模块详解
  7. vue axios 跨域_SpringBoot+Vue从零开始搭建系统(三)前后端整合二
  8. qt 判断ctrl键被按下_惊雷!证监会公告,又一家千亿白马股被按下“暂停键”...
  9. 2020-12-17 Latex代码公式中如何设定多个对齐点( Multiple aligning symbols )
  10. layui和jquery冲突:Syntax error, unrecognized expression: +