0

ハンドラー メッセージ キューはどのように機能しますか? メッセージキューが初期化されたスレッドに関連付けられているという事実を知っています.2つのタスク(Webからの各ダウンロード)があり、ハンドラーから非同期タスクを開始すると、2つのタスクがそれぞれ1つずつ実行されます同時実行?

キューがどのように機能するかを理解する必要があります..誰か助けてください!:)

4

1 に答える 1

0

まずAsyncTask、UI スレッドでのみ実行できます。したがって、2 つの別個のハンドラー (それぞれに 1 つAsyncTask) がある場合でも、それらは両方とも UI スレッドに関連付けられている必要があります。

セカンダリとして、複数のAsyncTaskインスタンスを同時にまたは 1 つずつ実行できます。APIのバージョンによって異なります。これに関するドキュメントを読むことをお勧めします。

public final AsyncTask execute (Params... params)

指定されたパラメーターでタスクを実行します。呼び出し元がそれへの参照を保持できるように、タスクはそれ自体 (this) を返します。

注: この関数は、プラットフォームのバージョンに応じて、単一のバックグラウンド スレッドまたはスレッドのプールのキューにタスクをスケジュールします。最初に導入されたとき、AsyncTasks は単一のバックグラウンド スレッドでシリアルに実行されました。DONUT 以降、これはスレッドのプールに変更され、複数のタスクが並行して動作できるようになりました。HONEYCOMB を開始すると、並列実行によって引き起こされる一般的なアプリケーション エラーを回避するために、タスクは単一のスレッドで実行されるように戻ります。本当に並列実行が必要な場合は、このメソッドの executeOnExecutor(Executor, Params...) バージョンを THREAD_POOL_EXECUTOR で使用できます。ただし、その使用に関する警告については、解説を参照してください。

于 2012-10-11T16:33:30.307 に答える