Handler 与 Looper

在RemoteDisplay构造时,

mLooper(new ALooper),  ALooper会新建一个thread, 然后负责消息的分发,

通过registerHander 来指定message的处理, 一个looper可以注册多个handler,

mLooper->registerHandler(mSource);

looper()->registerHandler(playbackSession);.........

而消息发到底由谁处理, 则是构造AMessage时通过第二个参数来指定message的handler对象

sp<AMessage> notify = new AMessage(kWhatPlaybackSessionNotify, this);

在wfd 中, mediaplayerservice通过remotedisplay new ALooper, 然后通过ALooper这个新线程

来处理wfd 对象相关的message, 基本所有代码功能都是通过消息机制来调用

但有部分setparam功能及回调功能是运行在别的线程中,与ALooper消息处理不是同一个线程

时间: 2024-11-21 01:52:21

Handler 与 Looper的相关文章

Handler、Looper消息传递机制

一.Handler消息传递机制初步认识: (一).引入: 子线程没有办法对UI界面上的内容进行操作,如果操作,将抛出异常:CalledFromWrongThreadException 为了实现子线程中操作UI界面,Android中引入了Handler消息传递机制,目的是打破对主线程的依赖性. 什么是Handler? handler通俗一点讲就是用来在各个线程之间发送数据的处理对象.在任何线程中,只要获得了另一个线程的handler,则可以通过  handler.sendMessage(messa

handler与looper的关系及HandlerThread

做了也快2年的android了,发现android的机制还不是很了解,这几天看了一下这方面的介绍,总结一下handler的用法和机制. handler就是用来线程之间通信的,主线程与子线程.一般的用法是,子线程通知ui主线程的handler去刷新ui操作.最近遇到一些人,问能不能主线程去通知子线程的handler. 当然是可以的.贴一个例子 package cc.c; import android.app.Activity; import android.os.Bundle; import an

Android开发之Handler和Looper的关系

关于Handler的总结. Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理. Handler:处理者,负责Message的发送及处理.使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等. MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行.当然,存放Message并非实际意义的保存,而

Handler,Looper,MessageQueue,Message总结

转载部分来自: http://gundumw100.iteye.com/blog/858233 转载部分对于应用层非常简洁明了 原创部分是基于Android4.4源代码,有什么错误或不足,欢迎指正 转载部分: 一.几个关键概念 1.MessageQueue:是一种 数据 结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最多只可以拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自动 创建其MessageQueue.通常使用一个Looper对象对该线程的Messag

Android Handler,Looper,Message

做一个简单的关于Handler,Looper,Message的小演示,代码主界面一个Button按钮,点击发送消息(累计)给线程的Looper循环,然后在LogCat中打印出来: package zhangphil.looper; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; imp

android handler、looper、message、messageQueue、

一:handler,looper,message,messagequeue,thread handler: 消息处理着,负责Message消息的发送(handler.sendMessage(....))以及处理消息,对于handler处理消息则需要实现handlerMessage(Message msg)该方法,通过该方法处理特定的消息,例如ui的更细 looper:消息泵,用来从messageQueue中抽取消息,所以一个looper对应一个messageQueue: message:消息,m

Android 之异步任务(AsyncTask,Handler,Message,looper)

AsyncTask: 3个类型(Params,Progress和Result),4个步骤(onPreExecute(),doInBackground(Params…),onProgressUpdate(Progress…), onPostExecute(Result) ) Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理. 首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异

谈谈我对Android中的消息机制的理解之Handler,Looper和MessageQueue的解释

Handler的作用是:发送Message和处理Message,handler发送的Message其实就是发送给自己的对象进行处理,所以谁发送就是谁处理,但是这个绝对有意义,以为这样我们就可以通过Handler将消息的处理从一个线程转到另一个线程了,这个Message几经转手之后,处理它的对象虽然是同一个,但是处理它的线程就变了,变成了创建Handler对象的线程,而不是产生Message对象的线程(当然,这个两个线程可能是一个,但是这样使用handler就是第二个目的了),使用handler的

【Android】Handler、Looper源码分析

一.前言 源码分析使用的版本是 4.4.2_r1. Handler和Looper的入门知识以及讲解可以参考我的另外一篇博客:Android Handler机制 简单而言:Handler和Looper是对某一个线程实现消息机制的重要组成部分,另外两个重要元素是Message和MessageQueue,通过这四个类,可以让某个线程具备接收.处理消息的能力. 二.源码剖析 虽然只有四个类,而且这里只是剖析其中两个,但是也不能独立分析,必须组合进行解析.切入点是类Looper的注释中的一段示例代码: 1

从Handler+Message+Looper源码带你分析Android系统的消息处理机制

引言 [转载请注明出处:从Handler+Message+Looper源码带你分析Android系统的消息处理机制 CSDN 废墟的树] 作为Android开发者,相信很多人都使用过Android的Handler类来处理异步任务.那么Handler类是怎么构成一个异步任务处理机制的呢?这篇 博客带你从源码分析Android的消息循环处理机制,便于深入的理解. 这里不得不从"一个Bug引发的思考"开始研究Android的消息循环处理机制.说来话长,在某一次的项目中,原本打算开启一个工作线