Dhr*_*hil 3 android mvvmcross xamarin
我正在使用Xamrin Android应用程序,我正在使用MvvmCross.在我的应用程序中,我使用了IMvxMessenger.But当我更改视图并回到同一视图时,我得到两次消息.然后它崩溃了.解决办法是什么 ?这是我的代码:在ViewModel中我有这样的代码:
var messanger = Mvx.Resolve<IMvxMessenger>();
var message = new MyMessage(this,"Product has been added",cartListCount);
messanger.Publish(message);
Run Code Online (Sandbox Code Playgroud)
在视图上我有这个代码:
private MvxSubscriptionToken _token;
public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var view = base.OnCreateView(inflater, container, savedInstanceState);
messenger = Mvx.Resolve<IMvxMessenger>();
_token = messenger.SubscribeOnMainThread<MyMessage>(OnInputIsNeeded,MvxReference.Strong);
return view;
}
private void OnInputIsNeeded(MyMessage _Message)
{
Toast.MakeText (this.Activity,_Message.Message, ToastLength.Short).Show();
messenger.Unsubscribe<MyMessage> (_token);
}
Run Code Online (Sandbox Code Playgroud)
视图(无论是活动还是片段)始终被创建和销毁.由于您在OnCreateView()中订阅,因此您应该在OnDestroyView()中取消订阅.
可能发生的是OnCreateView()被多次调用并导致多个订阅被添加.MvxMessenger正在向所有订阅者广播该消息.如果View被销毁但未取消订阅,则可能会因为回调不再存在而崩溃.
| 归档时间: |
|
| 查看次数: |
617 次 |
| 最近记录: |