Android进程间通信,换一种 HermesEventBus 的姿势吧!

先上一波效果图吸引注意力

蟹棒友情提示: GIF 1.54M 小心流量乱跑哦!

镇楼效果图

效果图还不够?

拜访 HermesEventBus
Demo HermesEventBusDemo

What is EventBus

相信开发 Android 的伙伴们应该对 EventBus 耳熟能详了,EventBus 是一款在 Android 平台发布的 发布/订阅 事件总线,主要用来替代 Intent,Handler,Broadcast 在 Fragment,Activity,Service,线程之间传递消息,简化各组件之间的通讯,优点开销小,代码优雅,能够很好的解耦业务与界面交互,缺点是很容易混淆程序逻辑,而且无法进程间通信

What is HermesEventBus

HermesEventBus 拥有 EventBus 全部的作用和相同的 API (内部依赖EventBus) ,其主要作用就是我们今天要谈谈的基于 EventBus 的进程间通信,由 『热的饿了么』开源,不明觉厉 - -

感觉很厉害的样子

How to use it like EventBus (EventBus 般使用姿势)

新建 Main app, 在 build.gradle(Module: app) 添加 HermesEventBus 依赖

dependencies {
    // 添加 HermesEventBus 依赖
    compile 'xiaofei.library:hermes-eventbus:0.3.0'
}

然后就可以像你使用 EventBus 一样使用 HermesEventBus 了

首先你需要一个这样的布局

MainActivity布局

一个 Button 用于跳转到 NextActivity,一个 TextView 用于接收返回消息,So easy,这样的简单布局蟹棒相信年轻司机们心领神会

新建 NextActivity,布局内仅有一个 Button 用于发送事件

NextActivity 布局

点击 Button 触发 sendMessage 事件

sendMessage

这样就使用 HermesEventBus 发送了一个消息,也是相当于使用 EventBus,无非在使用 EventBus 时 HermesEventBus.getDefault() 被替换成了 EventBus.getDefault() 方法

当然需要接收到消息,我们还得在 MainActivity 注册 HermesEventBus 接收者

MainActivity

代码一目了然,onCreate 里面注册,onDestory 里面注销,使用 Subscript 注解注册接收者,指定 ThreadMode 在 UI 线程运行,这样就完成了 HermesEventBusLike EventBus

阶段一运行效果

看不懂以上部分的年轻司机蟹棒建议先了解 EventBus3.0 的使用姿势

How to use HermesEventBus

上面蟹棒带领年轻司机们了解了 HermesEventBus 同一个 APP 的通信技巧,接下来的重头戏,进程间通信,Look

向 MainActivity 的布局中再次添加一个 Button 触发 sendEventToChildApp 方法

MainActivity 布局
sendEventToChildApp 方法

发送消息的方法和我们上面使用 HermesEventBus 发送消息的方法一致,接下来创建 MyApplication 类继承自 Application,在 onCreate 中调用如下方法

MyApplication 中调用

在 Main App 的 Manifest 文件中注册 MyApplication,并注册如下 service

<service 
         android:name="xiaofei.library.hermes.HermesService$HermesService0"
         android:exported="true"/>

新建我们的第二个 APP,这里姑且叫 Plugin APP,AndroidStudio 右键项目 new > module

PluginAPP 的 build.gradle 中同样需要依赖 HermesEventBus

dependencies {
    // 添加 HermesEventBus 依赖
    compile 'xiaofei.library:hermes-eventbus:0.3.0'
}

在 Plugin APP 中创建 MyApplication 继承自 Application,onCreate 方法中执行如下代码

PluginAPP / MyApplication

Plugin APP 的 MainActivity 布局如下

PluginAPP / MainActivity 布局

同样的我们需要在 PluginAPP 中的 MainActivity 中注册接收者,与正常 HermesEventBus 注册一般无二

PluginAPP / MainActivity

完成了,是不是没有想象中的复杂,只要懂得使用 EventBus ,使用 HermesEventBus 很简单

阶段二运行效果

注意点

目前为止,我们拥有 MainApp 与 PluginApp 两个 App,并且正常注册了接收者与发布者,正常的实现了进程间通讯,但是这里有需要注意的一点,在 MainApp / MainActivity 执行的 post 方法 内部参数是 MessageEvent,同样的 PluginApp / MainActivity 中接收的参数也是 MessageEvent ,**这两个 MessageEvent 唯一的不同点是存在于两个不同的 APP 中,其他的类名,包名,方法名全部要一致才可以正常调用,另外在 APP 混淆时务必将这两个类 Keep **

总结

HermesEventBus 的使用姿势与 EventBus 的使用姿势相差无几,不过在 EventBus 的基础上多出了进程间通讯的功能,回想我们之前是如何实现进程间通讯的 全局Broadcast,Content Provider,AIDL Service 等,HermesEventBus 提供了更加便利的方式,蟹棒也带领大家 Get 到一个进程间通信的新姿势!看完不点个喜欢吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容