私はAndroidHoneyCombを使用しています。いくつかのタスクを並行して実行する必要があり、AsyncTaskの パブリックファイナルAsyncTask executeOnExecutor(Executor exec、Params ... params)メソッドを使用しています。次に、ArrayList.Iは、arrayList内のすべての値を並べ替えて、UIに表示する必要があります。ここで、私の質問は、スレッドの1つが他のスレッドよりも早く完了した場合、すぐにonPostExecuteメソッドを呼び出すか 、 onPostExecuteメソッドが呼び出されるかです。すべてのバックグラウンドスレッドが完了した後?私のプログラムの実装は、ここで何が発生するかによって異なります。
2 に答える
今.....そのように...
AsyncTask
UIスレッドを同期し、非UIの出力は非UIスレッドで機能します。
onPreExecute()
非UI作業が開始する前にUI thread
、で呼び出されます。
次に、非UIスレッドの回転を実行します。このとき、doInBackground()
同時にonProgressUpdate(Progress...)
実行し続けます。しかし、その実行については非常に予測不可能です。
doInBackground(
)の後、onPostExecute()
UIスレッドで実行されます。
詳細については、次のリンクを参照してください。
http://developer.android.com/reference/android/os/AsyncTask.html
onexecuteExecutorを使用すると並列実行が可能になりますが、postexecuteは、終了するとすぐに各非同期タスクによって呼び出されます。
ただし、asynctaskはそれ自体を返すので、必要に応じてどれがどれであるかを認識し、それらの戻り順序を追跡できます。
複数のスレッドからの配列リストの管理については、ベクターがフェイルファスト動作と同期しているので、ベクターを確認する必要があると思います。http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html