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