Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BlackBerry连接传输描述符_Blackberry - Fatal编程技术网

BlackBerry连接传输描述符

BlackBerry连接传输描述符,blackberry,Blackberry,我想知道是否有人能为我指出解决这个问题的正确方向。一点介绍: 在我们维护的一个应用程序中,我们只是重写了我们的网络层,以删除对OS4的支持。我们正在使用OS 5中提供的cleanerConnectionFactory。请注意,我们遇到的问题仅限于设备,与模拟器无关 应用程序有两种连接方式,一种是轮询特定URL并存储数据的数据线程,另一种是“通用web视图”(aBrowserField) 到目前为止,数据线程连接似乎没有问题,它根据传输类型正确构建URL并正确下载数据。在浏览器字段中我们遇到了不同

我想知道是否有人能为我指出解决这个问题的正确方向。一点介绍:

在我们维护的一个应用程序中,我们只是重写了我们的网络层,以删除对OS4的支持。我们正在使用OS 5中提供的cleaner
ConnectionFactory
。请注意,我们遇到的问题仅限于设备,与模拟器无关

应用程序有两种连接方式,一种是轮询特定URL并存储数据的数据线程,另一种是“通用web视图”(a
BrowserField

到目前为止,数据线程连接似乎没有问题,它根据传输类型正确构建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。我通常有一个首选传输类型的初始数组,但在建立连接之前,我会检查