Java Android本机活动和图形环境

Java Android本机活动和图形环境,java,android,c++,android-activity,android-ndk,Java,Android,C++,Android Activity,Android Ndk,我正试图深入了解android内部,我知道如何使用NDK,甚至知道它是如何工作的,但我对NDK提供的本机活动和其他本机部分有疑问。 据我所知,Android桌面环境(图形环境)是用Java编写和运行的。这是Android框架的一部分(著名图表上的蓝色)。 如果是这样的话,当从android应用程序运行C/C++代码时,我们是在linux级别上运行它,在java、dalvik和所有高级东西后面。 我的问题是我们如何才能拥有NativeActivity,创建它(使用opengl绘制)是一回事,但它在

我正试图深入了解android内部,我知道如何使用NDK,甚至知道它是如何工作的,但我对NDK提供的本机活动和其他本机部分有疑问。
据我所知,Android桌面环境(图形环境)是用Java编写和运行的。这是Android框架的一部分(著名图表上的蓝色)。
如果是这样的话,当从android应用程序运行C/C++代码时,我们是在linux级别上运行它,在java、dalvik和所有高级东西后面。
我的问题是我们如何才能拥有NativeActivity,创建它(使用opengl绘制)是一回事,但它在android系统架构中的位置是什么?它是否仍在dalvik进程实例中运行。
我感兴趣的主要事情是如何与简单(java)活动进行通信。
请帮助理解,也许有人可以提供一种图表来更好地理解这一点。

Thx提前。

从android应用程序运行C/C++代码时,您并不是在“java、dalvik和所有高级东西后面”运行它。它由Android运行时或Dalvik执行


本机活动使用JNI(java本机接口)对Android framwork进行java调用,以创建其活动。

这意味着,我调用特定平台的本机编译对象可执行文件,但它反过来又调用java?所以它看起来像一个循环?你可以把它看作一个循环。DVM/ART在本机编译的对象库中调用本机实现,该对象库调用DVM/ART来访问Java API。因此,在这种情况下,它不能为使用NativeActivity带来任何好处,因为它仍然使用Java实现,并且您必须花更多时间从本机层调用Java层。使用java活动实现会有更多的时间?我说的对吗?一旦加载,从本机到Java的调用就不多了,所以它仍然值得。如果您不需要在每一帧中自己进行Java调用,那么您应该这样做。