【问题标题】:Android 1.6 losing PacketsAndroid 1.6 丢包
【发布时间】:2011-04-21 01:15:07
【问题描述】:

刚刚在 Android 1.6 (Sony Xperia X10) 上遇到以下问题:当通过 ServerSocket.accept() 提供数据包时,在同一设备(例如 127.0.0.1:8080)的 WebView 中使用 XMLHttpRequest 请求数据时,XMLHttpRequest 有时会卡住.调试器告诉我,服务器实际上深入到ServerSocket.accept(),例如。他是否已送达或未收到最后一次请求。 WebViewCoreThread 卡在

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 的新作业。有什么想法吗?

【问题讨论】:

  • 前面提到的http..线程的等待实际上是一个“等待工作”的位置。所以工人等待工作,而WebViewCoreThread 等待他们的完成。似乎是一个错误。
  • 这似乎确实是Android中的一个错误,我报告了。随着服务器响应延迟请求的增加,问题发生的次数越来越少,然后消失。所以也许这永远不会出现在真实的网络请求上,只能用 localhost 服务器重现。

标签: android localhost serversocket


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2017-04-04
    相关资源
    最近更新 更多