文章目录Andromeda爱奇艺开源的 Android 组件通信框架Andromeda爱奇艺开源的 Android 组件通信框架爱奇艺开源的 Android 组件化通信框架 Andromeda在 GitHub 上收获了 2,269 个 Star。Andromeda 解决的是 Android 模块化开发中各模块之间的通信问题。它同时支持本地服务和远程服务跨进程开发者只需要定义 AIDL 接口并提供实现不需要手动 bindService也不需要定义 Android Service 组件。核心能力Andromeda 提供了几个关键特性远程服务可以同步获取不必像传统方式那样只能异步回调。框架会根据 Fragment 或 Activity 的生命周期自动管理进程优先级防止服务端进程被系统回收。跨进程回调IPC Callback也是支持的框架还提供了 BaseCallback 类把回调自动切换到 UI 线程省去开发者手动切换的麻烦。除了点对点的服务调用Andromeda 还内置了跨进程的事件总线。任何进程中的模块都可以发布事件其他进程中订阅了同名事件的监听器都能收到。Event 对象由事件名称和 Bundle 数据组成可以携带基本类型或 Parcelable 类型的参数。接入方式接入 Andromeda 分三步。第一步在 buildscript 中添加 Gradle 插件依赖第二步在 Application 或 Library 模块中引入 core 库第三步在 Application 模块中 apply 插件。初始化只需要在 Application.onCreate() 中调用一行代码。之后就可以通过 registerLocalService 注册本地服务通过 registerRemoteService 注册远程服务。获取服务也很直接本地服务用 getLocalService远程服务用 with(fragment).getRemoteService。与其他方案的对比在 Andromeda 的 README 中有一张它与其他组件化方案的对比表。相比 DDComponentForAndroid 和 ModularizationArchitectureAndromeda 在便利性、IPC 效率、跨进程通信、跨进程事件总线和跨进程回调这几个维度上都有优势。使用注意框架要求 Dispatcher 进程必须是存活时间最长的进程默认是主进程。如果你的应用中某个进程比如音乐播放器的后台进程比主进程存活更久需要在 build.gradle 中手动配置 Dispatcher 的进程名。远程服务的参数类型只能是基本类型或实现了 Parcelable 的自定义类型本地服务则没有这个限制可以传递 View、Context 等任意类型。该项目采用 BSD-3-Clause 开源协议。等任意类型。该项目采用 BSD-3-Clause 开源协议。
Andromeda:爱奇艺开源的 Android 组件通信框架
文章目录Andromeda爱奇艺开源的 Android 组件通信框架Andromeda爱奇艺开源的 Android 组件通信框架爱奇艺开源的 Android 组件化通信框架 Andromeda在 GitHub 上收获了 2,269 个 Star。Andromeda 解决的是 Android 模块化开发中各模块之间的通信问题。它同时支持本地服务和远程服务跨进程开发者只需要定义 AIDL 接口并提供实现不需要手动 bindService也不需要定义 Android Service 组件。核心能力Andromeda 提供了几个关键特性远程服务可以同步获取不必像传统方式那样只能异步回调。框架会根据 Fragment 或 Activity 的生命周期自动管理进程优先级防止服务端进程被系统回收。跨进程回调IPC Callback也是支持的框架还提供了 BaseCallback 类把回调自动切换到 UI 线程省去开发者手动切换的麻烦。除了点对点的服务调用Andromeda 还内置了跨进程的事件总线。任何进程中的模块都可以发布事件其他进程中订阅了同名事件的监听器都能收到。Event 对象由事件名称和 Bundle 数据组成可以携带基本类型或 Parcelable 类型的参数。接入方式接入 Andromeda 分三步。第一步在 buildscript 中添加 Gradle 插件依赖第二步在 Application 或 Library 模块中引入 core 库第三步在 Application 模块中 apply 插件。初始化只需要在 Application.onCreate() 中调用一行代码。之后就可以通过 registerLocalService 注册本地服务通过 registerRemoteService 注册远程服务。获取服务也很直接本地服务用 getLocalService远程服务用 with(fragment).getRemoteService。与其他方案的对比在 Andromeda 的 README 中有一张它与其他组件化方案的对比表。相比 DDComponentForAndroid 和 ModularizationArchitectureAndromeda 在便利性、IPC 效率、跨进程通信、跨进程事件总线和跨进程回调这几个维度上都有优势。使用注意框架要求 Dispatcher 进程必须是存活时间最长的进程默认是主进程。如果你的应用中某个进程比如音乐播放器的后台进程比主进程存活更久需要在 build.gradle 中手动配置 Dispatcher 的进程名。远程服务的参数类型只能是基本类型或实现了 Parcelable 的自定义类型本地服务则没有这个限制可以传递 View、Context 等任意类型。该项目采用 BSD-3-Clause 开源协议。等任意类型。该项目采用 BSD-3-Clause 开源协议。