美文网首页
Android FrameWork 初探

Android FrameWork 初探

作者: 陆笪_刑道荣 | 来源:发表于2023-06-05 13:31 被阅读0次

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就是 我们的货物了

相关文章

网友评论

      本文标题:Android FrameWork 初探

      本文链接:https://www.haomeiwen.com/subject/nkmbedtx.html