You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
soapgu
changed the title
Navigation in Android (三)——share ViewModel in Navigation
Navigation in Android (四)——share ViewModel in Navigation
Mar 26, 2022
在导航中传输数据
安卓导航数据有两种方法
在导航图里面增加parameter
这种方式在Navigation in Android (二)里面介绍过了,一般只有基础类型而且需要一一罗列。另外只支持通过Bundle来传输的,这个对象只支持小数据,数据量大了肯定吃不消
通过共享ViewModel实现
如果严格按照MVVM架构整合性比较好。下面主要介绍这种方式。
如果让ViewModel在导航中共享
共享媒介
ViewModelProvider(@NonNull ViewModelStoreOwner owner)
ViewModel需要ViewModelStoreOwner,ViewModelStoreOwner就是这个共享媒介
在 Fragment 之间共享数据
像这种是通过同一个Activity来共享ViewModel的
但是我一个导航图里面的上下游Fragment怎么共享ViewModel那
官网就是提了一嘴,只能自己试验了
代码实现
就是通过NavController的api来获取导航图的媒介
共享ViewModel的Fragment都使用一样的代码,就可以拿到同一个ViewModel
一些其他问题
共享数据的问题是解决了,就是ViewModel的生命周期没延长了,就是整个导航控件不死,ViewModel是不会被释放的。
目前暂时没问题。如果有需要可能需要写代码手工释放
The text was updated successfully, but these errors were encountered: