Android:Handler消息传递机制
2015-07-30 20:18
411 查看
一、存在Handler类的背景:
当一个Android程序第一次启动时,Android会同时启动一个主线程(Main Thread),主线程主要负责处理与UI相关的事件。因此,可以理解为执行UI操作的线程就是主线程,这个主线程的执行是由onCreate()方法完成的。
当存在多个线程同时操作UI控件时,Android的UI被控局面就会产生失控现象,就是说UI操作存在线程安全问题。据此,Android规定:只允许UI线程(主线程)有权利修改UI组件。那么多线程机制中的其他任务线程(子线程、工作线程)又如何处理、修改、控制与UI相关的事件呢?这种情况下就产生了能在任务线程中发送消息、在主线程中获取、处理消息的Handler类。
二、Handler类的特点:
1.、传递Message,用于接受任务线程发送的消息(数据), 并用此数据配合主线程更新UI。
在Android中,对于UI的操作通常需要放在主线程中进行操作。如果在子线程中有关于UI的操作,那么就需要把数据消息作为一个Message对象发送到消息队列中,然后,由Handler中的handlerMessage方法处理传过来的数据信息,并操作UI。
注意:Handler对象是在主线程中初始化的,因为它需要绑定在主线程的消息队列中。
Handler类中sendMessage(Message msg)方法实现发送消息的操作。 在初始化Handler对象时重写的handleMessage方法来接收Messgae并进行相关操作。
2、 传递Runnable对象。用于通过Handler绑定的消息队列,安排不同操作的执行顺序。
Handler对象在进行初始化的时候,会默认的自动绑定消息队列。利用类sendXXXX()方法,可以将Runnable对象发送到消息队列中,按照队列的机制按顺序执行不同的Runnable对象中的run方法。
当一个Android程序第一次启动时,Android会同时启动一个主线程(Main Thread),主线程主要负责处理与UI相关的事件。因此,可以理解为执行UI操作的线程就是主线程,这个主线程的执行是由onCreate()方法完成的。
当存在多个线程同时操作UI控件时,Android的UI被控局面就会产生失控现象,就是说UI操作存在线程安全问题。据此,Android规定:只允许UI线程(主线程)有权利修改UI组件。那么多线程机制中的其他任务线程(子线程、工作线程)又如何处理、修改、控制与UI相关的事件呢?这种情况下就产生了能在任务线程中发送消息、在主线程中获取、处理消息的Handler类。
二、Handler类的特点:
1.、传递Message,用于接受任务线程发送的消息(数据), 并用此数据配合主线程更新UI。
在Android中,对于UI的操作通常需要放在主线程中进行操作。如果在子线程中有关于UI的操作,那么就需要把数据消息作为一个Message对象发送到消息队列中,然后,由Handler中的handlerMessage方法处理传过来的数据信息,并操作UI。
注意:Handler对象是在主线程中初始化的,因为它需要绑定在主线程的消息队列中。
Handler类中sendMessage(Message msg)方法实现发送消息的操作。 在初始化Handler对象时重写的handleMessage方法来接收Messgae并进行相关操作。
2、 传递Runnable对象。用于通过Handler绑定的消息队列,安排不同操作的执行顺序。
Handler对象在进行初始化的时候,会默认的自动绑定消息队列。利用类sendXXXX()方法,可以将Runnable对象发送到消息队列中,按照队列的机制按顺序执行不同的Runnable对象中的run方法。
相关文章推荐
- Android自定义AlterDialog,并给其中的控件添加监听事件
- Android 多媒体开发学习之创建图片的副本
- Android中注册和发送广播中添加权限
- Android中实现全屏、无标题栏
- android相关资料
- Android进程内通信
- Android检测Cursor泄漏的原理以及使用方法
- android监测程序进入后台以及从后台返回
- ANDROID 系统提示对话框(ALERTDIALOG)的使用
- 玩转Android---2D图形及动画---动画分析(Tween详细分析)
- 玩转Android---2D图形及动画---Gif动画
- 玩转Android---2D图形及动画---图片处理
- 玩转Android---2D图形及动画---Tween动画
- 玩转Android---组件篇---TextSwitcher
- 玩转Android--组件篇---Handler的使用
- 玩转Android---组件篇---AnalogClock,DigitalClock
- 玩转Android---2D图形及动画---Frame动画
- 玩转Android---2D图形及动画---View类使用
- 玩转Android---组件篇---SeekBar,RatingBar,Chronometer
- 玩转Android---组件篇---Handler的使用(2)