2

AsyncTaskクラス外からの戻り値を処理したい。

たとえば、を使用する欠点はありますLocation loc = TheClass.execute().get();か? 代わりにクラス内で
結果を処理する必要がありますか?onPostExecute

4

4 に答える 4

2

get() メソッドは適切なメソッドではありません。UI スレッドが停止したためです。

于 2012-06-19T09:10:04.137 に答える
1

開始した操作が完了したことを保証できる唯一の場所doInBackground()は、コールバック メソッドonPostExecute()です。したがって、 get() を使用することは、それほど賢明な考えではありませんAsyncTask

于 2012-06-19T09:12:03.527 に答える
0

get() は、結果が来るまで (現在のスレッド) を待機させ、onPostExecute が非同期的に機能し、バックグラウンド作業が完了したときにコールバックのように機能します。

http://developer.android.com/reference/android/os/AsyncTask.html#get()

public final Result get ()

必要に応じて計算が完了するまで待機し、その結果を取得します。

于 2012-06-19T09:08:06.417 に答える
0
get()

get() の目的は、結果が得られるまでブロックすることです。これは、たとえば、1 つのタスクが別のタスクを使用する複数のタスクがある場合に役立ちます。あるタスクが別のタスクを開始し、get() を呼び出して、そのタスクが完了するのを待ってから、独自の作業を続行することができます。

onPostExecute (Result result)

doInBackground(Params...) の後に UI スレッドで実行されます。指定された結果は、doInBackground(Params...) によって返される値です。

タスクがキャンセルされた場合、このメソッドは呼び出されません。

于 2012-06-19T09:11:56.367 に答える