【发布时间】:2014-12-07 15:36:28
【问题描述】:
我正在开发一个 Android 应用程序,但我遇到了问题。当我通过异步任务从 Internet 执行一个进程时,我无法同时从不同的线程运行另一个 Internet 进程。在第一个过程结束之前,另一个过程不会开始。异步任务启动,但 http 请求等待另一个。
我该如何处理这个问题?
谢谢
【问题讨论】:
标签: android android-asynctask androidhttpclient
我正在开发一个 Android 应用程序,但我遇到了问题。当我通过异步任务从 Internet 执行一个进程时,我无法同时从不同的线程运行另一个 Internet 进程。在第一个过程结束之前,另一个过程不会开始。异步任务启动,但 http 请求等待另一个。
我该如何处理这个问题?
谢谢
【问题讨论】:
标签: android android-asynctask androidhttpclient
您可能正在使用execute() 来运行您的AsyncTask。引用the AsyncTask JavaDocs:
首次引入时,AsyncTask 是在单个后台线程上串行执行的。从 DONUT 开始,这被更改为允许多个任务并行运行的线程池。从 HONEYCOMB 开始,任务在单线程上执行,以避免并行执行导致的常见应用程序错误。
如果你真的想要并行执行,你可以使用 THREAD_POOL_EXECUTOR 调用 executeOnExecutor(java.util.concurrent.Executor, Object[])。
或者,使用提供异步操作的 HTTP 库作为库本身的一部分,例如 OkHttp。
【讨论】: