我在我的 MvvmCross 应用程序中使用 Messenger 插件,并注意到它有时会清除我的订阅(“一个或多个侦听器失败 - 已安排清除”)。这导致我的应用程序出错。默认情况下,我对订阅使用弱引用,并且不会取消订阅该消息。
我需要退订吗?弱引用的意义不是让它被垃圾收集吗?
我的 BaseView 在构造函数中订阅,如下所示。
public BaseView()
{
_messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Subscribe<MyMessage>(s => Method());
}
下面是我的广播接收器发布我的消息。
var _messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Publish<MyMessage>(new MyMessage(this));
我有一个尝试取消订阅 onDestroy 的想法。
如果您能给我一些关于为什么会发生这种情况以及可能的解决方案的见解,我将不胜感激。
提前致谢。