我对 Android 应用程序中原生代码的生命周期有些困惑。我看到引用资料说 native 代码是在 Dalvik VM 中执行的,但这是真的吗?我的印象是虚拟机只运行 Dalvik 字节码。另一方面, native 代码使用从 VM 内部的 Java 调用的 JNI。最后,使用 NativeActivity 有什么不同吗?
我认为我对 NDK 的理解相当好,直到我坐下来尝试向自己解释它。我什至不确定我是否以明智的方式提出问题。
最佳答案
I have seen references that say that the native code is executed inside the Dalvik VM, but is that true?
它在包含 Dalvik VM 的进程中执行。就个人而言,我不会将其描述为在 VM 内部执行——正如您所说,Dalvik 字节码在 VM 内部执行。恕我直言,“在 Dalvik VM 的控制下”会更好。当然,我想这归结为您对“在”的定义。
Lastly, does the use of NativeActivity make any difference?
不是真的,就NativeActivity
is implemented in Java而言.虽然您可能没有任何 Java,但 Java 仍然轻微地参与了运行您的 native 代码的行为。
关于android - NDK原生代码具体执行在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11992836/