Andromeda Android 平台上轻量级的组件间通信框架开源项目

我要开发同款
匿名用户2018年04月20日
24阅读
开发技术Java
所属分类手机/移动开发
授权协议Apache

作品详情

Andromeda是爱奇艺开源的一个Android平台上轻量级的组件间通信框架,主要特征如下:不需要开发者进行bindService操作,即可实现不同进程的任意两个组件间的IPC通信;即使不在同一进程,也可同步获取任意组件提供的服务;可根据Fragment或Activity的生命周期自行对服务进程进行提高和降低优先级的操作;支持IPC的Callback;支持针对所有进程的事件总线;在编译时可动态指定管理中心所在的进程,从而保证管理中心存活到最后。

Andromeda提供了接口式的组件间通信管理,包括同进程的本地接口调用和跨进程接口调用。

注:之所以分成本地服务和远程服务这两种,是由于本地服务的接口可以传递各种类型的参数和返回值,而远程接口则受AIDL的限制,参数和返回值只能是基本类型或者实现了Parcelable接口的自定义类型。

特色

无需开发者进行bindService()操作,也不用定义Service,只需要定义aidl接口和实现

同步获取服务。抛弃了bindService()这种异步获取的方式,改造成了同步获取

生命周期自动管理。可根据Fragment或Activity的生命周期进行提高或降低服务提供方进程的操作

支持IPC的Callback,并且支持跨进程的事件总线

采用"接口+数据结构"的方式来实现组件间通信,这种方式相比协议的方式在于实现简单,维护方便

注意这里的服务不是Android中四大组件的Service,而是指提供的接口与实现。为了表示区分,后面的服务均是这个含义,而Service则是指Android中的组件。

Andromeda和其他组件间通信方案的对比如下:

使用方便性代码侵入性互操作性是否支持IPC是否支持跨进程事件总线是否支持页面跳转Andromeda好较小好YesYesNoDDComponentForAndroid较差较大差NoNoYesARouter较好较大差NoNoYes接入方式

首先在buildscript中添加classpath(以1.0.0为例):

    classpath "org.qiyi.video.svg:core:1.0.0"    classpath "org.qiyi.video.svg:plugin:1.0.0"

这两个分别是核心代码库和gradle插件库的路径。在Application或libraryModule中使用核心库:

    implementation 'org.qiyi.video.svg:core:1.0.0'

在ApplicationModule中使用gradle插件:

    apply plugin: 'org.qiyi.svg.plugin'
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论