Looper】的更多相关文章

Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取出消息后要对消息进行处理:Handler 平时我们最常使用的就是Message与Handler了,如果使用过HandlerThread或者自己实现类似HandlerThread的东西可能还会接触到Looper,而MessageQueue是Looper内部使用的,对于标准的SDK,我们是无法实例化并使…
什么时候需要 Looper Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用,使用Looper.prepare()和Looper.loop()创建了消息队列就可以让消息处理在该线程中完成. 使用Looper需要注意什么 写在Looper.loop()之后的代码不会被立即执行,当调用后mHandler.getLoo…
在开始讨论android的消息处理机制前,先来谈谈一些基本相关的术语. 通信的同步(Synchronous):指向客户端发送请求后,必须要在服务端有回应后客户端才继续发送其它的请求,所以这时所有请求将会在服务端得到同步,直到服务端返回请求.  通信的异步(Asynchronous):指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求. 所谓同步调用,就是在一个函数或方法调用时,没有得到结果之前,该调用就不返回,直到返回结果.异步调用和同步是相对的,在一个异步调用发起后,被调用者立即返…
重新去学习回顾looper和handler ,还是需要重新认识这个经常使用的机制. 我首先是看任玉刚老师的书<android的开发艺术探索>的第十章. 里面一句话开始说出了我们大概的理解——handler的使用就是将一个人物切换到handler 所在的线程去执行. 在里面,我们需要理解handler运行需要两个底层looper 和 messagequeue messagequeue,叫做消息队列,但是存储的不是真正的队列,而是单链表. looper,使用来处理消息,而且对应也是每个对应线程的一…
PS:由于感冒原因,本篇写的有点没有主干,大家凑合看吧.. 学习内容: 1.MessageQueue,Looper,MessageQueue的作用. 2.子线程向主线程中发送消息 3.主线程向子线程中发送消息     异步消息处理机制是Android提供给我们异步更新UI的一种很好的方式,线程之间以Handler作为桥梁,使得Message可以在线程间进行传递,从而实现异步的一种方式. 1.MessageQueue   MessageQueue顾名思义,指的就是消息队列,说这个之前我们首先需要知…
分析: Looper:prepare和loop public static final void prepare() { if (sThreadLocal.get() != null) { throw new RuntimeException("Only one Looper may be created per thread"); } sThreadLocal.set(new Looper(true)); } 由上述方法可知,第5行新建一个Looper实例然后添加到sThreadLo…
今天代码写着写着就莫名闪退了,手机也没有“程序停止运行”的提示,logcat也没有看到蓝色的调用栈log,这样的闪退最是蛋疼了,还好必现.复现几次之后,终于从logcat中看到了一行可疑的log: A/Looper: Could not create epoll instance. errno=24 ,看起来又是在native层闪退了.本文就把这个问题的分析解决过程记录了下来. 方法论 遇见没填过的坑,第一反应就是Google之,果然前几个结果中一个 Stack Overflow的问答 就为这个…
在子线程中new一个Handler为什么会报以下错误? java.lang.RuntimeException:  Can't create handler inside thread that has not called Looper.prepare()  这是因为Handler对象与其调用者在同一线程中,如果在Handler中设置了延时操作,则调用线程也会堵塞.每个Handler对象都会绑定一个Looper对象,每个Looper对象对应一个消息队列(MessageQueue).如果在创建Ha…
转自 http://www.cnblogs.com/angeldevil/p/3340644.html Android消息处理机制(Handler.Looper.MessageQueue与Message)   Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取出消息后要对消息进行处理:Handler 平时我们最常使用的就是Message与Handl…
1. 什么是消息队列 消息队列在android中对应MessageQueue这个类,顾名思义,消息队列中存放了大量的消息(Message) 2.什么是消息 消息(Message)代表一个行为(what)或者一串动作(Runnable),有两处会用到Message:Handler和Messenger 3.什么是Handler和Messenger Handler大家都知道,主要用来在线程中发消息通知ui线程更新ui.Messenger可以翻译为信使,可以实现进程间通信(IPC),Messenger采…