У меня есть проект Android (нацеленный на Android 1.6 и выше), который включает нативный код, написанный на C / C ++, доступ к которому осуществляется через NDK. Мне интересно, какой самый эффективный способ - передать массив байтов из Java через NDK в мой слой клея JNI. Меня беспокоит вопрос, скопирует ли NDK для Android массив байтов или просто даст мне прямую ссылку. Мне нужен доступ только для чтения к байтам на уровне C ++, поэтому любое копирование за кулисами было бы пустой тратой времени с моей точки зрения.
Легко найти информацию об этом в Интернете, но я не уверен, что это самая важная информация. Примеры:
Получить указатель Java ByteBuffer через JNI
http://www.milk.com/kodebase/dalvik-docs-mirror/docs/jni-tips.html
http://elliotth.blogspot.com/2007/03/optimizing-jni-array-access.html
Так кто-нибудь знает, каков наилучший (самый эффективный, наименее копирующий) способ сделать это в текущем NDK? GetByteArrayRegion? GetByteArrayElements? Что-то еще?