7

我对 Android 应用程序中本机代码的生命周期有些困惑。我看过一些参考资料说本机代码是在 Dalvik VM 内部执行的,但这是真的吗?我的印象是虚拟机只运行 Dalvik 字节码。另一方面,本机代码使用从 VM 内部的 Java 调用的 JNI。最后,使用 NativeActivity 有什么不同吗?

我以为我对 NDK 的理解相当好,直到我坐下来尝试向自己解释它。我什至不确定我是否以明智的方式提出问题。

4

1 回答 1

8

我看过一些参考资料说本机代码是在 Dalvik VM 内部执行的,但这是真的吗?

它在包含 Dalvik VM 的进程内执行。就个人而言,我不会将其描述为在 VM 内部执行——正如您所说,Dalvik 字节码在 VM 内部执行。“在 Dalvik VM 的控制下”会更好的措辞,恕我直言。当然,我想这归结为你对“in”的定义。

最后,使用 NativeActivity 有什么不同吗?

不是真的,只要NativeActivity是在 Java 中实现的。虽然可能没有任何 Java,但 Java 仍然轻微地参与了运行您的本机代码的行为。

于 2012-08-16T18:05:13.063 回答