首页 > 代码库 > Android Handler消息传递机制
Android Handler消息传递机制
Android 的消息机制是另一种形式的“事件处理”,这种机制是为了解决Android应用的多线程问题。--Android平台不允许Activity新启动的线程 访问Activity里的界面组件,这样会导致新启动的线程无法修改界面组件的属性值,此时我们需要通过Hander的消息机制来实现了。
1.Handler简介
1)Handler作用:
在新启动的线程中发送消息
在主线程中获取,处理消息
2)控制消息的发送和接受的时机
通过回调的方法来实现,开发者需要重写Handler类中处理消息的方法,当新启动的线程发送消息
时,Handler类中处理消息的方法被自动回调。
3)Handler类包含如下方法用于发送、处理消息
. void handleMessage(Message msg):处理消息的方法。该方法通常用于被重写
. final boolean hasMessages(int what):检查消息队列中是否包含what属性为指定值的消息
. final boolean hasMessages(int what,Object object) :检查消息队列中是否包含what属性为指定值
的消息且object属性为指定对象的消息
. 多个重载的Message obtainMessage():获取消息
. sendEmptyMessage(int what):发送空消息
. final boolean sendEmptyMessageDelayed(int what,long delayMills):指定多少秒后发送空消息
. final boolean sendMessage(Message msg):立即发送消息
. final boolean sendMessageDelayed(Message msg,long delayMills):指定多少秒后发送消息
在新启动的线程中发送消息
在主线程中获取,处理消息
2)控制消息的发送和接受的时机
通过回调的方法来实现,开发者需要重写Handler类中处理消息的方法,当新启动的线程发送消息
时,Handler类中处理消息的方法被自动回调。
3)Handler类包含如下方法用于发送、处理消息
. void handleMessage(Message msg):处理消息的方法。该方法通常用于被重写
. final boolean hasMessages(int what):检查消息队列中是否包含what属性为指定值的消息
. final boolean hasMessages(int what,Object object) :检查消息队列中是否包含what属性为指定值
的消息且object属性为指定对象的消息
. 多个重载的Message obtainMessage():获取消息
. sendEmptyMessage(int what):发送空消息
. final boolean sendEmptyMessageDelayed(int what,long delayMills):指定多少秒后发送空消息
. final boolean sendMessage(Message msg):立即发送消息
. final boolean sendMessageDelayed(Message msg,long delayMills):指定多少秒后发送消息
2.使用心得:
1) 发送消息
新的启动线程,如:
1) 发送消息
新的启动线程,如:
new Timer().schedule(new Task(){ public void run(){ Message msg = new Message(); msg.what=0x1223; myHandler.sendMessage(msg); } });
在上面中myHandler 是重写后的实例化对象:
final Handler myHandler = new Handler(){ public void handleMessage(Message msg){ if(msg.what = 0x1223){ //确保此条消息是本程序发送 ....... } } };
当新的线程发送发送消息时,重写的handlerMessage(Message msg)就会被回调,从而达到了新线程来修改Activity组件的属性效果。
Android Handler消息传递机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。