我的基于WebView的代码太长了(分散在几个模块中)以便在这里发布,我正在寻找一种可能对其他人有帮助的通用技术,所以这里是:
我有一组实现基本Web浏览器的WebView,WebViewClient和JavascriptInterface派生类。它似乎工作得很好,除了在运行Omniture的网站上,只在一部手机上运行(Nexus One运行CyanogenMod 6(Android 2.2.1)),loadUrl()的网址超过某个(合理)长度将冻结,然后最终将使用以下描述字符串onReceiveError(),ERROR_IO(-7)超时:
服务器无法通信。稍后再试。
澄清:同样精确的代码,同样精确的网址在我测试的所有其他手机上完美运行。
我可以通过将此异常归因于该手机中特定版本的android.webkit中的错误来解决这个问题,但我不知何故怀疑我可能在我自己的代码中遗漏了一些可以解决此问题的内容。原因是在同一部手机上,基于WebView的股票浏览器不会出现这个问题。
我很好奇和细致,我发现这个有趣且具有挑战性,或许是深入研究一些HTTP协议调试技术的好机会。
例如,如果我有办法利用android.net.http获取诊断日志消息,那可能是超级的,但是我如何为WebView和WebViewClient做到这一点?
有关如何解决此问题的任何建议或提示?