1.简介
Framework 作为 Android 框架层,为 App 提供了众多 API 去调用 ,但是很多机制都是 Framework 包装好了给 App 来用的。 Framework始终穿插在 App 整个研发生命周期中,不管是从 0 到 1 的建立阶段,还是从 1 到 N 打磨阶段,都离不开Framework。
2.简介 Handler
Handler机制的相关类
1.Hanlder:发送和接收消息
2.Looper:用于轮询消息队列,一个线程只能有一个Looper
3.Message: 消息实体
4.MessageQueue: 消息队列用于存储消息和管理消息创建Looper
1.创建Looper的方法是调用Looper.prepare() 方法
2.在main方法中 Looper.prepareMainLooper() 后Looper.loop(); 开始轮询创建MessageQueue以及Looper与当前线程的绑定
Looper.loop() – 创建Handler – 创建Message – Message和Handler的绑定
1.最常见的创建handler Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
在内部调用 this(null, false);
2.可以直接new Message 但是有更好的方式 Message.obtain。因为可以检查是否有可以复用的Message,用过复用避免过多的创建、销
毁Message对象达到优化内存和性能的目地Handler发送消息
1.Handler发送消息的重载方法很多,但是主要只有2种。 sendMessage(Message) sendMessage方法通过一系列重载方法的调用,
sendMessage调用sendMessageDelayed,继续调用sendMessageAtTime,继续调用enqueueMessage,继续调用messageQueue的
enqueueMessage方法,将消息保存在了消息队列中,而最终由Looper取出,交给Handler的dispatchMessage进行处理Handler处理消息
在handleMessage(Message)方法中,我们可以拿到message对象,根据不同的需求进行处理,整个Handler机制的流程就结束了
3.小结
handler.sendMessage 发送消息到消息队列MessageQueue,然后looper调用自己的loop()函数带动MessageQueue从而轮询
messageQueue里面的每个Message,当Message达到了可以执行的时间的时候开始执行,执行后就会调用message绑定的Handler来处理消息。
handler机制就是一个传送带的运转机制。
1)MessageQueue就像履带。
2)Thread就像背后的动力,就是我们通信都是基于线程而来的。
3)传送带的滚动需要一个开关给电机通电,那么就相当于我们的loop函数,而这个loop里面的for循环就会带着不断的滚动,去轮询messageQueue
4)Message就是 我们的货物了