Android NDK: ¿JNI "principal" para tratar los mensajes?

Estoy tratando de crear una aplicación de Android que use una biblioteca C existente para alguna operación en segundo plano (es decir, hace algunos escaneos de radio, sintoniza estaciones, etc.). Como un ejecutable de C independiente, el ciclo principal puede manejar el manejo de mensajes desde niveles inferiores (componentes de hardware). Según tengo entendido, al usar JNI, no se requiere ninguna función principal porque

1) se crea una biblioteca compartida y

2) la biblioteca compartida está "viva" mientras el subproceso de Java que la cargó esté vivo.

Entonces, suponiendo que la biblioteca C usa múltiples subprocesos: ¿dónde debería hacerse el manejo de mensajes que normalmente se realiza en el ciclo principal inicial? ¿Es tan simple como llamar a funciones C que se declaran junto con las funciones JNI?

preguntado el 27 de julio de 12 a las 16:07

1 Respuestas

Re 2) la biblioteca está "viva" en el sentido de que persiste en la memoria. Pero no hace nada por sí mismo. Si necesita que la biblioteca "haga algo", incluso si no se llama a ninguna función a través de JNI, entonces, por supuesto, necesita un subproceso nativo separado. Puede crear el hilo e iniciar un bucle de mensajes dentro de una llamada de función JNI regular (método init o uso JNI_OnLoad para ese propósito). Seguirá ejecutándose cuando regrese la llamada a la función JNI. Entonces también necesita un método de desmontaje que detenga el hilo y lo rompa (JNI_OnUnload se puede usar para eso)

Respondido 29 Jul 12, 17:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.