我知道处理程序绑定到创建它的线程的消息队列,但是如果我在服务中创建一个处理程序并发布在我的服务绑定到的activity中声明的runnable会怎样。 例如: 在服务中: -
Handler handler=new Handler();
handler.post(Mainactivity.runnable);
In activity inside oncreate method:-
Runnable runnable=new Runnable(){
public void run{
//some code here
}
};
有人可以解释一下这里发生了什么吗?
答案 0 :(得分:0)
请在下面的链接中找到有关Message Queue和Looper
的信息
Understanding Android Core: Looper, Handler, and HandlerThread
在Android中通过Looper
,Handler
和HandlerThread
。系统可视化为车辆,如文章封面所示。
1. MessageQueue
是一个队列,其中包含应该处理的称为消息的任务。
2. Handler
使用MessageQueue
将Looper
中的任务排入队列,并在任务来自MessageQueue
时执行。
3. Looper
是一个使线程保持活动状态的工作者,遍历MessageQueue
并将消息发送到相应的处理程序进行处理。
4最后,通过调用Looper’s
quit()方法终止线程。
答案 1 :(得分:0)
默认情况下,服务将在UI Thread
上运行。因此,您在服务上创建的处理程序将在UI Thread