1

まだ試していませんが、理論的な観点から、疑問を解消するためにこの質問をしています。

次のようなシナリオがあります: 1. サーバーにリクエストを送信し、JSONレスポンスを受信します。AsyncTask応答の受信に遅延が生じる可能性があるため、このために使用しています。2. このレスポンスから画像 URL を取得します。3. もう 1 つ を使用しAsyncTaskて、画像の URL を呼び出し、画像をフェッチします。(ここでも画像の取得に時間がかかる場合があります)

その画像を取得するためだけに 2 つの AyncTask を使用するのは効率が悪いと思いますか。または、ステップ 1 で、AsyncTask を使用する代わりに、コードを順番に実行し、代わりに Timeout を設定します。

提案してください。

4

2 に答える 2

1

私は先に進み、これを答えとして提案します。これはもともと私のコメントにありました:

JSON を取得しているのと同じ AsyncTask で同期的に画像を取得するだけです。例えば:

doInBackground(Void...params){
    //fetch JSON
    // once JSON is fetched, fetch image
}
于 2012-10-10T20:53:50.030 に答える
0

これを正確にどのように構成したいかはわかりませんが、ドキュメントには次のように記載されています。

execute(Params...) must be invoked on the UI thread.

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

そのため、他の非同期タスク バックグラウンド メソッドから新しい非同期タスクを実行することはできません。

プログレス メソッドからこれを実行しようとしても、HONEYCOMB 非同期タスクはシリアル化されるため、2 番目の非同期タスクはとにかくキューに入れられます。THREAD_POOL_EXECUTOR を使用して並列実行する必要があります。

于 2012-10-10T20:47:09.300 に答える