0

この質問は、スタック オーバーフローhow-to-download-images-asynchronously-from-web-serverに関する以前の質問の続きです。ブラックベリーで非同期リストを作成するのに苦労しています。今では私にとってはうまくいっています。しかし、それは今私に別の問題を与えています。

これまでに行ったこと

  1. XML フィードから値を取得するリスト ビューを作成しました
  2. リストはデフォルトのサムネイルで読み込まれます
  3. を作成RunnableFactoryし、スレッド プールのサイズを 5 に制限してから、ランナブルを追加しました。実行可能なオブジェクトには、サーバーからイメージをダウンロードする機能があります。
  4. これで、リストは非同期で完全に正常にロードされます。

問題のシナリオ

リスト画面のロード時に、リストの初期化を行ってRunnableFactoryからダウンロードを開始し、リスト内のイメージをレンダリングします。しかし、リストに50行あるとしましょう。そして今、10 個の画像が正常にダウンロードされ、RunnableFactory はまだ動作中です。この時点で戻るキーを押してから、[次へ] をクリックします。実際には、リスト画面に来て、もう一度ダウンロードプロセスを新たに開始する必要があります. しかし、それはIllegalThredState 例外をスローしています

この問題に関する私の仮定

すべてのスレッドが実行されているため、戻るキーを押したときにすべてのスレッドをキャンセルする必要がある場合があります。これが問題である場合は、どうすればよいか教えてください。複数のスレッドを作成したので、どうすればすべてのスレッドを停止してから戻ることができますか?

これは、より複雑なシステムのように見えます。この問題の解決策として他に何が考えられるかを理解するのを手伝ってくれる人はいますか?

4

2 に答える 2

1

実行が終了した後、スレッドを 2 回目に開始しようとしたときに、この例外が発生しました。スレッドは、いったん開始されると再開できません。

于 2012-06-12T08:12:32.427 に答える
0

トレッドプールを使用している場合はシャットダウンします。それ以外の場合は、すべてのトレッドを中断して戻ることができます。

于 2012-06-11T17:31:38.470 に答える