Android Handler
Handler 概要
Handler 可以发送、处理 Message 和与线程关联的 Runnable 对象 MessageQueue ,每个 Handler 实例都与一个线程和该线程的消息队列关联。创建新的 Handler 时会绑定到 Looper。它将消息和线程传递到该 Looper 的消息队列,并在该 Looper 的线程上执行它们
Handler 两个主要用途:在将来某个时刻执行消息和线程。在不同线程(切换线程)按顺序执行操作
发送方法有 post(Runnable) , postDelayed(Runnable, long), sendMessage(Message) 等 默认通过 handleMessage(Message) 处理接收 Message
Handler、Message、MessageQueue以及Looper
- Handler 负责发送和处理消息(Handler发送消息给 MessageQueue 和接收 Looper 返回的消息并且处理消息)
- Message 用来携带需要的数据
- MessageQueue 消息队列(实际用链表实现的),负责存放 Handler 发送过来 Message
- Looper 负责不停的从 MessageQueue 中取 Message 交给 Handler 处理
Handler 通过 sendMessage 发送 Message 到 MessageQueue 队列,Looper 通过 loop() 从 MessageQueue 取出 Message,再经过 msg.target.dispatchMessage 交给 Handler 的 handleMessage() 进行处理