簡介
本專案是一個學習型別的專案,主要是為了學習一些Android最新的思路和開發思想,工程按照模組化、元件化的開發思路進行開發,專案整體結構如下圖。
專案程式碼整潔規範,結構清晰,使用Android最新的開發思想和技術,同時整合React-Native跨平臺,主要是為了實驗熱更功能,涉及到的技術有如下一些:
- 使用kotlin語言開發,專案使用模組化開發,降低了耦合性;
- 網路使用 retrofit2 + okhttp3方式,進行了高度的封裝;
- leakcanary 記憶體洩漏檢測
- 基於MVI架構airbnb的Mavericks
- 本地mock
- alibaba ARouter
- 整合RN熱更功能, 使用者需要開啟rn載入頁面,rn工程請見
體驗
- Apk下載連結: Apk下載連結
Apk二維碼
部分效果如下:
MVI架構
由於沒有明確的狀態管理標準,隨著應用程式的增長或新增功能或事先沒有計劃的功能,檢視渲染和業務邏輯可能會變得有點混亂,並且這種情況經常發生在Android應用開發過程中。可能你經常遇到狀態管理導致業務邏輯和 UI 渲染的分工不明確,最終導致應用架構的混亂。而新提出的MVI架構,提倡一種單向資料流的設計思想,非常適合資料驅動型的UI展示專案。MVI的架構思想來源於前端,由於Model、View和Intent三部分組成。
- Model:與其他MVVM中的Model不同的是,MVI的Model主要指UI狀態(State)。當前介面展示的內容無非就是UI狀態的一個快照:例如資料載入過程、控制元件位置等都是一種UI狀態
- View:與其他MVX中的View一致,可能是一個Activity、Fragment或者任意UI承載單元。MVI中的View通過訂閱Intent的變化實現介面重新整理(不是Activity的Intent、後面介紹)
- Intent:此Intent不是Activity的Intent,使用者的任何操作都被包裝成Intent後傳送給Model進行資料請求
用到的第三方庫
庫 | 功能 |
---|---|
retrofit2 | 網路 |
okHttp3 | 網路 |
mavericks | MVI框架 |
BaseRecyclerViewAdapterHelper | 萬能介面卡 |
PhotoView | 圖片預覽 |
ARouter | 元件化路由 |
coil | 圖片載入 |
XPopup | 彈窗元件 |
banner | 滾動圖 |
SmartRefreshLayout | 智慧下拉重新整理框架 |
gson | json解析 |
leakcanary | 記憶體洩漏檢測庫 |