显然,所有AsyncTask
共享一个帖子:
从HONEYCOMB开始,任务在单个线程上执行,以避免因并行执行而导致的常见应用程序错误。
IntentService
获取一个帖子并依次处理每个Intent
:
所有请求都在一个工作线程上处理 - 它们可能需要多长时间(并且不会阻止应用程序的主循环),但一次只能处理一个请求。
但是如果我有多个IntentService
s,每个都有自己的线程吗?或者Android只使用一个所有IntentService
共享的线程?
答案 0 :(得分:3)
显然,所有AsyncTasks共享一个线程:
默认情况下,是的。使用executeOnExecutor()
选择加入线程池。在the documentation中,引用后的下一段是:
如果您真的想要并行执行,可以使用THREAD_POOL_EXECUTOR调用executeOnExecutor(java.util.concurrent.Executor,Object [])。
但是如果我有多个IntentServices,每个都有自己的线程吗?
是。 source code to IntentService
表示它在HandlerThread
中创建了自己的onCreate()
。