Handler简单使用:
1. Handler:消息处理者
handleMessage(Message):在主线程中,构造Handler对象时,重写此方法
sendEmptyMessage(int what):用在子线程中,发送空消息
sendMessage(Message):用在工作线程中,立即发送消息
2. Message:消息
arg1:用来存放整型数据
arg2:用来存放整型数据
obj:用来存放Object数据
what:用于指定用户自定义的消息代码,便于主线程接收后,根据消息代码不同而执行不同的操作
setData(Bundle ) 传送更多的业务数据
使用Message需要注意4点:
1)、Message虽然也可以通过new来获取,但是通常使用Message.obtain()或Handler.obtainMessage()方法来从消息池中获得空消息对象,以节省资源;
2)、如果一个Message只需要携带简单的int型数据,应优先使用arg1和arg2属性来传递数据,这样比其他方式节省内存;
3)、尽可能使用Message.what来标识信息,以便用不同的方式处理Message。
4)、如果需要从工作线程返回很多数据信息,可以借助Bundle对象将这些数据集中到一起,然后存放到obj属性中,再返回到主线程。
3. Thread:将消息发送给主线程
Handler运行原理:
Looper:消息泵,不断地从MessageQueue中抽取Message执行。一个MessageQueue需要一个Looper