これは確かにAndroidバージョン間のGoogleの互換性の問題であるため、私の質問が却下された理由はわかりません。
次のヘルパークラスを使用して、asynkタスクを実行しました。
public class AsyncTaskExecutionHelper {
static class HoneycombExecutionHelper {
public static <P> void execute(AsyncTask<P, ?, ?> asyncTask, boolean parallel, P... params) {
Executor executor = parallel ? AsyncTask.THREAD_POOL_EXECUTOR : AsyncTask.SERIAL_EXECUTOR;
asyncTask.executeOnExecutor(executor, params);
}
}
public static <P> void executeParallel(AsyncTask<P, ?, ?> asyncTask, P... params) {
execute(asyncTask, true, params);
}
public static <P> void executeSerial(AsyncTask<P, ?, ?> asyncTask, P... params) {
execute(asyncTask, false, params);
}
private static <P> void execute(AsyncTask<P, ?, ?> asyncTask, boolean parallel, P... params) {
if (Build.VERSION.SDK_INT >= 11) {
HoneycombExecutionHelper.execute(asyncTask, parallel, params);
} else {
asyncTask.execute(params);
}
}
}
次の方法でasynkタスクを呼び出します。
CustomAsynkTas customTask = new CustomAsynkTask();
AsyncTaskExecutionHelper.executeParallel(customTask);
どこ
CustomAsynkTask extends AsyncTask
{
//etc
}
テスト済みで、すべてのAndroidバージョンで動作します。