El NDK no es nativo per se. En gran medida es un contenedor JNI alrededor del SDK de Android. El uso de NativeActivity le brinda una manera conveniente de lidiar con 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 todos los contenedores JNI de las contrapartes de Java SDK, algunos con código adicional que es privado e inaccesible para aplicaciones reales.
En lo que respecta al desarrollo de Android, no existe la posibilidad de escribir una aplicación completamente en C++ nativo; siempre (en cada caso de aplicación real que se me ocurra) siempre debe usar la API de Android: s, que en gran medida puro Java. Ya sea que uses estos a través de envoltorios proporcionados por el NDK o envoltorios que creas tú mismo realmente no cambia esto.
Por lo tanto, para responder a su pregunta: No, no valdría la pena, porque terminaría escribiendo envoltorios JNI para llamadas SDK en lugar de escribir envoltorios 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 diálogo usando "C++ puro" implica muchas llamadas JNI. Simplemente llamando a un método Java a través de JNI que haga lo mismo, obtendrá un código más rápido (una llamada JNI) y, posiblemente, un código que sea 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 sistema operativo de AActivity, ALooper, AInputQueue, etc. Google Code Search es de gran ayuda en esto. :-)
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 adicional para hacerlo con múltiples llamadas JNI. Conservar tanto de su código C++ existente como razonables.
¿Qué sucede si está creando un juego OpenGL que no necesita cuadros de diálogo y tiene su UI dibujada en 100% OpenGL? ¿Tendría más sentido el uso de NativeActivity? – Bram
En ese escenario, tendría mucho sentido. –