アプリケーション画面は、添付の画像のように見えます。複数の行があり、各行にはビットマップ画像、タイトル、説明フィールドがあります。すべての情報は、サポートするWebサーバーからXML形式で取得されます。ここで、オブザーバーデザインパターンを使用しました。これは、HTTP経由でリモートサーバーに接続し、XMLをダウンロードして解析するための個別のスレッドを作成します。XMLには、各行の画像、タイトル、説明のURLが含まれています。
私はこれまでいくつかのアプローチを試しましたが、
アプローチ1:
- 別のメソッド(drawRow())を作成しました。このメソッドは、レイアウトを指定してコンテンツをまとめます。
- そして、downloadImage()メソッドを使用して、drawRow()メソッドからリモートURLをダウンロードしようとしています。ただし、同じスレッドを使用してダウンロードするとUIがブロックされるため、問題が発生します。
アプローチ2:
上記の問題を検索しているときに、coderholic.comからブラックベリーのWebBitmapFieldに出くわしました。
そして、drawRow()メソッドから以下のコードを使用しています。WebBitmapFieldを理解しているので、ここではオブザーバーデザインパターンを使用しており、画像はUIスレッド以外のスレッドを介してダウンロードされています。5や10のように行数が限られている場合は正常に機能しますが、描画する行数が多い場合は、行TooManyThreads
ごとに新しいスレッドが作成されるため、例外がスローされます。
私はこのリンクtaskworker-thread-blackberryを持っていますが、私の要件を達成する方法についてはあまり明確ではありません。
私が理解しているように、ブラックベリーでは、アプリケーションは最大16個のスレッドを作成できます。だから、今私は信じています。最大サイズを10に指定するスレッドプールを作成する必要があるかもしれません。
誰かが私の現在の問題のためにブラックベリーのスレッドプールを理解して実装するのを手伝ってもらえますか?
また、私の要件に合う他の最善のアプローチを教えてくれた人に感謝します。
前もって感謝します。