两年前,我在android-7 (Eclair)上开发了一个增强现实框架。由于 AR 应用程序是计算密集型任务,我开发了一个 Java 活动使用的 JNI c++ 库来渲染和注册虚拟环境。在 Java 中获取的传感器读数被传递到下划线 c++ 库以计算虚拟环境的注册。三维对象由GLSurfaceView调用的本机绘图函数渲染。这会导致大量的 JNI 调用。
现在我想将应用程序移植到android-15(Ice Cream Sandwich)。从android-9(Gingerbread)开始, Android 允许使用NativeActivity。
我想了解开发 AR 应用程序的更好方法。由于每个 JNI 调用都会引入开销,因此最好避免它们。可以使用 NativeActivity 吗?我没有找到解释 NativeActivity 如何工作的详尽指南,但阅读此文档似乎无论如何都会导致大量 JNI 调用。有没有解释 NativeActivity 如何工作的架构文档?NativeActivity 是否只是避免 Java 代码的“JNI 包装器”?关于性能,使用 NativeActivity 而不是像我以前那样使用 JNI 库有什么优势吗?
非常感谢。