MvvmCross 응용 프로그램에서 Messenger Plugin을 사용하고 있으며 때로는 구독을 삭제하는 경우가 있습니다 ("하나 이상의 수신기가 실패했습니다 - 예약이 제거되었습니다"). 이것은 내 응용 프로그램에 오류를 일으키는 것입니다. 기본적으로 구독에 약한 참조를 사용하고 있으며 메시지 수신을 취소하지 않았습니다.MvvmCross Messenger Plugin 구독 삭제
탈퇴해야합니까? 가비지 수집을 허용하는 약한 참조의 요점이 아닌가요?
내 BaseView는 아래와 같이 생성자에 가입합니다.
public BaseView()
{
_messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Subscribe<MyMessage>(s => Method());
}
내 브로드 캐스트 수신기가 내 메시지를 게시하고 있습니다.
var _messenger = Mvx.Resolve<IMvxMessenger>();
_messenger.Publish<MyMessage>(new MyMessage(this));
나는 onDestroy에서 탈퇴하려는 생각이 있습니다.
이 문제가 발생하는 이유와 해결 가능한 해결책에 대해 알려 주시면 감사하겠습니다.
미리 감사드립니다.
이 질문은 몇 가지 코드의 혜택이 아닌 것 - 위키
이에 대한 자세한 내용은 섹션을 참조하십시오 "수집 된 쓰레기는 가입 토큰이 구독에서 반환 할 때마다이 GC 기반 탈퇴가 발생할 것이다" "내 BaseView가 생성자에서 구독 중이며 onDestroy에서 구독을 취소하려고합니다." – Stuart
몇 가지 코드를 추가했습니다. 더 자세한 정보가 필요하면 알려주세요. – Jake