• Android消息驱动Handler类分析


    Android系统中的消息驱动工作原理:

    1、有一个消息队列,可以往这个消息队列中投递消息;

    2、有一个消息循环,不断的从消息队列中取得消息,然后处理。

    工作流程:

    1、事件源将待处理的消息加入到消息队列中,一般是加至队列尾部(优先级高的消息可以加至队列头),事件源提交的消息可以是按键、触摸等物理事件产生的消息,也可以是系统或应用程序发出的消息;

    2、处理线程不断的从消息队列头中取出消息并处理。

    在Android系统中,这些工作主要由Looper和Handler实现:

    Looper类,用于封装消息循环,并且有一个消息队列;

    Handler类,封装消息投递、消息处理等接口

    Handler类分析

      Handler中包括的成员:

        Hadler.java:

    final messageQueue mQueue;       //Handler中也有一个消息队列
    final Looper mLooper;                    
    final  Callback mCallback;              //i回调用的类

    在Handler的构造函数中,Handler中的消息队列最终会指向Looper的消息队列。

    (1)插入消息到Looper消息队列 

      Handler提供了一系列帮助完成创建消息和插入消息队列的函数。

      例如Handler.java中sendMessage发送一个消息,将消息添加到消息队列末尾

    
    public  final  boolean  sendMessage(Message msg) {    
         return sendMessageDelayed(msg,  0);  
    }
    
    public final boolean senMessageDelayed(Message msg, long delayMilis){
        ......
        return senMessage(msg, SystemClock.uptimeMillis() + delayMillis);   // 当前时间
    }
    
    public boolean sendMessageTime(Message msg, long uptimeMillis) {
       boolean sent = false;
       MessageQueue queue = mQueue;
    
       if (queue != null) {
          msg.target = this; // 将targt设置为自己,然后加入到消息队列
          sent = queue.enqueueMessage(msg, uptimeMillis);   
    }
      return sentl
    }
    

     (2)Handler的消息处理

       在loop方法中,如果获得消息后会调用target的dispatchMessage函数,然后将这个消息派发给Handler处理。

       dispatchMessage定义了一套消息处理的优先级机制:

        > Messagu如果自带callback处理,则交给callback处理;

        > Handler如果设置了全局的mCallback,则交给mCallback处理;

        > 如果上述都没有,消息则会被交给Handler子类实现的handleMessage 来处理。(这需要从Handler派生并重载handleMessage函数) 

     

  • 相关阅读:
    第四次博客作业结对项目
    centos7 python3 安装paramiko模块
    zabbix启动报错:“No space left on device: AH00023”
    zabbix监控历史数据清理过程
    zabbix:登录页面是显示Database:Error connecting to database: Access denied for user 'zabbix' @ 'localhost'
    解决:Linux漏洞目标主机showmount e信息泄露(CEE19990554)
    关于Sentaurus的日常(二)(Carrier Transport Models)
    SQLITE3
    Dos命令大全完整版
    四级菜单实现(Python)
  • 原文地址:https://www.cnblogs.com/876013676ch/p/10034824.html
Copyright © 2020-2023  润新知