【问题标题】:What is the Default Execution Manner of AsyncTasks in Android?Android中AsyncTasks的默认执行方式是什么?
【发布时间】:2015-09-21 14:24:43
【问题描述】:

android Asynctask 在不同的 API 级别之间被频繁修改。我正在开发一个应用程序,我必须在其中将图像上传到 FTP 服务器。我想按序列化顺序执行此操作(图像一个接一个地上传,每个 asyntask 一个图像上传)。我了解SERIAL_EXECUTORTHREAD_POOL_EXECUTOR 的东西,但我只是想弄清楚异步任务的默认行为是什么(我的最低目标API 是ICS 4.0)。如果我只是简单地在一个循环中执行说 10 个异步,它们会进入线程队列并一个接一个地执行,还是只是并行执行?

【问题讨论】:

  • 如果你自己控制线程,我认为,直接使用Thread类和Handler类可能是捷径。一切尽在您的掌控之中!

标签: android multithreading android-asynctask


【解决方案1】:

查看AsyncTask 文档:

首次引入时,AsyncTasks 是在一个单一的串行执行的 后台线程。从DONUT 开始,这里改为池 允许多个任务并行运行的线程数。开始 使用HONEYCOMB,任务在单个线程上执行以避免 并行执行导致的常见应用程序错误。

如果你真的想要并行执行,你可以调用 executeOnExecutor(java.util.concurrent.Executor, Object[])THREAD_POOL_EXECUTOR.

因此,最小目标为 14,它们将被序列化。

【讨论】:

    【解决方案2】:

    您不能在doInBackground() 内使用一个带有循环的异步任务吗?如果您想控制它们,可以在第一个 onPostExecute() 中调用第二个异步任务。

    【讨论】:

    • 那是:异步任务内部循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多