gpt4 book ai didi

android - 使用 IMvxMessenger 获取消息两次

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:20 24 4
gpt4 key购买 nike

我正在处理 Xamrin Android 应用程序,我正在使用 MvvmCross。在我的应用程序中,我使用了 IMvxMessenger。但是当我更改 View 并返回到同一 View 时,我遇到了两次困惑。然后它崩溃了。解决办法是什么 ?这是我的代码:在 ViewModel 中我有这段代码:

var messanger = Mvx.Resolve<IMvxMessenger>();
var message = new MyMessage(this,"Product has been added",cartListCount);
messanger.Publish(message);

在 View 中我有这段代码:

 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);
}

最佳答案

View (无论是 Activity 还是 fragment )一直在创建和销毁。由于您在 OnCreateView() 中订阅,您应该在 OnDestroyView() 中取消订阅。

可能发生的情况是 OnCreateView() 被多次调用并导致添加多个订阅。 MvxMessenger 正在向所有订阅者广播消息。如果一个 View 被销毁,但还没有取消订阅,它很可能会崩溃,因为回调不再存在。

关于android - 使用 IMvxMessenger 获取消息两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32694275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com