高仿京東Android App,整合React-Native熱更功能

語言: CN / TW / HK

簡介

本專案是一個學習型別的專案,主要是為了學習一些Android最新的思路和開發思想,工程按照模組化、元件化的開發思路進行開發,專案整體結構如下圖。

image.png

專案程式碼整潔規範,結構清晰,使用Android最新的開發思想和技術,同時整合React-Native跨平臺,主要是為了實驗熱更功能,涉及到的技術有如下一些: 1. 使用kotlin語言開發,專案使用模組化開發,降低了耦合性; 2. 網路使用 retrofit2 + okhttp3方式,進行了高度的封裝; 3. leakcanary 記憶體洩漏檢測 4. 基於MVI架構airbnb的Mavericks 5. 本地mock 6. alibaba ARouter 7. 整合RN熱更功能, 使用者需要開啟rn載入頁面,rn工程請見

體驗

image.png

部分效果如下:

image.png

image.png

image.png

MVI架構

image.png 由於沒有明確的狀態管理標準,隨著應用程式的增長或新增功能或事先沒有計劃的功能,檢視渲染和業務邏輯可能會變得有點混亂,並且這種情況經常發生在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 | 記憶體洩漏檢測庫 |

附件:http://github.com/GuoguoDad/jd_mall