android的消息机制需要哪些来实现

 我来答
迗好泠
2016-10-19 · 超过34用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:48.8万
展开全部
一个Handler允许你发送和处理与一个线程的消息队列相关联的Message和Runnable对象。每个Handler实例与一个单一的线程关联和那个线程的消息队列关联。当你创建一个新的Handler,从创建的那一刻起,它被绑定到创建它的线程/消息队列。它会分发messages和runnables到那个消息队列,并且在它们取出时候执行它们。

Handler主要有两个用法:(1)安排 messages and runnables 被执行,在将来的某个时候。(2)入队一个不同于你自己的线程中执行的动作。

当你post或者send给一个Handler,你可以允许项目被执行,只要消息队列准备好了,或者在它被执行之前指定一个延迟,或者它执行的绝对时间。后两种允许你实现超时,倒计时,或者其他时间相关的行为。

当已经为你的应用程序创建了一个进程,它的主线程将要运行一个消息队列,主要用来管理顶级应用程序对象们(activities,broadcast receivers等)和它们创建的所有窗口。你可以创建自己的线程,并且可以通过Handler反过来和应用程序主线程通信。这可以像之前那样通过调用post或者sendMessage方法来完成,只不过是来自你的新线程。给出的Runnable或者Message会被安排到Handler的消息队列,并且在适当的时候被执行。

要使自己新建的线程成为一个消息线程,即,可以给它发消息,它受到消息就会处理。需要几步:
1.给需要的线程绑定一个消息队列,让消息来的时候在中间排队。在线程体中代码写:Looper.prepare()
2.给这个线程绑定一个Handler,因为它来实现发送和处理。也是通过它来实现在其他线程中发送消息。Handler handler=new MyHander();在哪儿执行这句话,就把它绑定到那个线程。
3.让消息循环开始循环起来。Looper.loop()。
4.终止,循环。因为loop()内有循环,在调用此方法后的代码不会被执行到。所以要在该线程的其他地方执行,比如绑定好的Handler的handleMessage()中实现。
Looper looper= Looper.myLooper()获得当前的Looper,looer.quit();这样就终止了循环。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式