[Android开发从零开始]18消息处理详解_免费下载

[Android开发从零开始]18消息处理详解_免费下载

ID:42606119

大小:1.06 MB

页数:8页

时间:2019-09-18

[Android开发从零开始]18消息处理详解_免费下载_第1页
[Android开发从零开始]18消息处理详解_免费下载_第2页
[Android开发从零开始]18消息处理详解_免费下载_第3页
[Android开发从零开始]18消息处理详解_免费下载_第4页
[Android开发从零开始]18消息处理详解_免费下载_第5页
资源描述:

《[Android开发从零开始]18消息处理详解_免费下载》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、消息处理详解一、为什么需要消息处理?线程之间的交互就需要涉及到消息。二、MessageQueue三、Message解说:消息池:消息池是Android系统默认在应用程序中创建一个消息池。消息池默认是初始化10条消息在池子里面。当通过Message.obtain()与Handler.obtainMessage()方法时,会首先到消息池中有不有可用的Message,如果有,则将Message对象取出来,而不用new一个Message对象。如果没有可用的Message,才用指定的参数创建一个Message对象。Android系统会自动调用removeMessage(

2、)方法,会将Message从MessageQueue中删除,同时放入到消息不池中。消息队列删除消息——>放入消息池——使用消息。四、Looper创建Looper时,同时会创建一个MessageQueue,Looper是用来操作消息队列的。一个Loper对应的是一个MessageQueue,是一对一的关系,通过Loper.myLoper()方法可以获取当前线程的Loper对象,Loper从MessageQueue中取出Message,然后交给Handler的handlerMessage()这样一个方法进行处理,处理完毕之后,会调用Message.recycle(

3、)方法,将这个Message释放到消息池中。五、HandlerHandler可以对应一个Looper和一个MessageQueue。MessageQueue里面有一个死循环,它会中Looper里面有一个死循环,不断的循环MessageQueue,看里面是否有Message,如果有Message的话,它会取出Message,然后根据Message上面的Handler对象的handleMessage()方法对其进行处理。所有的Handler都可以共享同一个Looper与MessageQueue。六、文档解说1、MessageMessage包含一些描述信息,还有一个

4、对象,这个对象包含了一些我们所需要传递的一些参数。有点类似于Intent.put()那样一个方法。注意,在获取Message的时候尽量不要使用new,而是通过obtain()方法与obtainMessage()方法来获取这个对象。类里面的几个重要参数:intarg1:intarg2:这两个并没有代表什么实际的意义,主要是让我们自己来指定这两个参数来代表是什么意思。一般情况下,我们可以把在Service里面我们知道每个Service都有id的,可以把Service的id赋给这两个参数Objectobj:可以放置我们需要传递的对象publicMessagerrep

5、lyTo:是将消息指向到某一个new出来的消息上面。intwhat:仅仅是一个描述信息,根据这个描述信息我们可以判断这个消息是哪一个消息。2、MessageQueueMessageQueue:是用来处理Message的,是通过Looper来调用的。3、LooperLooper:是用来处理线程里面的消息,默认的线程是没有这样一个Looper的,如果我们需要可以调用prepare()方法来给线程添加一个loop,然后调用loop()方法来不断的循环这个Looper。创建一个Looper线程示例:4、HandlerHandler允许你发送和处理消息,还有一些Runn

6、able这样的对象。Handler有两个用处,一个是给messager添加一个计划,用来标名这个messager它是在什么时候开始执行的。另外Handler还可以与其他线程进行交互。执行这个方法会导致系统里面产生两个对象5、梳理执行流程Looper.prepare()一个是Looper()对象一个是MessageQueue()对象接下来调用Looper.loop()方法,得到当前的Looper()对象。再声明一个MessageQueue对象实例指向我们的MessageQueue()对象。在loop()方法里面有一个死循环,它会不断的循环我们的消息队列,Loop

7、erlooper=Looper.getMainLooper();会给系统产生什么影响呢MessageQueue与咱们的Looper有关联,因此就将Handler的MessageQueue指向了Looper里面的MessageQueue进行关联。即Looper与Handler产生了关联。ServiceHandler是处理它们的,处理的信息是放在handlerMessage(Messagemsg)方法里面,因此可以写一个类继承自Handler,然后在HandlerService里面处理我们自己所需要的一些事件。MessageQueue与咱们的Looper有关联,因

8、此就将Handler的MessageQ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。