NDK本机代码到底在哪里执行

时间:2012-08-16 17:57:08

标签: android android-ndk

我对Android aps中本机代码的生命周期感到困惑。我看到过引用,说本机代码是在Dalvik VM中执行的,但这是真的吗?我的印象是VM只运行Dalvik字节码。另一方面,本机代码使用JNI,它可以从VM内部的Java调用。最后,使用NativeActivity会有什么不同吗?

我以为我对NDK的了解相当不错,直到我坐下来试图向自己解释。我甚至不确定我是否以明智的方式提问。

1 个答案:

答案 0 :(得分:8)

  

我见过引用说本机代码是在Dalvik VM中执行的,但是这是真的吗?

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

  

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

NativeActivity is implemented in Java而言,并非如此。虽然可能没有任何Java,但Java仍然在轻松参与运行本机代码的行为。