[英]Android Architecture Components ViewModel context issue
我試圖在Android中使用新的架構組件,到目前為止它已經運行得很好。 但是,我偶然發現了一個架構問題。
我有一個MainActivity
,它包含一堆片段, A
, B
和C
到目前為止,每次我需要我的ViewModel(VM)時,我都會在MainActivity
的上下文中獲取它(如下所示: MyViewModel vm = ViewModelProviders.of(getActivity()).get(MyViewModel.class);
)。 現在考慮一下:
C
允許用戶選擇一些值,並將其寫入VM
。 A
使用片段C
讓用戶選擇值,然后A
直接從VM
讀取值並在其UI中顯示它。 B
使用與片段A
相同的方法。 問題是,由於VM
始終位於MainActivity
的上下文中,如果在B
之前使用了片段A
,則該值仍然可用,並且B
將顯示一些舊數據。
我看到的最明顯的解決方案是分別在片段A
和B
的上下文中創建VM
。 但后來我無法弄清楚如何讓片段C
訪問那些VM
。
我也可以在片段C
的上下文中創建VM
,但這需要片段A
和B
來創建C
的實例,我認為這不是一個很好的解決方案。
第三種解決方案是保持當前的方法,並在適當時清除VM
的數據,但我認為這也很麻煩。
最好的方法是什么?
您可以在VM中使用映射,並將A
和B
的值存儲在不同的鍵下。
因此,當A
開始C
它將其A_key
作為參數傳遞。 當用戶在C
選擇一個值時,它將使用A_key
作為鍵存儲在VM的映射中。 當A
檢查值是否可用時,它僅檢查為A_key
存儲的值。
B
和B_key
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.