C# Mono android热身速度极慢

C# Mono android热身速度极慢,c#,android,mono,xamarin.android,C#,Android,Mono,Xamarin.android,我有一个小应用程序,第一个屏幕是一个登录活动,加载第一个活动相对来说还行(在emulator中为2秒) 当您按下登录按钮时,它使用System.Net.HttpWebRequest验证登录用户名/密码,大约需要12秒。我用0.1秒在桌面上调用相同的URL。更糟糕的是,从URL返回的数据是json,我需要对其进行反序列化,这需要额外的10秒 我在这里搜索了他们的,它排除了System.Net.HttpWebRequest.Proxy陷阱(检测时间为7秒) 我进行了一些调试,并在调试窗口中发现了以下

我有一个小应用程序,第一个屏幕是一个登录活动,加载第一个活动相对来说还行(在emulator中为2秒)

当您按下登录按钮时,它使用System.Net.HttpWebRequest验证登录用户名/密码,大约需要12秒。我用0.1秒在桌面上调用相同的URL。更糟糕的是,从URL返回的数据是json,我需要对其进行反序列化,这需要额外的10秒

我在这里搜索了他们的,它排除了System.Net.HttpWebRequest.Proxy陷阱(检测时间为7秒)

我进行了一些调试,并在调试窗口中发现了以下有趣的结果。基本上,我注意到在运行时加载了相当多的组件

08-14 15:06:12.713 I/dalvikvm( 9180): Wrote stack traces to '/data/anr/traces.txt'
Loaded assembly: MonoDroidConstructors [External]
08-14 15:06:17.823 D/dalvikvm( 9180): GC_CONCURRENT freed 50K, 4% free 7313K/7559K, paused 11ms+3ms
Thread started: <Thread Pool> #2
Thread started: <Thread Pool> #3
**Loaded assembly**: System.dll [External]
[0:] 
[0:] 
[0:] 
start login,8/14/2013 3:06:22 PM
08-14 15:06:23.723 I/mono-stdout( 9180): 
start login,8/14/2013 3:06:22 PM
[0:] 
start login,8/14/2013 3:06:22 PM
Thread started: <Thread Pool> #4
**Loaded assembly**: Mono.Security.dll [External]
Thread started: <Thread Pool> #5
Thread started: <Thread Pool> #6
[0:] 
end login,8/14/2013 3:06:29 PM
08-14 15:06:29.933 I/mono-stdout( 9180): 
end login,8/14/2013 3:06:29 PM
[0:] 
end login,8/14/2013 3:06:29 PM
[0:] 
[0:] 
**Loaded assembly**: System.Runtime.Serialization.dll [External]
[0:] 
08-14 15:06:38.893 I/dalvikvm( 9180): threadid=3: reacting to signal 3
08-14 15:06:12.713 I/dalvikvm(9180):将堆栈跟踪写入“/data/anr/traces.txt”
加载的程序集:MonoDroidConstructors[外部]
08-14 15:06:17.823 D/dalvikvm(9180):GC_并发释放50K,4%释放7313K/7559K,暂停11ms+3ms
线程已启动:#2
线程已启动:#3
**加载的程序集**:System.dll[外部]
[0:] 
[0:] 
[0:] 
开始登录,2013年8月14日下午3:06:22
08-14 15:06:23.723输入/单声道标准输出(9180):
开始登录,2013年8月14日下午3:06:22
[0:] 
开始登录,2013年8月14日下午3:06:22
线程已启动:#4
**加载的程序集**:Mono.Security.dll[外部]
线程已启动:#5
线程已启动:#6
[0:] 
结束登录,2013年8月14日下午3:06:29
08-14 15:06:29.933输入/单声道标准输出(9180):
结束登录,2013年8月14日下午3:06:29
[0:] 
结束登录,2013年8月14日下午3:06:29
[0:] 
[0:] 
**加载的程序集**:System.Runtime.Serialization.dll[外部]
[0:] 
08-14 15:06:38.893 I/dalvikvm(9180):线程ID=3:对信号3作出反应

我终于明白了

我创建了一个新的AVD,配置更好,速度更快

它的速度很慢,这也与ARM的性能不是很好有关。我相信我们可以使用x86模拟器来获得更好的性能。使用SSD而不是硬盘将有助于提高性能


而且,在正确设置真实设备和良好网络的情况下,整个过程只需不到1秒。

您不应该向Xamarin询问这个问题吗?尝试Xamarin论坛或在bugzilla上创建bug请求。可能是多种非Xamarin因素导致了这种情况。对于grins,当您部署到设备时会发生什么?您是否有相同的问题?@MohibSheth right,我会问Xamarin。谢谢。@snowCrabs我在实际设备上也遇到了同样的问题,或多或少是同一时间。也许您需要启用刚刚在mono master中实现的--server标志,但对于移动设备: