Handler、Loop、MessageQueue的工作原理:
先介绍一下这几个组件:
Message:Handler接收和处理的消息对象
Looper:读取MessageQueue中的消息,并将读到的消息发送给Handler进行处理
MessageQueue:消息存储队列。
程序使用Handler发送消息,被发送的消息必须被指定到MessageQue...
分类:
移动开发 时间:
2015-04-22 22:17:14
阅读次数:
247
MainActivity中有一个按钮,绑定了save方法public void save(View view) { String title = titleText.getText().toString(); String timelength = lengthText....
分类:
移动开发 时间:
2015-04-18 23:40:08
阅读次数:
251
我是在用okhttp的请求数据,在处理数据的时候,打开了一个dialog用来提示,然后报了这个错误。
经过调试,发现错误原因是: dialog必须在一个被Looper.prepare()回调的的线程里创建,但是okhttp这个线程不具备这个条件
OkHttpUtil.getDataInGet(updateUrl, new Callback() {
@Overri...
分类:
Web程序 时间:
2015-04-17 15:41:58
阅读次数:
186
在主UI线程中,系统已经初始化了一个Looper对象,因此程序直接创建Handler即可,然后公告handler来发送消息,处理消息。
程序猿自己启动的子线程,程序猿必须自己创建一个Looper对象,并且启动它,创建looper对象调用他的prepare()方法即可。该方法
保证每一个线程最多只有一个Lopper对象
调用Looper的prepare()方法为当前线程创建Looper对象,创...
分类:
移动开发 时间:
2015-04-10 11:35:06
阅读次数:
168
摘要 andriod提供了 Handler 和 Looper 来满足线程间的通信。例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的。正文图解:代码示例:/** * @author allin.dev * ht...
分类:
移动开发 时间:
2015-04-08 19:30:04
阅读次数:
196
关于这几个之间的关系以及源码分析的文章应该挺多的了,不过既然学习了,还是觉得整理下,印象更深刻点,嗯,如果有错误的地方欢迎反馈。 转载请注明出处:http://www.cnblogs.com/John-Chen/p/4396268.html对应关系:1、Handler不带Looper的构造器 ...
分类:
其他好文 时间:
2015-04-06 18:31:48
阅读次数:
149
Looper,Handler,Message三者是我们常常用来再子线程跟新UI的,我们把Message发给Handler,然后,handler调用HandlerMessage()方法,我们在这个方法里面更新UI。那么Looper呢,又是什么,下面我来给大家介绍一下三者的关系。
首先要说明的是,每个线程最多只有一个Looper,在线程里面调用Looper.prepare()就是为这个线程设置了一个...
分类:
移动开发 时间:
2015-04-05 20:34:34
阅读次数:
161
android应用ui是绘制在主线程中的,这个线程就是ActivityThread。
但实际上看源码发现ActivityThread并没有继承自Thread,而是一个独立的类,只是在其main方法中开了一个Looper循环消息,不断接收处理发到主线程里面的消息,比如performLaunchActivity.
而ApplicationThread也不是一个Thread,是一个Binder...
分类:
移动开发 时间:
2015-04-05 16:02:59
阅读次数:
113
熟悉Looper源码的朋友可能知道,looper与线程绑定并不是直接set进去的,而是通过ThreadLocal这个东西间接将looper的引用交给当前线程持有的。
Looper.java
private static void prepare(boolean quitAllowed) {
if (sThreadLocal.get() != null) {
...
分类:
其他好文 时间:
2015-04-05 09:10:04
阅读次数:
127
Android中消息传递模块差不多看了好几次,虽然每次看的方式都差不多但是还是发觉的到每次看了之后,理解的更清晰一点。
关于这个模块的文章数不胜数,但是最重要的还是自己动手理解一遍更好。
会牵扯到的几个类: Handler.java , Looper.java , MessageQueue.java , Message.java
源代码路径:
xxx/frameworks/base/...
分类:
移动开发 时间:
2015-04-04 16:45:50
阅读次数:
171