1

私はAndroidHoneyCombを使用しています。いくつかのタスクを並行して実行する必要があり、AsyncTaskの パブリックファイナルAsyncTask executeOnExecutor(Executor exec、Params ... params)メソッドを使用しています。次に、ArrayList.Iは、arrayList内のすべての値を並べ替えて、UIに表示する必要があります。ここで、私の質問は、スレッドの1つが他のスレッドよりも早く完了した場合、すぐにonPostExecuteメソッドを呼び出すか 、 onPostExecuteメソッドが呼び出されるかです。すべてのバックグラウンドスレッドが完了した後?私のプログラムの実装は、ここで何が発生するかによって異なります。

4

2 に答える 2

3

今.....そのように...

AsyncTaskUIスレッドを同期し、非UIの出力は非UIスレッドで機能します。

onPreExecute()非UI作業が開始する前にUI thread、で呼び出されます。

次に、非UIスレッドの回転を実行します。このとき、doInBackground() 同時にonProgressUpdate(Progress...)実行し続けます。しかし、その実行については非常に予測不可能です。

doInBackground()のonPostExecute() UIスレッドで実行されます。

詳細については、次のリンクを参照してください。

http://developer.android.com/reference/android/os/AsyncTask.html

于 2012-09-03T09:31:48.010 に答える
1

onexecuteExecutorを使用すると並列実行が可能になりますが、postexecuteは、終了するとすぐに各非同期タスクによって呼び出されます。

ただし、asynctaskはそれ自体を返すので、必要に応じてどれがどれであるかを認識し、それらの戻り順序を追跡できます。

ドキュメント

複数のスレッドからの配列リストの管理については、ベクターがフェイルファスト動作と同期しているので、ベクターを確認する必要があると思います。http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html

于 2012-09-03T09:52:57.660 に答える