必须从主线程创建并执行AsyncTask 在Worker线程上运行。但是,可以调用主线程方法 之间发布进展。
那么处理程序呢?可以从任何线程创建处理程序吗?在哪个线程处理程序上运行?处理程序如何与线程方面的asynctask不同?
What is the difference between AsyncTask and Handlers and which one would be better to use in Listview? ..这里提到 - The Handler is associated with the application’s main thread. it handles and schedules messages and runnables sent from background threads to the app main thread.
..如果处理程序在主线程上运行,那么它如何从后台线程调度消息?
答案 0 :(得分:4)
当你创建一个新的Handler时,它被绑定到正在创建它的线程的线程/消息队列 - 从那时起,它将消息和runnables传递给该消息队列并在它们出现时执行它们消息队列。
这意味着您使用处理程序运行的所有内容都将在创建处理程序的线程中运行。
为了更好地理解,请阅读本文:Processes and Threads
答案 1 :(得分:1)
主线程是UI更新的线程。工作线程是除主线程之外的任何线程。是的,可以在任何线程中创建处理程序,它与创建它的线程相关联。请参阅Handler。