我修改了@ slodge的一个样本,以解决我在ViewModels生命周期中遇到的问题.
我稍微修改了N26:https: //github.com/csteeg/NPlus1DaysOfMvvmCross/tree/viewmodeldisposesample/N-26-Fraggle
这个分支使用mvxmessenger插件来显示出错的地方.代码不漂亮,但显示你的不正确.您可以看到Id = 0的SubViewModel如何继续接收消息,即使它的视图早已消失.并且(在某些时候)HomeViewModel如何停止接收消息.
重现的步骤(包括清理版本的调试输出):
HomeViewModel:Warning:HomeViewModel 0 received: Created HomeViewModel0
HomeViewModel:Warning:HomeViewModel 0 received: Created SubViewModel0
SubViewModel:Warning:SubViewModel 0 received: Created SubViewModel0
HomeViewModel:Warning:HomeViewModel 0 received: Created FirstViewModel0
SubViewModel:Warning:SubViewModel 0 received: Created FirstViewModel0
FirstViewModel:Warning:FirstViewModel 0 received: Created FirstViewModel0
HomeViewModel:Warning:HomeViewModel 0 received: Destroyed FirstView for viewmodel 0
SubViewModel:Warning:SubViewModel 0 received: Destroyed FirstView for viewmodel 0
FirstViewModel:Warning:FirstViewModel 0 received: Destroyed FirstView for viewmodel 0
HomeViewModel:Warning:HomeViewModel 0 received: Destroyed SubFrag for viewmodel 0
SubViewModel:Warning:SubViewModel 0 received: Destroyed SubFrag …