gpt4 book ai didi

javascript - Android 的 JNI JavaScript 绑定(bind)是否有效地将 TypedArray/ArrayBuffer 作为数组传递给 Java?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:08 26 4
gpt4 key购买 nike

在 Android JNI 绑定(bind)中,您可以将 Java 方法(例如 method(int[] intArray) {} 公开给 JavaScript,将其传递给 JavaScript 数组,并期望绑定(bind)转换该 JavaScript数组到 int[]。 Android 是否具有相同的处理方式? Uint8Array()?

最佳答案

在 Android 的 WebView 中运行的 JavaScript 引擎不支持 Uint8Arrays 或任何其他类型的数组(从 2.3.3 开始)。

编辑:我用模拟器做了更多测试,我有混合的东西要报告。

从好的方面来说,Android 3.x 的 WebView 中的 JavaScript 引擎确实支持类型化数组,但 Float64Array 除外。

不利的一面是,通过 WebView.addJavascriptInterface() 连接到 Java 的 JNI 接口(interface)根本不转换类型。这是我用来测试它的代码:

var u8arr = new Uint8Array(4);
u8arr.set([2, 3, 5, 7]);
android.log(u8arr);

android.log() 的 Java 函数基本上是这样的:

public void log(final int[] data) {
final String dataInfo = (data == null) ? "NULL" : "[" + data.length + "]";
Log.d("JsJni", "data=" + dataInfo);
/* ... */
}

当我使用标准 Array() 类型的 JavaScript 对象调用 android.log 时,我会得到人们期望的结果(绑定(bind)到数据的数组、类型转换等...) Uint8Array 对象(或任何其他类型化数组,就此而言,包括 Int8Array、Int16Array 和 Int32Array),数据为 null

Android 3.0和3.2是一样的

关于javascript - Android 的 JNI JavaScript 绑定(bind)是否有效地将 TypedArray/ArrayBuffer 作为数组传递给 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6996986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com