Hermes——跨进程通信(IPC)框架,使用介绍

概述

Hermes的源码地址

Hermes的Demo地址

  1. Android进程间通信IPC框架
  2. 像调用本地函数一样调用其他进程的函数
  3. 在本地进程创建其他进程类的对象
  4. 在本进程获取其他进程的单例
  5. 在本进程使用其他进程的工具类
  6. 支持进程间函数回调,调用其他进程函数的时候可以传入回调函数,让其他进程回调本进程的方法
  7. 自带内存优化,内置两个垃圾回收器,地进程在远端进程创建的实例和本地进程传给远端进程的回调接口会被自动回收。

基本使用

compile 'xiaofei.library:hermes:0.7.0'

两个进程共享一个对象单例

//在进程A中,类使用注解标记该类的id
@ClassId(“Singleton”)
public class Singleton {
   
    //属性
    private volatile String mData;
    
	//实现单例,代码省略
    public static Singleton getInstance();
 
	//方法使用注解标记该方法的id
    @MethodId(“setData”)
    public void setData(String data) {
   
        mData = data;
    }

    @MethodId(“getData”)
    public String getData() {
   
        return mData;
    }
}

进程B要访问在进程A中的Singleton对象,如下:

//在进程B中,自定义接口
//该接口指定与Singleton的注解的classid一致
@ClassId(“Singleton”)
public interface ISingleton {
   
	//方法id与Singleton的注解的methodid一致
    @MethodId(“setData”)
    void setData(String data);

    @MethodId(“getData”)
    String getData();
}
//使用如下:
//获得Singleton对象
ISingleton singleton = Hermes.getInstance(ISingleton.class);
//调用方法
singleton.setData(“Hello, Hermes!);
//调用方法
Log.v(TAG, singleton.getData());

在其他进程调用主进程的函数

Hermes支持任意进程之间的函数调用

AndroidManifest.xml

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

主进程初始化Hermes

//在给其他进程提供函数的进程中,使用Hermes.init(Context)初始化
Hermes.init(Context);

子进程连接Hermes

//子进程链接Hermes后才可以使用Hermes的服务
//在Application.OnCreate()或Activity.OnCreate()
Hermes.connect(Context)

查看通信的进程是否还活着

Hermes.isConnected()

事先注册被调用的类

//进程A中,被进程B调用的类需要事先注册
//如果类上面没有加上注解,那么注册就不是必须的,Hermes会通过类名进行反射查找相应的类
//有两种注册类的API:
Hermes.register(Class<?>)
Hermes.register(Object)
Hermes.register(object)等价于Hermes.register(object.getClass())

设置连接监听

//在连接之前给Hermes设置监听器
Hermes.setHermesListener(new HermesListener() {
   
    @Override
    public void onHermesConnected(Class<? extends HermesService> service) {
   
        //连接成功,首先获取单例
       IUserInfo iUserinfo = Hermes.getInstance(IUserInfo
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值