Xamarin.forms 为什么不是';t信息中心。订阅工作吗?
在Xamarin表单中,我在出现的Xamarin.forms 为什么不是';t信息中心。订阅工作吗?,xamarin.forms,Xamarin.forms,在Xamarin表单中,我在出现的中订阅,在出现的中取消订阅。但它仍然为每个实例调用回调 protected override void OnAppearing(){ if (isGoingBack) MessagingCenter.Subscribe<PhoneNumberVerificationPajModal, string>(this, "Phone.Verify", codeSendRequest); } protected override voi
中订阅,在出现的中取消订阅。但它仍然为每个实例调用回调
protected override void OnAppearing(){
if (isGoingBack)
MessagingCenter.Subscribe<PhoneNumberVerificationPajModal, string>(this, "Phone.Verify", codeSendRequest);
}
protected override void OnDisappearing(){
if (isGoingBack)
MessagingCenter.Unsubscribe<PhoneNumberVerificationPajModal>(this, "Phone.Verify");
}
protected override void OnAppearing(){
如果(正在返回)
MessagingCenter.Subscribe(这是“Phone.Verify”,codeSendRequest);
}
受保护的覆盖无效OnDisappearing(){
如果(正在返回)
取消订阅(这是“电话验证”);
}
真相是呼叫取消订阅起作用。但是,在我的代码中,当单击按钮打开页面时,我有一个条件。由于该页面是发送消息的页面,当用户单击按钮时,我设置isGoingBack=false
。当我按下后退按钮并返回页面时,我可以取消订阅并接听来电。但是转到下一个回调事件get call的次数与我创建新页面的次数相同。但事实是,每当我离开页面时,我都会取消订阅。在您的示例中,您没有将arg类型传递给Unsubscribe方法
尝试使用您正在订阅的同一类型参数取消订阅
所以不是
MessagingCenter.Unsubscribe<PhoneNumberVerificationPajModal>(this, "Phone.Verify");
MessagingCenter.Unsubscribe(这是“Phone.Verify”);
试一试
MessagingCenter.Unsubscribe(这是“Phone.Verify”);
我建议在构造函数中订阅,仅在返回时取消订阅
我已经尝试过了。问题是用户可以随时返回页面。因此,每当用户来到页面时,页面将订阅。回去的时候取消订阅。这应该是有效的。看起来每当页面再次订阅时,MessagingCenter
都有缓存或计数,并再次绑定所有其他订户呼叫以this
。当您说每个实例都回拨时,这到底意味着什么?@FreakyAli这意味着每次我进入页面,MessagingCenter.send()
每次都给订户打电话。是的。我错过了额外的泛型类型。
MessagingCenter.Unsubscribe<PhoneNumberVerificationPajModal, string>(this, "Phone.Verify");