关于这几个之间的关系以及源码分析的文章应该挺多的了,不过既然学习了,还是觉得整理下,印象更深刻点,嗯,如果有错误的地方欢迎反馈。 转载请注明出处:http://www.cnblogs.com/John-Chen/p/4396268.html对应关系:1、Handler不带Looper的构造器 ...
分类:
其他好文 时间:
2015-04-06 18:31:48
阅读次数:
149
Android中消息传递模块差不多看了好几次,虽然每次看的方式都差不多但是还是发觉的到每次看了之后,理解的更清晰一点。
关于这个模块的文章数不胜数,但是最重要的还是自己动手理解一遍更好。
会牵扯到的几个类: Handler.java , Looper.java , MessageQueue.java , Message.java
源代码路径:
xxx/frameworks/base/...
分类:
移动开发 时间:
2015-04-04 16:45:50
阅读次数:
171
Android开发中,Handler用的非常多,因为它和AsyncTask一样是系统提供给我们的异步的通信机制。能够将一些更新和别的不适合放在UI主线程的操作放到它们中去。
Handler的作用主要有两个:一是在线程中发送消息, 二是获取和处理消息。既可以发送消息sendEmptyMessage(int what) ,也可以发送指定的消息sendMessage(Message msg),还可以利...
分类:
其他好文 时间:
2015-04-03 09:25:07
阅读次数:
155
new Handler().obtainMessage().sendToTarget()这句话用着真爽,一行代码就能搞定异步消息了!所以在代码中使用的算是非常频繁的了,那这又是一个什么样的过程呢? 这个过程中又有什么玄机呢? 这篇文章,我们来一步步的分析一下这三句话。
1、new Handler()的分析
new Handler()会辗转来到public Handler(Callb...
分类:
其他好文 时间:
2015-03-31 09:22:39
阅读次数:
295
传统的进程间通信的方式有大致如下几种:(1) 管道(PIPE)(2) 命名管道(FIFO)(3) 信号量(Semphore)(4) 消息队列(MessageQueue)(5) 共享内存(SharedMemory)(6) SocketJava如何支持进程间通信。我们把Java进程理解为JVM进程。很明...
分类:
编程语言 时间:
2015-03-30 15:51:10
阅读次数:
195
相信不少人对这几个概念深恶痛绝,因为它们“像雾像雨又像风”——自我感觉都很熟识,如果下一次再相遇,却又陌生得很。这种“隔靴搔痒”的感觉促使我们必须与这些“顽固分子”来个彻底的决断。
先不要想太多,任头脑中随意画下对这些概念的第一印象,如图5-5所示。
▲图5 5 概念初探
图5-5是我们对这几个概念的“感官”释义,读者可以尝试着思考下是否和自己所想的基本一致。
那么,如果把这些概念糅...
分类:
其他好文 时间:
2015-03-27 23:57:54
阅读次数:
445
我们首先来看HandlerThread的创建过程,public class HandlerThread extends Thread { @Override
public void run() {
mTid = Process.myTid();
Looper.prepare();
synchronized (this) {...
分类:
移动开发 时间:
2015-03-17 15:48:11
阅读次数:
176
Android中的多线程可以有多种实现方式,前面我们已经讲过了封装程度较高异步任务(AnsyncTask),这一节我们来看看较为灵活的方式:Handler Looper MessageQueue Message。Message:用于线程之间传递信息,发送的消息放入目标线程的MessageQueue中...
分类:
移动开发 时间:
2015-03-16 08:38:53
阅读次数:
196
Handler 一个线程只有启动了Looper,才能在其中创建Handler的对象,进行消息处理,否则程序会出现异常。
启动Looper通过调用静态方法Looper.prepare();来实现。
一个线程只能有一个Looper和一个MessageQueue,但是可以有多个Handler对象。程序中可以使用不同的Handler对象处理不同的消息。Timer定时器也是常用的实现多线程程序的方式,但是...
分类:
移动开发 时间:
2015-03-12 06:27:27
阅读次数:
163
在子线程要更新UI时,通常是通过Handler来发送消息到UI线程来更新的,一般有两种方法,一种为sendMessage,另一种为post,这两种方法都可以通过XXXAtTime方法来指定时间发送或者post,也可以用个XXXDelayed来指定延迟时间。
首先先看下Handler定义了几个重要的变量:
final MessageQueue mQueue;
final Looper m...
分类:
其他好文 时间:
2015-03-09 19:10:12
阅读次数:
174