6

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 で登録を解除しようと考えています。

なぜこれが起こっているのか、解決策を教えていただければ幸いです。

前もって感謝します。

4

1 に答える 1