2011-04-21 170 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中的一個錯誤。它可以通過在發送響應之前向服務器添加延遲來繞開。