BlackBerry连接传输描述符
我想知道是否有人能为我指出解决这个问题的正确方向。一点介绍: 在我们维护的一个应用程序中,我们只是重写了我们的网络层,以删除对OS4的支持。我们正在使用OS 5中提供的cleanerBlackBerry连接传输描述符,blackberry,Blackberry,我想知道是否有人能为我指出解决这个问题的正确方向。一点介绍: 在我们维护的一个应用程序中,我们只是重写了我们的网络层,以删除对OS4的支持。我们正在使用OS 5中提供的cleanerConnectionFactory。请注意,我们遇到的问题仅限于设备,与模拟器无关 应用程序有两种连接方式,一种是轮询特定URL并存储数据的数据线程,另一种是“通用web视图”(aBrowserField) 到目前为止,数据线程连接似乎没有问题,它根据传输类型正确构建URL并正确下载数据。在浏览器字段中我们遇到了不同
ConnectionFactory
。请注意,我们遇到的问题仅限于设备,与模拟器无关
应用程序有两种连接方式,一种是轮询特定URL并存储数据的数据线程,另一种是“通用web视图”(aBrowserField
)
到目前为止,数据线程连接似乎没有问题,它根据传输类型正确构建URL并正确下载数据。在浏览器字段中
我们遇到了不同的问题。当我们用URL打开BrowserField
时,有一条OS 6曲线会导致问题(尽管没有其他OS 6设备),它很可能会显示“无法选择正确的传输描述符”消息-最常见的罪魁祸首是WAP2
我想我们有点困惑,黑莓似乎没有像我们希望的那样处理好传输描述符的选择。有人有什么建议吗
由于它的长度,我已经在gist上发布了我们的连接实用程序类:
数据线程使用的最常见的连接形式是getUrlAsString(stringetag)
函数,它执行GET操作并根据etag/url缓存响应
要为我们的BrowserField
构建url,我们使用buildURLTransport(String url)
函数,该函数获取url上的连接,确定传输信息,并返回构建的url
TL;DR:在浏览器字段中有一个奇怪的地方,我们似乎无法调试,我们希望有一双新的眼睛:我们认为buildURLTransport(String url)
函数中上面发布的要点有问题
提前感谢您。请小心您的代码,因为getUrlAsString
不是线程安全的。我不明白为什么您有时会引用连接工厂
,为什么不引用其他工厂
我也不明白为什么需要方法buildUrlTransport
。为什么不将BrowserFieldConfig
与ConnectionFactory
一起用于BrowserField
as
因此,我将实例化一个ConnectionFactory
,用您的特定参数配置它,并在任何地方使用它。如果首选项发生更改,我将重新创建ConnectionFactory
并更新BrowserFieldConfig
。确保此代码应该是线程安全的
还要更加一致—有时使用快速连接检查,有时不使用。请小心代码,因为getUrlAsString
不是线程安全的。我不明白为什么您有时会引用连接工厂
,为什么不引用其他工厂
我也不明白为什么需要方法buildUrlTransport
。为什么不将BrowserFieldConfig
与ConnectionFactory
一起用于BrowserField
as
因此,我将实例化一个ConnectionFactory
,用您的特定参数配置它,并在任何地方使用它。如果首选项发生更改,我将重新创建ConnectionFactory
并更新BrowserFieldConfig
。确保此代码应该是线程安全的
还要更加一致-有时使用快速连接检查,有时不使用。谢谢,我明天会检查,然后进行调整(届时将接受答案)。谢谢你的清理建议!配置更改是指设备的连接是否已更改?示例:如果WiFi变得不可用并切换到MDS,是否需要新的连接工厂,或者保留的引用只是重试,直到找到可用的传输?我看到您从设置中设置了更好的传输。您可以设置它们的列表,如{WiFi、BIS-B、MDS、WAP2、DirectTCP}。在这种情况下,您不需要配置任何ConnectionFactory应该做的关于自身切换的工作。同意答案。但是,有时ConnectionFactory
传输类型选择不能按预期工作,尤其是在部分配置的Wi-Fi网络中。@MisterSmith先生,我还没有找到解决方案。我在考虑热点API,或者先尝试用一些短超时打开连接。@eugenmartinov。我通常有首选传输类型的初始数组,但在建立连接之前,我会检查数组中的每个元素(TransportInfo.isTransportTypeAvailable&&TransportInfo.hasufficientCoverage
)。通过测试的元素保存到第二个数组中,这是我在出厂时设置为实际首选传输类型的数组。如果工厂能帮我做这件事,那就太好了。谢谢,我明天会再看一遍,然后再做调整(到时候会接受答案)。谢谢你的清理建议!配置更改是指设备的连接是否已更改?示例:如果WiFi变得不可用并切换到MDS,是否需要新的连接工厂,或者保留的引用只是重试,直到找到可用的传输?我看到您从设置中设置了更好的传输。您可以设置它们的列表,如{WiFi、BIS-B、MDS、WAP2、DirectTCP}。在这种情况下,您不需要配置任何ConnectionFactory应该做的关于自身切换的工作。同意答案。但是,有时ConnectionFactory
传输类型选择不能按预期工作,尤其是在部分配置的Wi-Fi网络中。@MisterSmith先生,我还没有找到解决方案。我在考虑热点API,或者先尝试用一些短超时打开连接。@eugenmartinov。我通常有一个首选传输类型的初始数组,但在建立连接之前,我会检查