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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android—MVC、MVP、MVVM

發布時間:2023/12/18 Android 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android—MVC、MVP、MVVM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MVC:

  • 視圖(View):用戶界面。
  • 控制器(Controller):業務邏輯
  • 模型(Model):數據保存

  • View 傳送指令到 Controller
  • Controller 完成業務邏輯后,要求 Model 改變狀態
  • Model 將新的數據發送到 View,用戶得到反饋
  • 操作方式: 用戶操作View或Controller

    缺點:View與Model之間存在關系,Activity既是View也是Controller,代碼量大。

    MVP:

    Controller改為Presenter

  • 各部分之間的通信,都是雙向的。
  • View 與 Model 不發生聯系,都通過 Presenter 傳遞。
  • View 代碼少,不部署任何業務邏輯,稱為"被動視圖"(Passive View),即沒有任何主動性,而 Presenter代碼多,所有邏輯都部署在那里。
  • MVVM:

    Presenter改為ViewModel

    采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。用到了檢查者模式。

    優點:

    低耦合:View和Model不相互聯系

    可重用性:你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯

    Android的ViewModel的生命周期貫穿整個應用。

    ViewModel:

  • 可以提供和管理UI界面數據。(將加載數據與數據恢復從 Activity or Fragment中解耦)
  • 可感知生命周期的組件。
  • 不會因配置改變而銷毀。
  • 可以配合 LiveData 使用。
  • 多個 Fragment 可以共享同一 ViewModel。
  • LiveData:

    LiveData是一個在線程間傳遞數據的容器。當后臺線程得到數據后,通過setValue()、postValue()方法投遞數據。其他線程通過getValue()得到數據。

    setValue()只能在主線程中調用,postValue()可以在任何線程中調用。

    LiveData具有保證UI和狀態一致、避免內存泄漏、避免手動管理生命周期等優點。

    在調用observe()時,第一個參數是LifecycleOwner,第二個參數是Observer。LiveData建立一個LifecyleBoundObserver對象,將這兩個參數綁定到一起,來接收Lifecycle的生命周期更新和LiveData的數據更新。LifecycleBoundObserver是一個的內部類,它持有了LiveData引用。當生命周期發生變化(LifecycleRegistry.handleLifecyleEvent)時,LifecycleBoundObserver調用LiveData的dispatchingValue()方法,獲取最新數據。

    LiveData的特點:

    • 采用觀察者模式,數據發生改變,可以自動回調(比如更新UI)。
    • 不需要手動處理生命周期,不會因為Activity的銷毀重建而丟失數據。
    • 不會出現內存泄漏。
    • 不需要手動取消訂閱,Activity在非活躍狀態下(pause、stop、destroy之后)不會收到數據更新信息。

    ViewModel+LiveData 實現Fragment之間通信

    總結

    以上是生活随笔為你收集整理的Android—MVC、MVP、MVVM的全部內容,希望文章能夠幫你解決所遇到的問題。

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