android - 如何将 ExecutorService 与 Android AsyncTask 一起使用?

标签 android multithreading asynchronous android-asynctask executorservice

我需要执行一些 AsyncTask s 然后收集他们所有的结果,合并,然后将最终结果返回给我的用户。

我正在寻找一种方法来管理多个 AsyncTask在 Android 中。我正在考虑使用 ExecutorService来自 Java 并发包,但我卡住了,因为 ExecutorService仅接受 Runnables 或 Callables。为了确定我的要求,我可以使用

ExecutorService.invokeAll((Collection<? extends Callable<T>> tasks)

invokeAll()方法将返回 List<Future><V>> 的列表只有当所有提交的任务都完成时,我才能从相应的 Future 中获取每个任务的结果。 .

ExecutorService一切顺利期待它不接受 AsyncTask 的事实.

还有其他方法可以使用AsyncTask吗?和 ExecutorService或者,如果您可以,请推荐一种不同的方法。

最佳答案

创建一个 AsyncTask 并从 doInBackground() 启动您的线程。完成后,收集、合并等数据并将其返回。然后您可以在 onPostExecute 中使用它来更新 UI。启动太多线程会消耗内存,所以你应该考虑它们是否真的需要并行运行。

关于android - 如何将 ExecutorService 与 Android AsyncTask 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492953/

相关文章:

javascript - nodejs 是否支持多线程?

javascript - 通过回调将值传递给父函数

C#异步套接字问题

android - 计算用户看到了多少 RecyclerView 项目

android - 将 @Path 和 @Url 参数与 retrofit2 一起使用

android - 有没有办法从主要 Activity 中隐藏特定的 ListView 项目?

c++ - 如何在 visual studio 2010 中使用 "activate"c++11 标准?

java - 了解泛型以及类型检查的工作原理

c# - 如何在非表单应用程序中生成击键

node.js - 如何在 Node.js 中仅在所有网页抓取请求完成后才渲染页面?