【Jetpack 】
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 】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JetPack——网络库封装
- 下一篇: 共轭梯度法求解线性方程组