用AIDL完成可跨进程通信的WebView框架

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

至今为止做过的项目里,H5和android的通信都是一个个方法写好,用注解标识,然后互相调用,而且还都写在同一个地方,甚至有些没把WebView放到另一个进程中去,而且方法多了,显得特别臃肿和混乱。之前写过一个可跨进程的WebView框架,经过学习之后做出了改进。虽然还有很多可优化的点,这就算先记录下来吧

框架结构图

各个类之间的关系就是这样,调用流程也差不多就是这样

使用方法

创建一个Commond指令

一个指令为一个方法,又或者你可以创建一个通用指令,再或者你可以进行封装都可以。

这里通过打开一个Activity的简单指令来介绍

  • 首先,一个指令必须继承Command并实现两个方法,CommandName执行方法(指令名称要和H5端保持一致的)

  • 其次使用 AutoService 注解去标志他属于 Command.class,方便后续查找(AutoService可通过自定义注解替代)

  • 参数callback属于AIDL文件,如果有数据回调可以使用,没有可以不用管

执行一个指令

指令在android端创建,接着等着H5端来调用我们的方法

  • 如下,H5端想调用上面创建的指令,只需要在方法中,传入指令名称'openActivity'和message参数,android端就可以在本地指令集中找到对应指令,并根据message执行相应操作

WebView跨进程通信框架源码分析 我们都知道webView是加载解析网页代码用的,但是如果webView加载的网页数据过大的话就会消耗本进程的内存空间,从而影响app的性能;因为,系统给每个app的进程分配的空间是有限的,过多的使用空间会造成进程空间资源不足;因此,遇到这种情况我们最好给webView开一个独立进程,这样的话app主进程就节省了加载webView资源的空间 webView与native通信 我们知道webView 在与本地代码互相调用的时候 ... 阅读详情

相关推荐

Android-安卓跨进程跨app通信框架

框架实现了安卓跨进程跨app通信的方便调用和封装

Thorium浏览器:为什么这个性能怪兽值得你立即尝试?

如果你对浏览器性能有极致追求,或者对Google Chrome的隐私政策感到担忧,Thorium浏览器可能是你的完美解决方案。这款基于Chromium深度优化的浏览器以放射性元素"钍"命名,不仅继承了Chrome的所有功能,还通过多项性能优化和隐私增强特性,为用户提供了更快、更安全、更可控的浏览体验。 ## 🚀 性能革命:SIMD指令集带来的速度飞跃 Thorium最引人注目的特性之一是其针

gitblog_00209的博客 254

Android-ProcessRouteforAndroid跨进程事件路由框架

ProcessRoute for Android 跨进程事件路由框架

Android Framework跨进程通信IPC之6——Binder框架

Android 从下而上分了内核层、硬件抽象层、系统服务层、Binder IPC 层、应用程序框架Android 中"应用程序框架层"以 SDK 的形式开放给开发者使用,“系统服务层” 中的核心服务随系统启动而运行,通过应用层序框架层提供的 Manager 实时为应用程序提供服务调用。系统服务层中每一个服务运行在自己独立的进程空间中,应用程序框架层中的 Manager 通过 Binder IPC 的方式调用系统服务层中的服务。简单的说,Binder是Android平台上的一种跨进程通信技术。

Gaga246的博客 5415

史上最简单Robotium跨进程操作实践——基于ADB框架(转)

https://blog.csdn.net/qingchunjun/article/details/42580937?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4

1691

使用AIDL跨进程通信

之前对IPC的研究有接触到AIDLAIDL的作用实际上就是跨进程通信,因为进程间是各自维护着自己的一个内存,当前进程想要访问到其他进程的内存,就可以通过AIDL来实现。 假定现在进程1(服务端)中有一个学生信息的集合,现在要在进程2(客户端)通过学生ID获取到进程1中集合中某个学生的信息。下图为结构图: 首先,需要创建Student类://必须序列化,不然无法传输二进制对象 public

QAQ 582

Android IPC(三)AIDL实现跨进程通信

AIDL实现连接服务 AIDL实现消息服务(客户端→服务端) AIDL实现消息服务(服务端→客户端) Demo结构: 大家学习的时候注意要对应上我的Demo结构路径,否则会出现找不到文件的问题,如果你对AIDL文件很熟悉的话,路径可以随自己喜欢选择。 中间的 IConnectionService、IMessageService等等这块区域的代码是在Android Studio编译时自动生成的 MyBean.aidl package com.jlink.aidldemo.entity; //对应ja

qq_27494201的博客 1212

Android IPC机制(三)——利用AIDL实现跨进程通信

**写作原因:跨进程通信的实现和理解是Android进阶中重要的一环。下面博主分享IPC一些相关知识、操作及自己在学习IPC过程中的一些理解。这一章是对AIDL的基本使用的介绍,由于博主也是AIDL初学者,所以一些地方阐述可能不准确,如有发现希望指正。关于使用Messenger通信参阅:Android IPC机制(二)——利用Messenger实现跨进程通信 **https://developer

RoadToGeek技术小栈 632

Android使用Aidl实现跨进程通信

前面一篇博客已经介绍了跨进程通信的几种方式,这篇博文主要实现一下Aidl方式的跨进程通信

caicdd007的专栏 651

HermesEventBus-饿了么开源的Android跨进程事件分发框架

由于Android不同进程之前不能相互通信,所以当开发过程中遇到跨进程通信的时候,常用的方案就是AIDL(Android Interface Definition Language)通过它我们可以定义进程间的通信接口,但是当应用中出现大量跨进程通信的时候,比如你想体验一下插件化开发或者特殊需求在单应用中需要开多个进程,那么写过AIDL的同学都会有痛不欲生的感觉。现在福利来了,可以试试饿了么开源了一款

Dream It Possible 6383

Android跨进程通信

1. Binder是什么 从机制上来说: Binder是Android中一种跨进程通信的方式 从Binder机制实现来说: Binder是一种虚拟的物理设备驱动 从Java层面来说: Binder是一个类,实现了IBinder接口。 2. Binder机制 2.1 背景知识 2.1.1 进程空间划分 一个进程空间分为 用户空间 & 内核空间(Kernel),即把进程内 用户 & 内...

吓成一坨兔子 3118

最新android跨进程通信的库,安卓跨进程跨app通信框架

MagicMessenger安卓跨进程跨app通信框架框架实现了安卓跨进程跨app通信的方便调用和封装使用方法:第一步:在 application 里面初始化MagicMessenger.init(this); //跨进程需要MagicMessenger.bindOtherAPP(this, "包名"); //跨app需要,不跨app可以去掉跨app需要主app初始化跨进程功能,客app初始化跨...

weixin_31445091的博客 2338

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

概述 Github地址:https://github.com/Xiaofei-it/Hermes Android进程间通信IPC框架 像调用本地函数一样调用其他进程的函数 在本地进程创建其他进程类的对象 在本进程获取其他进程的单例 在本进程使用其他进程的工具类 支持进程间函数回调,调用其他进程函数的时候可以传入回调函数,让其他进程回调本进程的方法 自带内存优化,内置两个垃圾回收器,地进程在远...

boolean的博客 4164

饿了么跨进程框架Hermes简单使用

文章目录1 添加依赖2 初始化3 注册3.1 完整的MainActivity:3.2 UserStorage:3.3 IUserStorage:3.4 UserInfo:4 连接5 子进程发送请求6 主进程处理请求 参考: https://github.com/Xiaofei-it/Hermes-IPC-Demo https://github.com/Xiaofei-it/Hermes/blob/...

hongxue8888的博客 2056

Android——GT.EventBus 跨进程 全面解析教程

目前将这个传递数据的新框架命名为 GT.EventBus 里面核心实现原理与 市面上流行的 EventBus 是一样的,在功能上有细微差别,功能上进行了史诗级增强.且支持跨进程传递数据

GSLS 8783

【Framework】Android跨进程通信IPC之2——Bionic

本次分享Android跨进程通信IPC之2——Bionic一、为什么要学习BionicBionic库是Android的基础库之一,也是连接Android系统和Linux系统内核的桥梁,Bionic中包含了很多基本的功能模块,这些功能模块基本上都是源于Linux,但是就像青出于蓝而胜于蓝,它和Linux还是有一些不一样的的地方。

Gaga246的博客 1434

Android跨进程数据库优化,介绍几种Android支持跨进程共享数据的开源框架

前言因为将原项目的单进程架构改为多进程架构,引发了不少跨进程调用和跨进程使用共享数据的问题。本篇文章分享几个我在跨进程共享数据时使用的开源框架。对跨进程调用感兴趣的同学,可以参阅另一篇文章《跨进程的EventBus,开源框架HermesEventBus使用小结》介绍了一种基于AIDL跨进程开源框架的使用。跨进程的SharedPreference——Tray首先官方已经在API23后废除了Shar...

weixin_29162439的博客 1006
上一篇: Android——自定义Dialog的两种常见方式
下一篇: Android 之Preference控件
敢嗣先锋
博客等级 码龄3年 1255粉丝 · 242原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值