JetpackNote 是一款基於谷歌官方組件Jetpack開發的筆記項目,項目中包含了對各大組件的源碼分析、Demo使用:Navigation、Lifecycles、Paging、LiveData、ViewModel等... \n項目使用Kotlin語言進行編寫,依賴庫截止代碼編寫時爲最新版本,的幾篇源碼分析咱們分別對
Navigation
、Lifecycles
、ViewModel
、LiveData
、進行了分析,也對JetPack有了更深刻的瞭解。android
若是你對Jetpack組件有了解或者想對源碼有更深刻的瞭解,請看我以前的幾篇文章:git
1. Jetpack源碼解析---看完你就知道Navigation是什麼了?github
2. Jetpack源碼解析---Navigation爲何切換Fragment會重繪?架構
3. Jetpack源碼解析---用Lifecycles管理生命週期模塊化
4. Jetpack源碼解析—LiveData的使用及工做原理函數
5. Jetpack源碼解析---ViewModel基本使用及源碼解析工具
6. Jetpack---Paging你知道怎樣上拉加載嗎?源碼分析
下載連接:組件化
在個人Jetpack_Note系列中,對每一篇的分析都有相對應的代碼片斷及使用,我把它作成了一個APP,目前功能還不完善,代碼我也上傳到了GitHub上,參考了官方的Demo以及目前網上的一些文章,有興趣的小夥伴能夠看一下,別忘了給個Star。post
咱們先看一下效果吧:
JetpackNote 是一款基於谷歌官方組件Jetpack開發的筆記項目,項目中包含了對各大組件的源碼分析、Demo使用:Navigation、Lifecycles、Paging、LiveData、ViewModel等...項目使用Kotlin語言進行編寫,依賴庫截止代碼編寫時爲最新版本。
Jetpack是什麼想必你們對它都已經有了基本的瞭解了,官方介紹以及官方文檔:
Jetpack 是一套庫、工具和指南,可幫助開發者更輕鬆地編寫優質應用。這些組件可幫助您遵循最佳作法、讓您擺脫編寫樣板代碼的工做並簡化複雜任務,以便您將精力集中放在所需的代碼上。
Jetpack 包含與平臺 API 解除捆綁的 androidx.* 軟件包庫。這意味着,它能夠提供向後兼容性,且比 Android 平臺的更新頻率更高,以此確保您始終能夠獲取最新且最好的 Jetpack 組件版本。
說的簡單些:就是爲了記錄本身的一個學習過程....
我爲何要學習Jetpack呢?想嘗試一種新的架構方式,從我開始工做到如今,經歷過了最初的MVC、MVP[MVP-todo、The-MVP...]以及各式各樣的MVP]、MVVM、Clean等,固然我並無全部的架構都用到過,每一個項目基於本身的項目特色以及需求的迭代都會出現一套基於開發者所設計的架構模式,分層、組件化、模塊化,我相信每一種設計都是基於項目所在的場景的。即便谷歌官方推薦使用todo-mvp使用契約類....,但終究那不能適合全部項目場景。可是Jetpack,它是一套組件、工具和指導;是谷歌正式推出的一整套用來構建APP開發的組件。
在Android Developers官網上,Jetpack做爲一個Tab和Kotlin、Android Studio等同樣的地位也一樣佔據了一個模塊,Jetpack裏目前包含的內容,將來想必也是谷歌大力維護和擴展的東西,因此我打算對Jetpack深刻學習一番,其實Google Play商店中不少APP都已經開始使用Android Jetpack了,國內目前也有一些公司在使用了,雖然我不多聽到,可是就目前關於Jetpack的一個帖子上面的內容常常會有人提到。這只是我對Jetpack學習的一些我的見解和想法啊,以爲有必要的你能夠研究一下,反正到最後沒有虧吃,是吧....
1. Jetpack源碼解析---看完你就知道Navigation是什麼了?
2. Jetpack源碼解析---Navigation爲何切換Fragment會重繪?
3. Jetpack源碼解析---用Lifecycles管理生命週期
在Lifecycles模塊,我經過一個懸浮窗模擬控制檯輸出,來監聽定位權限的日誌....
在LiveData模塊,經過生命週期觀察LiveData的值,並將它打印在控制檯中,點擊 開始觀察數據 按鈕,經過演示生命週期函數,返回桌面或者進入後臺,查看LiveData對象的值。 Map轉換則演示經過轉換存儲在LiveData對象中的值,並向下傳遞轉換後的數據。在此Demo中經過點擊Map按鈕增長UserId,驅動LiveDataViewModel中的userBean來改變,最後展現在TextView中
4. Jetpack源碼解析—LiveData的使用及工做原理
在ViewModel模塊,屏幕中央爲一個計時器,經過使用ViewModel存儲計時器的值,將屏幕方向發生改變後,數據仍然存在不會銷燬。 經過點擊 查看Fragment共享Demo 能夠查看兩個Fragment共享了同一個ViewModel中的SeekBar的值。
5. Jetpack源碼解析---ViewModel基本使用及源碼解析
6. Jetpack---Paging你知道怎樣上拉加載嗎?
其餘還有Room、WorkManager也基本有用到,可是尚未詳細進行分析....這就是關於JetpackNote的總體內容,若是不當地方還請指正....
Github github.com/Hankkin/Jet…
下載連接: