显示第一个视图模型后,Mvvmcross订阅消息将触发停顿20秒

时间:2015-03-27 21:15:19

标签: mvvmcross

在我的一些视图模型和一些后台运行服务中,我需要为诸如Statemachine进程等所有类型的操作进行第二次滴答。 为了避免必须为每个场合创建一个Timer,我有一个TimerService每秒发布一个Messenger插件消息。 那些需要它的视图模型或服务只是订阅此消息。 这已经运作了一年多。最近我注意到我的应用程序启动时间相当长。经过一些调试后,我发现在第一个Viewmodel启动后(正确显示),在订阅开始接收此消息之前大约需要25秒。似乎有些东西阻碍了这些消息的发布。 在20多秒内,MvvmCross根本没有任何活动。 Mvvmcross根本没有记录任何内容。

什么可能导致这种行为?在启动序列中,messenger插件是否开始分发其消息?

我为不在此处发布代码而道歉,因为这是一种恰好在整个应用程序中发生的现象。在后台运行的单件服务都没有收到这些消息,直到20秒后所有内容都开始正常工作。

编辑:MvvmCross V3.5与Xamarin的最新稳定更新一起使用。每个测试的Android版本都会出现问题。

1 个答案:

答案 0 :(得分:0)

经过一些实验(并再次读取所有MvxMessenger文档)后,我尝试使用SubscribeOnThreadPoolThread方法而不是简单订阅其中一个已发布的消息,这些消息通常会在其处理程序中定期触发更新视图模型的属性。这使问题消失了。 通常,如果此viewrefresh消息很快并且不需要更多然后将存储库值(由后台服务更新)复制到可见的viewmodel属性,则进行处理。我猜在其中一个刷新处理程序中的同步调用会使信使系统阻塞.Haven尚未找到它。 什么是可以使Messenger插件阻止的典型情况?我会非常有兴趣了解这一点。