Github项目地址 https://github.com/532268948/MessageDemo
一、介绍
随着页面的增多,页面之间的信息交流也会越来越多,比如一个社交类app,你在个人中心修改了自己的个人信息,在动态展示页面你就要通知该页面有关于自己的动态需要更新自己展示在页面上的信息。 该框架的核心思想是在进入页面的的时候注册监听器,每一类事件监听器都有一个唯一标志符用来区分不同的事件,时间传递信息的媒介是Message,就是Handler中的,在Message中你可以传输自己想传的数据。
二、用法
//注册事件
三、源码解析(以Activity为例)
注册事件
MessageManager.java
/**
MessageLooper.java
/**
从中可以看到有一个MessageLooper的新类,它是事件注册的核心,该类的功能是对所有注册事件进行统一管理,其中变量mMessageReceiver存储了所有的注册事件。
/**
ListenerContainer这个类,它主要是负责将不同页面的注册事件区分,方便注销当前页面的事件,在添加事件的时候会同时添加到该页面的ListenerContainer对象中,一个ListenerContainer对象包含了一个页面的所有注册事件。
注销事件
MessageManager.java
/**
ListenerContainer.java
/**
MessageLooper.java
/**
在调用ListenerContainer的clear()方法的时候在清空当前ContainerListener的listeners的同时清空MessageLooper中的注册事件。
发送事件
MessageManager.java
/**
MessageLooper.java
/**
发送事件时会遍历MessageLooper中的mMessageReceiver,如果有相同cmd的MessageListener会调用该Listener中的onMessage方法实现消息的全局接收。
Github项目地址 https://github.com/532268948/MessageDemo