Ich benutze das Messenger Plugin in meiner MvvmCross Anwendung und habe festgestellt, dass es manchmal meine Abonnements bereinigt ("Ein oder mehrere Listener fehlgeschlagen - Bereinigung geplant"). Dies verursacht einen Fehler in meiner Anwendung. Standardmäßig verwende ich die schwache Referenz für die Abonnements und ich melde mich nicht von der Nachricht ab.MvvmCross Messenger Plugin Löschen von Abonnements
Muss ich mich abmelden? Ist nicht der Punkt einer schwachen Referenz, um es zu ermöglichen, Müll gesammelt zu werden?
Mein BaseView abonniert im Konstruktor wie unten gezeigt.
public BaseView()
{
_messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Subscribe<MyMessage>(s => Method());
}
Unten ist mein Broadcast-Empfänger, der meine Nachricht veröffentlicht.
var _messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Publish<MyMessage>(new MyMessage(this));
Ich habe eine Idee zu versuchen, in OnDestroy abzubestellen.
Wenn Sie mir einen Einblick geben könnten, warum dies passiert und eine mögliche Lösung wäre ich dankbar.
Vielen Dank im Voraus.
Diese Frage von einigen Code profitieren würden statt "Mein BaseView abonniert im Konstruktor und hat die Idee, in onDestroy abzubestellen." – Stuart
Ich habe einen Code hinzugefügt, lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. – Jake