我想知道是否有人可以为我指出解决这个问题的正确方向。一些介绍:
在我们维护的应用程序中,我们刚刚重写了网络层以删除对 OS 4 的支持。我们正在使用 OS 5 中提供的更清洁的 ConnectionFactory
。请注意,我们遇到的问题是设备问题-仅限,与模拟器无关。
应用程序有两种连接方式:轮询特定 URL 并存储数据的数据线程,以及“通用 Web View ”(BrowserField
)。
到目前为止,数据线程连接似乎没有问题,它根据传输类型正确构建 URL 并正确下载数据。在 BrowserField
中,我们遇到了不同的问题。当我们使用 URL 打开 BrowserField
时,OS 6 曲线会导致问题(但没有其他 OS 6 设备),它有可能会显示“无法选择正确的传输描述符”消息 - 最常见的消息罪魁祸首是WAP2。
我想我们有点困惑,黑莓似乎没有像我们希望的那样处理传输描述符选择。有人有什么建议吗?
由于其长度,我已在要点上发布了我们的连接实用程序类:https://gist.github.com/3490101
数据线程使用的最常见的连接形式是 getUrlAsString(String etag)
函数,它执行 GET 操作并根据 etag/url 缓存响应。
要为 BrowserField
构建 URL,我们使用 buildURLTransport(String url)
函数,该函数获取 url 上的连接,确定传输信息,并返回构建的网址。
TL;DR: BrowserField
中有一个奇怪的现象,我们似乎无法调试,我们希望有一双新的眼睛:我们认为有问题在上面发布的 buildURLTransport(String url)
函数中的要点中。
提前致谢。
最佳答案
请小心您的代码,因为 getUrlAsString
不是线程安全的。我不明白为什么您有时会保留对 ConnectionFactory
的引用,而其他的则不然。
我也不明白为什么你需要方法buildUrlTransport
。为什么不将 BrowserFieldConfig
与 ConnectionFactory
一起用于 BrowserField
,如 here .
所以我会实例化一个 ConnectionFactory
,使用您的特定参数配置它并在任何地方使用它。如果首选项发生变化,我将重新创建 ConnectionFactory
并更新 BrowserFieldConfig
。当然这段代码应该是线程安全的。
还要更加一致 - 有时您使用快速连接检查,有时则不使用。
关于BlackBerry 连接传输描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12145909/