我对 Android 应用程序中本机代码的生命周期有些困惑。我看过一些参考资料说本机代码是在 Dalvik VM 内部执行的,但这是真的吗?我的印象是虚拟机只运行 Dalvik 字节码。另一方面,本机代码使用从 VM 内部的 Java 调用的 JNI。最后,使用 NativeActivity 有什么不同吗?
我以为我对 NDK 的理解相当好,直到我坐下来尝试向自己解释它。我什至不确定我是否以明智的方式提出问题。
我对 Android 应用程序中本机代码的生命周期有些困惑。我看过一些参考资料说本机代码是在 Dalvik VM 内部执行的,但这是真的吗?我的印象是虚拟机只运行 Dalvik 字节码。另一方面,本机代码使用从 VM 内部的 Java 调用的 JNI。最后,使用 NativeActivity 有什么不同吗?
我以为我对 NDK 的理解相当好,直到我坐下来尝试向自己解释它。我什至不确定我是否以明智的方式提出问题。
我看过一些参考资料说本机代码是在 Dalvik VM 内部执行的,但这是真的吗?
它在包含 Dalvik VM 的进程内执行。就个人而言,我不会将其描述为在 VM 内部执行——正如您所说,Dalvik 字节码在 VM 内部执行。“在 Dalvik VM 的控制下”会更好的措辞,恕我直言。当然,我想这归结为你对“in”的定义。
最后,使用 NativeActivity 有什么不同吗?
不是真的,只要NativeActivity
是在 Java 中实现的。虽然您可能没有任何 Java,但 Java 仍然轻微地参与了运行您的本机代码的行为。