MvvmCross アプリケーションで Messenger プラグインを使用していますが、サブスクリプションがパージされることがあります (「1 つ以上のリスナーが失敗しました - パージがスケジュールされています」)。これにより、アプリケーションでエラーが発生しています。デフォルトでは、サブスクリプションに弱参照を使用しており、メッセージのサブスクリプションを解除していません。
登録解除する必要がありますか? 弱い参照のポイントは、ガベージコレクションを許可することではありませんか?
以下に示すように、私の BaseView はコンストラクターでサブスクライブしています。
public BaseView()
{
_messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Subscribe<MyMessage>(s => Method());
}
以下は、私のメッセージを発行するブロードキャスト レシーバーです。
var _messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Publish<MyMessage>(new MyMessage(this));
onDestroy で登録を解除しようと考えています。
なぜこれが起こっているのか、解決策を教えていただければ幸いです。
前もって感謝します。