在android中哪个线程的消息队列绑定了一个处理程序?

时间:2017-02-22 06:45:06

标签: android handlers

我知道处理程序绑定到创建它的线程的消息队列,但是如果我在服务中创建一个处理程序并发布在我的服务绑定到的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
    }
};

有人可以解释一下这里发生了什么吗?

2 个答案:

答案 0 :(得分:0)

请在下面的链接中找到有关Message Queue和Looper的信息

Understanding Android Core: Looper, Handler, and HandlerThread

在Android中通过LooperHandlerHandlerThread。系统可视化为车辆,如文章封面所示。

1. MessageQueue是一个队列,其中包含应该处理的称为消息的任务。

2. Handler使用MessageQueueLooper中的任务排入队列,并在任务来自MessageQueue时执行。

3. Looper是一个使线程保持活动状态的工作者,遍历MessageQueue并将消息发送到相应的处理程序进行处理。

4最后,通过调用Looper’s quit()方法终止线程。

答案 1 :(得分:0)

默认情况下,服务将在UI Thread上运行。因此,您在服务上创建的处理程序将在UI Thread

上发布runnable