2012-08-16 50 views
7

我对本地代码在Android中APS生命周期的一些混乱。我已经看到引用说,本地代码是在Dalvik虚拟机内部执行的,但这是真的吗?我的印象是虚拟机只运行Dalvik字节码。另一方面,本地代码使用在VM内部从Java调用的JNI。最后,NativeActivity的使用是否有所作为?确切位置在哪里呢NDK本地代码执行

我想我理解NDK还算不错,直到我坐了下来,并试图解释给自己。我甚至不确定我是否以合理的方式提问。

回答

8

我已经看到引用说,本机代码在Dalvik虚拟机内执行,但是这是真的吗?

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

最后,NativeActivity的使用是否有所作为?

不是,只要NativeActivity is implemented in Java。虽然可能没有任何Java,Java的仍然是轻微参与运行的本机代码的行为。

+0

感谢清理东西。看看Native Activity的实现,看起来它实际上只是对本地代码的JNI调用的包装。 – CatShoes 2012-08-16 18:41:19