日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Jetpack 】

發布時間:2025/3/13 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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 將數據作為自定義數據類型的實例進行存儲。此實現要求您使用協議緩沖區來定義架構,但可以確保類型安全??梢源嫒∫恍碗s的對象,適合保存一些重要對象的保存。

參考原文鏈接: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 】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。