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

框架结构图

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

使用方法

创建一个Commond指令

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

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

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

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

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

执行一个指令

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

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

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: