我有一个小应用程序,第一个屏幕是登录活动,加载第一个活动相对正常(在模拟器中为2秒)。
当您按下登录按钮时,它使用System.Net.HttpWebRequest来验证登录用户名/密码,大约需要12秒。我用0.1秒在桌面上调用相同的URL。更糟糕的是,从URL返回的数据是json,我需要对其进行反序列化,并且需要额外的10秒。
我在这里搜索了他们,它排除了System.Net.HttpWebRequest.Proxy陷阱(需要7秒才能检测到)。
我进行了一些调试,并在Debug窗口中找到以下有趣的结果。基本上我注意到在运行时加载了很多assemeblies。
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
答案 0 :(得分:0)
我终于明白了。
我创建了一个新的AVD,配置更好,而且速度更快。
仿真器速度慢也与ARM性能有关并不是很好。我相信我们可以使用x86模拟器来获得更好的性能。而不是硬盘,使用SSD将有助于提高性能。
通过正确设置真实设备和良好的网络,整个过程只需不到1秒钟。