導航:首頁 > 操作系統 > androidmvpmvvm

androidmvpmvvm

發布時間:2025-01-09 10:10:35

android真的推薦用MVI模式MVI和MVVM有什麼區別

android自己卷自己,自己造一個MVI架構模式嗎?

MVI架構模式是國內android開發者最近一兩年造出來的嗎?

看了很多MVI的資料,發現都提到cycle.js框架。android的mvi架構就是啟發於cycle.js框架。

我們再看看Cycle.js框架是什麼時候開始的,又是什麼時候開始使用MVI模式的。

Cycle.js框架 第一個預發版本

https://github.com/cyclejs/cyclejs/releases?page=6

再結合官方文檔來看,Cycle.js框架就是為了MVI架構模式而生的。

雖然不知道,Cycle.js框架是不是首個MVI模式框架。

但是從很多資料可以推測,MVI架構模式就是Cycle.js框架推廣開來的。

而且早在2014年就已經在前端開發中用得飛起了。

想想2014年,咱們在幹嘛?android在用什麼架構模式。

正所謂,天下武功出少林啊。

我們android的很多技術,在前端早就用「爛了」。

我們知道MVP和MVVM的爹都是MVC。MVI的爹也是MVC。


MVC的Controller是命令編程組件,不能直接實現響應式編程思想。


響應式編程範式(Reactive programming):

安卓官方的compose框架、微信小程序、Flutter、React、鴻蒙UI的開發框架,都是使用響應式開發框架。

這里就不拓展開來講了,上面提到的任何一個開發框架,你只要會一個基本就能理解響應式編程範式。

如果一個都不會也沒關系,現在不理解響應式編程也沒關系,等你學會MVI就理解了,這種只有實際使用過才能深刻理解。


學不會也沒關系,不要焦慮(尤其那些工作不久的小夥伴,學不會屬於正常現象~)

MVI,咱第一遍學不會,就等2年,再學一遍~

2年後也沒學會,那就再等2年~ 一定要有耐心~

如果還是學不會,那也沒關系,因為MVI早晚也會過時~ 等過時了就不用學了~

哈哈哈~ 別笑,正經Android可不會開玩笑的。

就像rxjava,當年有多少人死活學不會,android開發現在誰還學Rxjava?哈哈哈~

用一張圖來總結這次升級的核心思想:


新版架構指南在舊版的基礎上,做了如下調整和建議:

1. 將LiveData組件改成了StateFlow

對協程的使用更友好。並且更能體現面向數據流開發的思想。

實際上,依然使用LiveData也沒毛病。


2. ViewModel傳遞給View的數據限制為View的UIState

ViewModel從Model層獲取數據後,轉換為UIState數據,通過StateFlow流向View層。

UIState的數據面向界面組件而定義的,是能直接控制View組件如何顯示的數據。

所以我們也可以稱UIState為界面的狀態或者View的狀態。

如下:


3. 單數據流還是多數據流的選擇

官方指南並沒有強制我們使用單流。

同一個界面應該使用單個StateFlow還是多個StateFlow,需要我們自己判斷。

我們應該根據UIStates數據們之間關聯程度來決定多流還是單流。

單流優缺點都十分明顯:

優點: 數據集中管控,會提高代碼的可讀性和修改的便利性。

缺點: 當數據非常多且復雜時,會影響效率。因為我們沒有diff功能,View層不能只更新有變化的數據,只會根據UIState刷新當前界面。

https://developer.android.com/jetpack/guide/ui-layer#additional-considerations

我們再看下官方新版架構圖:

當然不僅僅MVVM可以改造成響應式開發範式,MVP也是可以的。

不信你看 這篇blog

https://www.raywenderlich.com/817602-mvi-architecture-for-android-tutorial-getting-started

1. 理解MVC架構模式的思想【MVC是其他架構模式之爹,他的思想是MVP、MVVM、MVI的基礎,學會它是關鍵步驟~】。

3. 學習kotlin的StateFlow組件,的使用:Sequence->Flow->StateFlow。

4. 學習ViewModel組件的使用(雖然不用ViewModel也能實現MVI架構,但是ViewModel還是值得學習)。

5. 理解DRY(Don't Repeat Yourself)原則。

6. 理解MVVM(因為官方的MVI模式是基於MVVM的基礎改造的~)。

7. 學習官方架構指南。

8. 實戰。

在這里就分享一份由大佬親自收錄整理的 學習PDF+架構視頻+面試文檔+源碼筆記 高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料

這些都是我現在閑暇時還會反復翻閱的精品資料。裡面對近幾年的大廠面試高頻知識點都有詳細的講解。相信可以有效地幫助大家掌握知識、理解原理,幫助大家在未來取得一份不錯的答卷。

當然,你也可以拿去查漏補缺,提升自身的競爭力。

真心希望可以幫助到大家,Android路漫漫,共勉!

如果你有需要的話,只需 私信我【進階】即可獲取

㈡ Android UI 架構演進:從 MVC 到 MVP、MVVM、MVI

Android UI架構的演變:從MVC到MVP、MVVM和MVI


隨著Android開發的發展,為優化代碼設計,業界不斷探索和實踐不同的架構模式,如MVC、MVP、MVVM和MVI,它們的核心目標是「關注點分離」,以提高代碼的可維護性、測試性和可讀性。最初,所有UI邏輯都集中在Activity中,導致高度耦合,難以管理。


1. MVC:Android的默認設計,將代碼劃分為Model、View和Controller,盡管解決了Activity代碼過載問題,但Activity仍承擔了View和邏輯處理的雙重任務,分離不夠徹底。


2. MVP:為了解決MVC的不足,MVP將邏輯分離到Presenter,使用Contract介面定義View和Presenter的交互。但雙向依賴仍是其缺點。


3. MVVM:MVVM將Presenter變為ViewModel,使用觀察者模式減少雙向依賴。DataBinding等工具支持了MVVM的實現,但過度使用可能導致數據流混亂。


4. MVI:MVI強調單數據流,通過ViewState簡化View和ViewModel之間的交互。雖然更注重響應式,但過度壓縮狀態可能導致復雜性。


總的來說,MVP、MVVM和MVI都試圖將Activity的職責分解,但每種模式都有其局限性和適用場景。MVVM和MVP本質上相似,而MVI則引入了命令式到響應式的轉變。選擇哪種架構,應根據項目的具體需求和團隊習慣來決定,而不是盲目追求新潮。

閱讀全文

與androidmvpmvvm相關的資料

熱點內容
Linux為什麼bootloader編譯 瀏覽:699
gcc只運行不編譯 瀏覽:868
網頁無法解析伺服器是什麼意思 瀏覽:926
伺服器如何判斷用戶是否登錄 瀏覽:847
股市app數值怎麼調整紅綠色 瀏覽:844
滴滴車主app怎麼學習網約車考試題 瀏覽:220
如何在電腦上找到伺服器地址 瀏覽:676
vue項目編譯後代碼邏輯改變了 瀏覽:962
怎麼連接自己部署的伺服器 瀏覽:797
關閉電腦的命令 瀏覽:279
hlr命令 瀏覽:637
塞班系統文件夾播放器 瀏覽:350
編譯器如何編出可執行程序 瀏覽:644
什麼是smtp伺服器 瀏覽:266
pdf正式版 瀏覽:176
linux重啟oracle資料庫 瀏覽:811
我的世界如何刪除伺服器許可權 瀏覽:875
gzip壓縮和seo的區別 瀏覽:510
編譯軟體是哪個 瀏覽:830
維修制熱壓縮機 瀏覽:67