您的位置:首页 > 其它

消息框架的一种实现

2016-03-17 20:00 330 查看
自从在Android中用上了消息框架,屡试不爽。不管是主线程发任务到后台线程,还是后台线程返回结果到主线程,甚至是完全在主线程中的调用,都用发消息-监听消息-收消息这种方式处理,真是解耦利器。

之前写过的两篇文章:用消息机制获取网络数据用消息机制解耦Activity跳转

之前在工程中都用的是开源的EventBus,很好用,但是因为是定制好的,缺少很多灵活性,监听方法不可改名,不可从父类override,不可以通过泛型参数声明,等等。

自己尝试用Handler实现了一个消息框架,还没完全搞明白,目前可以满足一个小工程用的需求。几个角色:

IMessage,定义消息,封装业务需求、业务数据,比如网络请求消息,网络请求结果返回消息,activity跳转消息等;

IMessageListener<? extends IMessage>, 消息监听器,泛型声明了一个消息的类型,就是说一个消息监听器,负责监听某一类的消息。这个由监听消息的业务类去实现;

MessageCenter, 消息中心,维护一个IMessageListener列表,接收IMessage来发送消息,收到消息后,通过遍历IMessageListener列表把消息实体分发给对应的监听器。核心方法有三个:registListener, unRegistListener, sendMessage,分别是注册监听器,解注册监听器,发送消息。其内部实现是两个Handler,一个是主线程的Handler,负责在主线程接收消息,另一个是一个后台线程的Handler,负责在后台线程接收消息,这样消息一收到就会在后台线程中异步执行,不需要客户代码自己起异步线程。

所有代码在Gist: An Implementation of Android Message Framework.
https://gist.github.com/Viyu/a29bc80c62a244609287
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: