Intereting Posts
Нажмите кнопку «Назад», чтобы показать обновленное значение в действии В чем разница между BaseAdapter и ArrayAdapter? CircledImageView всегда имеет прямоугольное изображение перед кругом Получение идентификатора Raw ID из идентификатора Как вы программным образом начинаете выбранный вами Daydream? В чем разница между getWidth / Height () и getMeasuredWidth / Height () в Android SDK? Что означает MEDIA_ERROR_SERVER_DIED? Как установить пользовательский шрифт в контекстную панель действия sherlock? Изменение размера видео в соответствии с VideoView Кордова – обнаруживает, что приложение находится в фоновом режиме Событие паузы Phonegap / Cordova, вызванное возобновлением для android; Не может отключить звук в результате Ionic build android выбрасывает ошибку «Uh oh!» После обновления кордовы Когда активируется функция «Поверхность»? Вызвать события фрагмента из активности Рекурсивная запись в executePendingTransactions при использовании GoogleApiClient во фрагменте

Является ли привязка JavaScript JNI для Android эффективно передавать TypedArray / ArrayBuffer в Java в виде массива?

В привязке JNI для Android вы можете выставить Java-метод, такой как method(int[] intArray) {} на JavaScript, передать ему массив JavaScript и ожидать привязки для преобразования этого массива JavaScript в int[] . Есть ли у Android одинаковая обработка, например, Uint8Array() ?

Механизм JavaScript, который работает в веб-браузере Android, не поддерживает Uint8Arrays или любые другие типизированные массивы (начиная с 2.3.3).

EDIT: Я сделал еще несколько тестов с симуляторами, и у меня есть смешанные вещи, чтобы сообщить.

С положительной стороны, механизм JavaScript в WebView Android 3.x поддерживает типизированные массивы, за исключением Float64Array.

С минусовой стороны интерфейс JNI для Java через WebView.addJavascriptInterface () не преобразует типы вообще. Это код, который я использовал для его проверки:

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

И функция Java для android.log () выглядит в основном так:

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

Когда я вызывал android.log со стандартным объектом JavaScript типа Array (), я бы получил результаты, которые можно было бы ожидать (массив привязан к данным, преобразование типов и т. Д.). Когда android.log вызывается с объектом Uint8Array ( Или любые другие типизированные массивы, в том числе Int8Array, Int16Array и Int32Array), данные равны нулю .

То же самое и между Android 3.0 и 3.2