美文网首页
Hermes跨进程通信原理解析

Hermes跨进程通信原理解析

作者: Davisxy | 来源:发表于2021-11-26 10:33 被阅读0次

简述

EventBus是事件总线,用来处理一些事件及时通知的,用来处理UI或数据。
但是是单进程的,不能跨进程;说到跨进程就避不开binder通信。

Hermes就是快进程版本的EventBus;如果了解Binder的话那理解起来应该很简单,就是基本思路不变,然后在这个基础上通过binder通信。

Hermes是出于一个单例类来做整体处理的,通知也是调用这个单例类的某个方法,然后在方法中怎么通知到具体的东西,你就可以继续按照EventBus的思想继续操作了。

说一下“破解版”的思路。

看视频课讲解,没有自己去扒一遍;整理了一下思路和方案逻辑,觉得讲的思路是完全行得通的。

在A进程中注册一个单例类(用接口的方式),搜集类的全限定名,以及对应的所有方法,放到集合中缓存。

然后在B进程中,通过aidl来绑定A进程中的Service,这样就有了跨进程通信的能力。

然后在B进程中拿到A进程中的单例,把单例对应的类的全限定名和方法名binder发过去;A进程中收到后解析对应的类的全限定名和方法,然后反射执行获取单例,然后将单例对象保存在A进程中的一个集合中。

然后在B进程通过动态代理的方式生成一个新的对象给B持有;这时B就可以调用A中单例的某个方法了。(这里的动态代理就是个假动作,并没有发挥出动态代理的作用,就只是生成个句柄供B调用某个单例方法的时候方便;其实可以写个方法,里面就放类的全限定名,然后放方法名以及参数也是可以的

此时B中调用A中单例的某个方法,参数啥的都带上,binder发过去;A中收到后解析出对应的类的全限定名和方法名,之前集合中存储了单例类的对象,于是可以直接反射执行该方法。

至于如何在这个单例方法中去响应类似EventBus的作用,在Activity/Fragemnt中响应更新UI或者数据,可以再捡起EventBus中的那一套,也用集合去缓存所有的注解方法,然后反射执行对应的方法,只不过是多了一层中转。


等完成自己的规划,再去扒一边,看是不是差不多,顺带看看细节。

相关文章

  • Hermes跨进程通信原理解析

    简述 EventBus是事件总线,用来处理一些事件及时通知的,用来处理UI或数据。但是是单进程的,不能跨进程;说到...

  • Android进程通信框架Hermes原理探究

    先简单温习下AIDL通信机制: 服务端 创建Service等待客户端发来连接请求。创建AIDL文件,将暴露给客户端...

  • EventBus开发之旅2-跨进程架构Hermes分析到手写实现

    一、什么是Hermes? Hermes是饿了么提供的一个开源框架,实现跨进程通信。它不需要通过aidl实现跨进程。...

  • Android通信v2.0

    跨网络通信 Socket本地通信,进程从zygote进程fork的指令都是用socket本地通信的 跨应用/进程通...

  • Binder机制

    进程间通信方式 Android Binder框架图 Android系统框架 IPC 进程通信原理 Binder原理...

  • Binder进程间通信-JAVA层

    进程间通信基本原理 进程间通信原理 Binder是什么? IPC(Inter-Process Communicat...

  • 跨进程通信原理解析

    Binder架构的组成 Binder框架有3个方面组成:Binder服务端、Binder驱动以及客户端组成。 Bi...

  • Android

    ContentProvider 作用 进程间数据共享 即跨进程通信 原理 Binder进程间通信结合匿名共享内存(...

  • AIDL使用以及原理分析

    AIDL使用以及IPC原理分析(进程间通信) 概要 为了大家能够更好的理解android的进程间通信原理,以下将会...

  • Android Binder 机制学习2 - Linux 下传统

    在了解 Binder 跨进程通信原理之前, 我们先了解一下 Linux 传统的进程间通信的概念和基本原理, 这样有...

网友评论

      本文标题:Hermes跨进程通信原理解析

      本文链接:https://www.haomeiwen.com/subject/nxbtxrtx.html