最近开发中遇到一个问题
联网管控时,后台对应客户端每个UI组件定义了参数名,通过参数对应表转化为底层管控参数,再进行下发。
断网时需要在客户端侧进行相同的转化。
首先在联网时通过接口获取后端参数对应表并保存在本地数据库中,这部分采用Room架构。
在获取转化关系式时,由于对应关系非线性且每个设备转化关系式不同,后台通过json表达式进行存储和解析,客户端为实现该转化关系,需要引入JavaScript引擎进行json解析。
参考如下笔记
Android 与JS交互总结(包括J2V8)
Android JavaScript 引擎学习之初探 V8
官网链接
使用方法
1、
build.gradle
引入 //JavaScript 引擎 V8
implementation 'com.eclipsesource.j2v8:j2v8:4.8.0@aar'
2、使用方法如下
//初始化JS引擎
V8 runtime = V8.createV8Runtime();
//JS代码 注意:根据JS表达式确定返回值类型
Integer paramsVal = runtime.executeIntegerScript(""
+ "var e = " + eleValue + ";\n"
+ "var value = " + ele2paramsExp + ";\n"
+ " typeof(value) === 'number' ? value : 0");
//手动释放资源
runtime.release();
网友评论