我有一個關于 Android 應用程式架構的一般問題。我正在實作一個應用程式(在 Java 中),它具有單個活動和 20 個片段(相似但不相同)。到目前為止,我在片段中實作了所有內容(UI、邏輯、資料庫查詢)。現在我正在考慮使用 ViewModel,但我不確定它是否值得付出努力。所以我的問題是我的 20 個 Fragment 中的每一個都應該有一個自己的 ViewModel 還是我是否可以為所有 20 個 Fragment 實作一個 ViewModel?為所有 Fragment 類實作一個 ViewModel 會大大增加作業量,所以我想知道是否可以為所有 Fragment 只有一個 ViewModel?
uj5u.com熱心網友回復:
每個片段有一個視圖模型。這樣每個視圖模型負責做與一個片段相關的事情,因此測驗也更容易。
事實上,您可以為單個片段使用多個視圖模型,為您做不同的事情。
將所有內容都保存在一個視圖模型中會使測驗變得更加困難,而且您必須為所有 20 個片段保留視圖模型,這可能是活動的范圍。
uj5u.com熱心網友回復:
在技??術上可以ViewModel為所有Fragments設定一個。
然而,由于這個ViewModel必須管理許多非常不同的用例,所以它就像一個上帝物件。如果有 20 個 Fragment,它將有很多行代碼......
切換到 MVVM 通常是值得的,因為從長遠來看,該應用程式更易于測驗和維護。
BaseViewModel在您的應用程式中使用 a 可能是一個好主意:一個ViewModel處理所有用例中相似事物的類,例如讓它Fragment知道它應該顯示加載指示器或錯誤訊息。“正常”ViewModel可以擴展BaseViewModel并專注于它們的用例。
在某些情況下,共享是有意義的ViewModel,例如,當 aFragment顯示帶有某些EditTexts的對話時,或者當一個人Fragment在小型設備上具有3-4 s序列的作業流程時,而在較大的設備上,一兩個Fragments 就足夠了。
以防萬一,這是我最喜歡的 MVVM 應用架構起點:應用架構指南
uj5u.com熱心網友回復:
現在我正在考慮使用 ViewModel 但我不確定它是否值得付出努力
如果你想對未來的發展有好處,這絕對是值得的。
所以我的問題是我的 20 個 Fragment 中的每一個都應該有一個自己的 ViewModel 還是我是否可以為所有 20 個 Fragment 實作一個 ViewModel?
每個片段都應該有自己的 ViewModel,我不喜歡共享 ViewModel。我開發了很多應用程式,我逐漸意識到我應該盡量避免緊耦合。因為每次開發都會有很多變化,當你編輯或添加或洗掉它時,你會因為鏈接太緊而編輯很多。將它們拆開并仍然能夠正常運行并且在需要時能夠像拼圖一樣重新組裝它們會很好。
為所有 Fragment 類實作一個 ViewModel 會大大增加作業量,所以我想知道是否可以為所有 Fragment 只有一個 ViewModel?
如果你愿意的話,在編程中沒有什么是不可能的。但是如果你這樣做了,你就不應該這樣做,因為它只會讓你的代碼變得更復雜。
您可以在此處閱讀有關該模型的更多資訊。
https://developer.android.com/jetpack/guide#overview
uj5u.com熱心網友回復:
您可以通過此鏈接 Shareable ViewModel
通過使用擴展函式,這對于 Kotlin 來說非常容易,但是在 Java 中,我們需要創建一個函式來創建 ViewModel 并根據活動/片段的生命周期處理它們的范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379732.html
標籤:安卓 android-fragments android-viewmodel
