伙计,
我有一个ViewModel,它向其构造函数中注入了一个单例。 然后,在构造函数中,我在单例实例的属性上创建一个观察者。
在detached()函数中,我处理了观察者订阅。
_dbContext.Remove(oldItem);
发生的事情是,每次我导航到页面时,都会创建一个ViewModel的新实例,并且当我离开页面时,将调用分离的对象。 (我预计会发生)。
但是,观察者并没有被删除/处置,并且ViewModel的实例仍保留在内存中。当'state'值更改并触发onStateChanged时,它将对所有已创建的页面实例数进行更改。即我导航到/离开页面的次数。
这在记录调试语句时非常明显。
observer.dispose()是否应删除观察者? 我的ViewModel实例也不应该处置吗?
谢谢
Donal
答案 0 :(得分:0)
观察者应该只放置在您的代码中,如从本示例https://codesandbox.io/s/ovvp7m05o5
中所见Click changed called
Click changed called
我认为您不小心覆盖了课堂上的观察者参考。在构造函数中一次创建的观察者永远无法再被引用以正确处理。