2012-08-27 40 views
2

我想知道是否有人可以指出我對這個問題的正確方向。一點介紹:BlackBerry Connection Transport Descriptors

在一個應用程序中,我們maintan我們剛剛重寫了我們的網絡層以取消對OS 4的支持。我們正在使用OS 5中提供的清潔程序ConnectionFactory。請注意我們遇到的問題是設備驅動的,只有,而不是模擬器相關。

有兩種方式或應用程序連接,一個數據線程輪詢特定的網址和存儲數據,和一個「通用網絡視圖」(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上的連接,確定傳輸信息並返回構建的URL。

TL; DR:有一個BrowserField一個怪胎,我們似乎無法調試,我們將不勝感激一套新的眼睛:我們認爲有什麼問題在buildURLTransport(String url)功能上面貼要點。

謝謝你提前一噸。

回答

4

小心你的代碼,因爲getUrlAsString不是線程安全的。我不明白爲什麼你有時會參考ConnectionFactory有時候你爲什麼不用其他。

我也不明白你爲什麼需要方法buildUrlTransport。爲什麼不使用BrowserFieldConfigConnectionFactory一起使用BrowserField作爲here

所以我會實例化一個ConnectionFactory,配置它與您的具體參數,並在任何地方使用它。如果偏好改變,我會重新創建ConnectionFactory並更新BrowserFieldConfig。當然這個代碼應該是線程安全的。

也更一致 - 有時你使用快速連接檢查,有時你不會。

+0

謝謝,我明天會去做這些調整(接受答案)。感謝您的清理建議!通過配置更改,您的意思是設備的連接是否已更改?例如:如果WiFi不可用並切換到MDS,是否需要一個新的連接工廠,或者持有的引用是否會重試直到找到可用的傳輸? – jlindenbaum

+0

我看到你從你的設置中設置了優選的傳輸。你可以設置它們的列表,如{WiFi,BIS-B,MDS,WAP2,DirectTCP}。在這種情況下,你不需要配置任何ConnectionFactory應該做的關於自身切換的工作。 –

+0

同意答案。但是,有時'ConnectionFactory'傳輸類型選擇無法按預期工作,特別是對於部分配置的Wi-Fi網絡。 –