Parcel.readException pasando un objeto al servicio remoto

Escribí un servicio remoto que los clientes pueden iniciar sesión con los mecanismos habituales de IPC proporcionados por Android y el enlace parece funcionar. El problema surge cuando voy a llamar a un método en el que tengo que pasar un objeto como un parámetro porque recibo esta excepción "curiosa":

10-19 15:09:04.601: ERROR/AndroidRuntime(2985): FATAL EXCEPTION: main 10-19 15:09:04.601: ERROR/AndroidRuntime(2985): java.lang.NullPointerException 10-19 15:09:04.601: ERROR/AndroidRuntime(2985): at android.os.Parcel.readException(Parcel.java:1253) 10-19 15:09:04.601: ERROR/AndroidRuntime(2985):at android.os.Parcel.readException(Parcel.java:1235) 10-19 15:09:04.601: ERROR/AndroidRuntime(2985): at it.domod.commons.interfaces.DeviceManager$Stub$Proxy.sendCommand(DeviceManager.java:121) 

Parece ser lanzado desde la clase de proxy generada desde el archivo .aidl.

Lo más extraño es que el objeto parece ser pasado correctamente, pero probablemente hay algo mal alrededor. ¿Alguna idea?

He estado encontrando este problema también y después de un poco de empujar alrededor encontró el problema. Voy a publicar mi solución en caso de que ayude a otros encontrados a la deriva en el mismo barco.

En primer lugar, la depuración del subproceso remoto no funciona en Eclipse a menos que habilite la depuración en el servicio remoto. Para hacer esto, necesitaba ejecutar la aplicación y poner un punto de interrupción en mi primera actividad que acaba de enlazar el servicio, una vez que el servicio está funcionando, abrir la ventana DDMS en eclipse y seleccionar el hilo remoto y presione el botón de depuración. Ahora es posible saltar de nuevo a la ventana de java y agregar sus puntos de interrupción en el servicio remoto y hacer que se activen.

A partir de ahí me encontré con mi problema era en realidad estaba tratando de operar en un objeto puntero nulo en mi función stub en el proceso remoto que a su vez se inyecta una excepción de paquete para nullpointerexception en el resultado que estaba volviendo y se ve como lo que esta pregunta original está pidiendo acerca de.

Mi solución fue simplemente para probar el objeto no era nulo antes de usarlo 🙂

Es decir, he añadido la instrucción 'if' como se esperaría en la implementación de la función stub …

 if( myobject != null ) { myobject.dosomething() } 
  • Excepción de ventana filtrada aunque no se utilice ningún servicio
  • ¿Por qué no se inicia el servicio después de BOOT_COMPLETED?
  • Servicio reiniciado en la aplicación Cerrar - START_STICKY
  • ¿Cómo puede un servicio escuchar los gestos / eventos táctiles?
  • Puntero nulo en getApplicationContext ()
  • Android cómo mantener la biblioteca nativa cuando la aplicación se detuvo
  • ¿Cómo comprobar si SpeechRecognizer se está ejecutando actualmente?
  • Actividad abstracta de Android en el manifiesto
  • Android Service Exchange siempre se bloquea
  • Cómo iniciar la aplicación Android de sólo servicio
  • ¿Cómo inicio un servicio que se define en un paquete diferente?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.