Android que mata a mi aplicación

Estoy trabajando con una aplicación de prueba para la comunicación entre un teléfono Android (Galaxy SIII, Android 4.1.2) y arduino con MicroBridge (a través de adb). La aplicación android hace todo el trabajo utilizando ndk con un lado java sólo para empezar las cosas y mostrar algunos datos.

Las cosas funcionan bien para los años 30-60, pero luego mi aplicación se cierra repentinamente y no puedo entender por qué. Mirando la salida logcat, no es un accidente; Las cosas se están cerrando de la manera normal. Android parece estar diciendo a mi aplicación para cerrar. Lo único que puedo encontrar es esta secuencia de líneas logcat siempre justo antes de mi aplicación está cerrada.

D/MTPRx (29019): DRIVER_TIME_OUT 60s lapsed D/MTPRx (29019): still no open session command from host, so toast E/MTPRx (29019): started activity for popup 

No estoy seguro de exactamente por qué está relacionado, pero creo que hay una conexión en algún lugar. Como lo implica la primera línea, si espero para iniciar mi aplicación hasta un par de minutos después de conectar el cable USB, parece que funciona bien.

¿Alguien sabe lo que está sucediendo aquí y, lo que es más importante, cómo evitar que mi aplicación se cierre?

UPDATE: Sólo un poco más de información de las pruebas adicionales:

  1. Restringir el arduino a la simple consulta de la interfaz adb no soluciona el problema.
  2. Si comento el arduino básicamente tiene un bosquejo en blanco (es decir, no intenta comunicarse) el problema desaparece.
  3. La conexión a un PC (con el servidor adb ya en ejecución) en lugar del arduino muestra el mismo problema.
  4. El mismo problema ocurre en un Galaxy S4 (android 4.3) que se conecta al PC

Compruebe si libc lanza alguna excepción, esto podría ser un bloqueo en su código NDK que cierra la aplicación

He golpeado este problema recientemente y pensé que compartiría lo que encontré, ya que este es el único lugar que aparece cuando se busca este problema en Google.

Mi configuración es: Samsung Galaxy Camera con Android 4.1.2 conectado a una placa IOIO. Mi problema fue que 60 después de conectar el dispositivo a la placa IOIO mi actividad de primer plano se detuvo y luego se reanudó inmediatamente. El registro de Adb contenía las mismas líneas de MTPRx que en la pregunta original. Esto fue un problema para mí porque mi actividad era la grabación de un video y detuve la grabación en el controlador onPause.

Resulta que MRPRx es un daemon que maneja el protocolo MTP. Aparentemente la placa de IOIO no hace ningún intento de hablar MTP y esto lanza el daemon apagado. Lo que a su vez hace que la actividad de primer plano actual se detenga.

No he encontrado una manera de evitar que esto suceda, pero ya que en las versiones modernas de Android el estado de pausa de una actividad no se puede matar, decidí trabajar en torno a mover todo, desde el controlador onPause a la onStop. Esto funcionó bien para mí, pero puede no ser adecuado en todos los casos.

Estos hallazgos no explican completamente todos los síntomas descritos por el TS, así que tal vez hay algo más en marcha.

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