1

我有一个小应用程序,第一个屏幕是登录活动,加载第一个活动相对可以(在模拟器中为 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
4

1 回答 1

0

我终于弄明白了。

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

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

并且在真实设备设置得当、网络良好的情况下,整个过程仅需不到1秒。

于 2013-08-17T02:43:37.760 回答