2012-08-16 16 views
7

Tengo cierta confusión sobre el ciclo de vida del código nativo en las API de Android. He visto referencias que dicen que el código nativo se ejecuta dentro de la máquina virtual Dalvik, pero ¿es eso cierto? Tenía la impresión de que la VM solo ejecuta bytecode de Dalvik. Por otro lado, el código nativo usa JNI que se llama desde Java dentro de la máquina virtual. Por último, ¿el uso de NativeActivity hace alguna diferencia?Dónde exactamente se ejecuta el código nativo NDK

Pensé que estaba entendiendo el NDK bastante bien, hasta que me senté e intenté explicármelo. Ni siquiera estoy seguro de hacer la pregunta de manera sensata.

Respuesta

8

He visto referencias que dicen que el código nativo se ejecuta dentro de la VM Dalvik, pero ¿es eso cierto?

Se ejecuta dentro de un proceso que contiene una VM Dalvik. Personalmente, no lo describiría como una ejecución dentro de la VM, como usted dice, Dalvik bytecode se ejecuta dentro de la VM. "Bajo el control de Dalvik VM" sería mejor redacción, en mi humilde opinión. Por supuesto, se reduce a su definición de "en", supongo.

Por último, ¿el uso de NativeActivity hace alguna diferencia?

En realidad no, en la medida NativeActivity is implemented in Java. Mientras que es posible que no tenga Java, Java aún está ligeramente involucrado en el acto de ejecutar su código nativo.

+0

Gracias por aclarar las cosas. En cuanto a la implementación de la Actividad nativa, parece que en realidad es solo un envoltorio para las llamadas JNI al código nativo. – CatShoes

Cuestiones relacionadas