2011-04-21 132 views
0

在Android 1.6(Sony Xperia X10)上遇到以下情况:有时在同一台设备(如127.0.0.1:8080)的WebView中使用XMLHttpRequest请求数据时,有时通过ServerSocket.accept()提供数据包,XMLHttpRequest有时卡住了。调试器告诉我,服务器实际上深入ServerSocket.accept(),例如。他已经服务或没有收到最后的请求。该WebViewCoreThread是停留在Android 1.6丢失数据包

Object.wait() line: 288 
Request.waitUntilComplete() line: 381 
RequestHandle.waitUntilComplete() line: 262 
Network.requestURL(String, Map, byte[], LoadListener, boolean) line: 195  
FrameLoader.handleHTTPLoad() line: 204 
FrameLoader.executeLoad() line: 131 
... 

理应等待它的http0 ... http3线程,所有的等待

Object.wait(long, int) line: not available [native method] 
RequestQueue(Object).wait() line: 288 
ConnectionThread.run() line: 93 

首先我想请求包只是迷路了。但是这并不能解释为什么所有的http..线程都处于相同的等待位置,因为一个人应该等待响应,而其他人则需要等待WebView的新任务。有任何想法吗?

+0

上面提到的'http..'线程的等待实际上是一个“等待工作”的位置。所以工作人员等待工作,而WebViewCoreThread等待完成。似乎是一个错误。 – dronus 2011-04-21 01:34:20

+0

这确实是Android中的一个错误,我报告说。随着回答服务器延迟的请求提出,问题发生得更少,然后消失。所以,这可能永远不会出现在真实的网络请求上,只能通过本地主机服务器进行复制。 – dronus 2011-05-08 18:43:32

回答

0

这确实是Android中的一个错误。它可以通过在发送响应之前向服务器添加延迟来绕开。