Android中的自定义最大异步任务

Posted

技术标签:

【中文标题】Android中的自定义最大异步任务【英文标题】:Custom max asyncTasks in Android 【发布时间】:2020-04-03 19:25:28 【问题描述】:

我正在创建一个应用程序,它需要同时执行 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 个

【问题讨论】:

【参考方案1】:

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 SynchronousQueue<Runnable>());
        task.executeOnExecutor(executor, params);
     else 
        task.execute(params);
    

【讨论】:

以上是关于Android中的自定义最大异步任务的主要内容,如果未能解决你的问题,请参考以下文章

Android AsyncTask异步任务的使用

异步任务进度对话框需要很长时间才能完成 android 中的简单任务

在android中链接2个异步任务的正确方法

020 异步任务

Android-异步任务-AsyncTask

Android源代码解析之--&gt;异步任务AsyncTask