Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android NativeActivity

El Android NDK acaba de ser ampliado de forma significativa para incluir soporte para escribir aplicaciones de Android completamente en código nativo C / C ++. Ahora se pueden capturar eventos de entrada en el teclado y la pantalla táctil usando código nativo, e implementar el ciclo de vida de la aplicación en C / C ++ usando la nueva clase NativeActivity.

Dadas todas las capacidades nativas ampliadas, ¿valdría la pena evitar completamente Java y escribir la aplicación de Android en código nativo?

  • ¿Cómo obtener la frecuencia de muestreo y la frecuencia del archivo de música (MP3) en android?
  • ¿Cómo crear callbacks entre código androide y código nativo?
  • Cómo cambiar el archivo de salida de un mediarecorder sin detener el mediarecorder
  • Comunicación entre webview y código nativo en una aplicación para móviles
  • ¿Cómo utilizar el código ARM Assembly en un proyecto de Android?
  • Referencia indirecta no válida en la llamada NewObject
  • Android NDK: ¿Cómo anular onBackPressed en NativeActivity sin java?
  • Android: ¿puede obtener código nativo la intención de difusión del sistema android?
  • 4 Solutions collect form web for “Android NativeActivity”

    El NDK no es nativo per se. Es en gran medida un envoltorio JNI alrededor del SDK de Android. El uso de NativeActivity le brinda una forma conveniente de manejar ciertos eventos del ciclo de vida de la aplicación y agrega su propio código nativo en la parte superior. ALooper, AInputQueue etc. son todas las envolturas JNI de las contrapartes de Java SDK, algunas con código adicional que es privado y no accesible para aplicaciones reales.

    Cuando se trata de desarrollo de Android, no hay tal cosa como escribir una aplicación totalmente en nativo C + + – usted (en todos los casos de aplicación real que puedo pensar en) siempre necesita utilizar la API de Android: s, que son en gran medida Java puro. El uso de estos a través de envolturas proporcionadas por el NDK o envolturas que usted mismo crea realmente no cambia esto.

    Por lo tanto, para responder a su pregunta: No, no valdría la pena, porque terminaría escribiendo wrappers JNI para llamadas SDK en lugar de escribir wrappers JNI a sus propios métodos Java que hacen lo mismo, con menos código, código más simple y Código más rápido. Por ejemplo, mostrar un cuadro de diálogo utilizando "c ++ puro", implica muchas llamadas JNI. Simplemente llamar a un método Java a través de JNI que hace lo mismo le dará un código más rápido (una llamada JNI), y, sin duda, el código que es más fácil de mantener.

    Para entender completamente lo que puede hacer, realmente debe examinar el código fuente de Android. Comience con native_app_glue.c, que está disponible en el NDK, luego continúe con la implementación del SO de AActivity, ALooper, AInputQueue, etc. Google Code Search es una gran ayuda en esto. Todos los derechos reservados

    Si es fácil de hacer en Java, e incluye muchas llamadas, llame a un método a través de JNI que lo hace todo, en lugar de escribir todo el código extra para hacerlo con múltiples llamadas JNI. Preserve tanto de su código C ++ existente como sea razonable .

    No si usted está haciendo una solicitud estándar. El SDK de Java es más completo que su contraparte nativa en este momento, por lo que aún estaría haciendo las cosas más difíciles para usted.

    Si usted no está haciendo algo que requiere el NDK (lea: en tiempo real de rendimiento sensible), a continuación, se adhieren a Java.

    Si puedes, quédate con las aplicaciones de estilo java hasta que las versiones de Android que soporten actividades nativas constituyan una fracción significativa de la base instalada.

    Para cosas que eran difíciles de hacer antes – en particular los puertos del código existente – esto probablemente será una gran ayuda.

    No está completamente claro lo que ha cambiado en comparación con la simple escritura de su propio thin java wrapper. Por ejemplo, ¿todavía hay una copia de la MV dalvik alrededor?

    Sólo un poco de comida para el pensamiento, pero si usted tiene una aplicación en iOS y Android, algunos C / C + + código puede ser compartido. Obviamente, el iOS Obj-C y el código específico de la plataforma no funcionan en ningún otro lugar. (Idem para las cosas específicas de Android). Pero es posible que pueda tener algún código compartido que sea neutral en la plataforma.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.