IPCInvoker,Android跨进程调用如此简单

IPCInvoker是一个解决Android跨进程调用复杂性的框架,它扩展了AIDL,使得调用过程更简单。通过IPCInvoker,开发者无需关注Service连接状态,只需像实现Runnable一样定义跨进程逻辑,降低了代码耦合。文章介绍了IPCInvoker的同步和异步调用方式,以及其相比AIDL和Messenger的优势。
摘要由CSDN通过智能技术生成

一个APP为什么需要多条进程?

如果一条进程能够拥有足够多的资源,且不会被系统kill掉的话,让程序运行在一条进程上是最好的选择。但是系统资源是按进程来分配的,每条进程资源分配是有个上限的,而且当我们的APP退到后台之后,系统会根据系统资源使用情况,回收部分后台进程资源。

具有推送或后台播放音乐等功能的APP,在APP被退到后台之后,为了保持良好的用户体验,则需要在后台保持运行状态。而这些功能模块的运行可以脱离主程序而运行,为了保持后台运行,且不干预系统回收进程资源的前提下,我们将这些功能拆分到小而独立的进程当中。

满足什么条件才需要拆分独立进程呢?

  • 需要后台保活的核心模块;(如:Server push、后台音乐播放或APP升级等)
  • 不稳定的新功能;(为了不影响主功能的正常使用,会选择性的放到独立进程中)
  • 部分占用资源比较大的功能模块;(如:WebView,图库等)

Android上有哪些跨进程通讯方式?

在Android应用程序中跨进程通讯是非常常见的,我们常用的四大组件均支持跨进程通讯。本文中我们重点看下Service跨进程通讯方式。

Android提供的Service跨进程调用方式:

  • 通过AIDL定义跨进程接口调用跨进程逻辑;
  • 通过Messenger调用跨进程逻辑;

通过AIDL定义跨进程接口调用跨进程逻辑

通过AIDL定义跨进程接口提供给业务调用是Android应用程序开发中,最为常用的跨进程调用实现的方式,AIDL接口提供了同步与异步调用的支持,基本能满足所有的跨进程调用需求。

通过AIDL接口调用跨进程逻辑需要如下几个步骤:

  1. 连接Service;
  2. 等待Service连接成功后,持有连接远端Service的Binder对象的引用;
  3. 通过Binder对象跨进程调用远端逻辑;

代码实现需要如下几个步骤:

  1. 定义AIDL接口;
  2. 在Service端实现远端接口逻辑;
  3. 在业务层中调用AIDL接口;

AIDL调用模型图

通过Messenger调用跨进程逻辑

通过Messenger调用跨进程逻辑需要如下几个步骤:

  1. 连接Service;
  2. 等待Service连接成功后,将远端Service的Binder对象绑定到Messenger上;
  3. 通过Messenger发送远端调用Message,调用远端进程逻辑;

代码实现需要如下几个步骤:

  1. 在Service端实现远端接口逻辑;
  2. 在业务层中调用Messenger.send(Message)接口向远端发出调用命令以实现跨进程调用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值