处理程序消息队列如何工作?我知道消息队列与初始化它的线程相关联。如果我有 2 个任务(每个从网络下载),并且我从处理程序启动一个异步任务,每个任务一个,这 2 个任务同时执行?
我只需要了解,队列是如何工作的..有人可以帮忙吗!:)
首先,AsyncTask
只能在UI线程上执行。因此,即使您有两个单独的处理程序(每个处理程序一个AsyncTask
),它们也应该都与 UI 线程相关联。
其次,几个AsyncTask
实例可以同时运行,也可以一个接一个地运行。这取决于 API 版本。最好阅读有关此的文档:
public final AsyncTask 执行(参数...参数)
使用指定参数执行任务。任务返回自身(this),以便调用者可以保留对它的引用。
注意:此函数根据平台版本将任务安排在单个后台线程或线程池的队列中。首次引入时,AsyncTask 在单个后台线程上串行执行。从 DONUT 开始,这被更改为允许多个任务并行运行的线程池。从 HONEYCOMB 开始,任务恢复到在单个线程上执行,以避免并行执行导致的常见应用程序错误。如果你真的想要并行执行,你可以使用这个方法的 executeOnExecutor(Executor, Params...) 版本和 THREAD_POOL_EXECUTOR; 但是,请参阅那里的评论以获取有关其使用的警告。