2

誰かが私をこの問題の正しい方向に向けることができるかどうか疑問に思っています。ちょっとした紹介:

アプリでは、ネットワークレイヤーを書き直して、OS 4のサポートを削除しました。OS5でConnectionFactory提供されているクリーナーを使用しています。発生している問題はデバイスのみであり、シミュレーターに関連するものではないことに注意してください。

アプリに接続する方法は2つあります。特定のURLをポーリングしてデータを保存するデータスレッドと、「一般的なWebビュー」(a BrowserField)です。

これまでのところ、データスレッドの接続に問題はないようです。トランスポートタイプに基づいてURLを適切に構築し、データを正しくダウンロードします。私たちにBrowserFieldは別の問題があります。をURLで開くと、問題を引き起こすOS 6曲線があります(ただし、他のOS 6デバイスはありません)BrowserField。「適切なトランスポート記述子を選択できませんでした」というメッセージが表示される可能性があります。最も一般的な原因はWAP2です。

BlackBerryがトランスポート記述子の選択を期待どおりに処理していないように見えることに少し戸惑っていると思います。誰か推奨事項はありますか?

その長さのために、私は接続ユーティリティクラスをgistに投稿しました:https ://gist.github.com/3490101

データスレッドで使用される最も一般的な接続形式getUrlAsString(String etag)は、GETを実行し、etag/urlに基づいて応答をキャッシュする関数です。

のURLを作成するには、この関数BrowserFieldを使用します。このbuildURLTransport(String url)関数は、URLで接続を取得し、トランスポート情報を判別して、作成されたURLを返します。

TL; DR:デバッグできないように見える奇妙な点があります。新しい目線をいただければ幸いです。上記の関数BrowserFieldの要点に、何か問題があると思います。buildURLTransport(String url)

事前にトンに感謝します。

4

1 に答える 1

4

getUrlAsStringスレッドセーフではないため、コードに注意してください。ConnectionFactoryなぜあなたが他の人を参照しないのか、時々参照し続けるのか理解できませんでした。

私も、なぜあなたが方法を必要とするのか理解していませんでしたbuildUrlTransportここのようにforとBrowserFieldConfig一緒に使ってみませんか。ConnectionFactoryBrowserField

したがって、1つをインスタンス化ConnectionFactoryし、特定のパラメーターを使用して構成し、あらゆる場所で使用します。設定が変更された場合は、を再作成ConnectionFactoryして更新しBrowserFieldConfigます。確かに、このコードはスレッドセーフである必要があります。

また、より一貫性を保ちます。クイック接続チェックを使用する場合と使用しない場合があります。

于 2012-08-27T20:07:45.223 に答える