備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

API 4+ (Android 1.6+)でAsyncTaskのexecuteメソッドを使用しても並列処理にならない現象

動画をダウンロード出来るアプリ開発時に、AsyncTaskを使用して並列処理をしようと思ったのですが、HoneyCombo(API 11)以上の端末では2つめ以降のtaskが開始されないという現象が起きました。
問題は、executeメソッドで、HoneyCombo ( API 11 )以上はexecuteOnExecutorを使用するようです。
サンプルはこちら

@TargetApi(Build.VERSION_CODES.HONEYCOMB) // API 11
void startMyTask(AsyncTask asyncTask) {
  if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
  else
    asyncTask.execute(params);
}

これで無事に並列処理を行う事が出来ました〜stackoverflow.com