Closed RoyGuanyu closed 5 years ago
@RoyGuanyu
这种情况下,你只需要额外声明一个ViewModel
,然后通过ViewModel
本身的特性,让多个Fragment共享一个ViewModel
的实例即可。
个人经验来讲,这种ViewModel
复用共享的情况,首先一定要给ViewModel
中添加一定的注释,保证代码的可读性(对于整个team而言),其次,该ViewModel
的职责要尽量单一,尽量避免一个巨大的BaseShareViewModel
这种,导致未来某个版本需求变更导致代码修改幅度大的情况
@ qingmei2了解,感谢回复〜 这边其实比较困惑是DI Kodein的部分,以这个项目为例,就是在 MainActivity 的 KodeinModule 中注册此ActivityWide 的 ViewModel,接着在其中的任何 Fragments 透过 closestKodein 来取得 Activity 注入的 viewmodel instance ,然后接下来进行 Activity 生命周期级别的数据操作。
@RoyGuanyu
嗯嗯,如果实际项目不考虑Kodein
,完全可以忽略它哈,因为这个项目毕竟是练手的项目,实际开发中项目的复杂度是远远超过这个repo的,因此技术选型还是需要慎重,这个repo的目的还是展示MVVM基本的实现方式和思路。
了解,但已经入坑XDDD 感谢指教 哈
Hi Qingmei2 大您好,
从您这个例子学到很多东西,想请教有关于 main 的数据生命周期问题。
这个专案里,进入 main 后,各个子页面各自有自己的 repository,生命周期跟著该 Fragment走。然而,是不是其实有些数据会是需要以 mainFragment 的生命周期为主,这样如果 Fragment 被回收掉才不会数据丢失需要从remote或是local storage 重载。 在这个专案比较少看到透过一个viewmodel/repository在多个Fragment共享数据的例子,有机会的话会想知道 qingmei2 会怎么样写这种场景需求。 期待有空回复指教,感谢。