Andoid Studio中的自定义max asyncTasks

问题描述 投票:1回答:1

我正在创建一个应用,它需要同时执行128个任务。我已经读到最大值是128,但是在我的模拟器上最多只能做到20。如何使他执行更多操作或如何编辑最大异步任务?

一些信息:API 29

我用这种方法打电话给他们:

@TargetApi(11)
static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task, T... params) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
    } else {
        task.execute(params);
    }
}

应该可以使用,但只能同时运行20个

java android android-studio android-asynctask
1个回答
0
投票

AsyncTask.THREAD_POOL_EXECUTOR的默认最大线程池大小为20,这就是为什么您看不到同时执行的线程池的原因。

如果您想要更大的池大小,则可以定义自己的Executor

@TargetApi(11)
static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task, T... params) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        Executor executor = new ThreadPoolExecutor(1, 128,
                                  5, TimeUnit.SECONDS,
                                  new LinkedBlockingQueue<Runnable>());
        task.executeOnExecutor(executor, params);
    } else {
        task.execute(params);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.