Utilizo un Parcelable personalizado para transportar algunos datos a un BroadcastReceiver. Esto es lo que hago:ClassNotFoundException al usar personalizado Parcelable
Registre mi intento y establezca el Parcelable adicional en él junto con un cargador de clases adicional (intent.setExtraClassLoader (..)). A continuación, programo la ejecución de la transmisión a través de un AlarmManager.
Así que cuando el AlarmManager se dispara, mira mi intención con su paquete que no puede procesar, ya que no usa el cargador de clases suministrado (tal como lo cose).
Creo que el cargador de clases se pierde cuando Inten.fillIn copie el intento a uno nuevo (ver el seguimiento de la pila).
02-21 21:09:25.214: WARN/Intent(52): android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.company.project.MyParcelable
02-21 21:09:25.214: WARN/Intent(52): at android.os.Parcel.readParcelable(Parcel.java:1822)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Parcel.readValue(Parcel.java:1713)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Parcel.readMapInternal(Parcel.java:1947)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Bundle.unparcel(Bundle.java:169)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Bundle.putAll(Bundle.java:242)
02-21 21:09:25.214: WARN/Intent(52): at android.content.Intent.fillIn(Intent.java:4530)
02-21 21:09:25.214: WARN/Intent(52): at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:185)
02-21 21:09:25.214: WARN/Intent(52): at android.app.PendingIntent.send(PendingIntent.java:400)
02-21 21:09:25.214: WARN/Intent(52): at com.android.server.AlarmManagerService$AlarmThread.run(AlarmManagerService.java:636)
¿Hay alguna forma de evitar ese problema? Cualquier ayuda sería apreciada.
Gracias
El AlarmManager está programada cuando se recibe una acción BOOT_COMPLETED. Entonces no comienzo la intención en mi aplicación. ¿Hay una mejor manera de manejar la situación? – Moritz
¡Oh! Ya veo. No lo noté en el seguimiento de la pila. Fuera del manguito, parece que no puedes usar un 'Parcelable' personalizado con un' PendingIntent', que apesta un poco. En lugar de usar 'Parcelable', es posible que deba serializar su objeto de otra forma (por ejemplo, a' Bundle', a 'String'). – CommonsWare
Sí, canalizar los datos a través de un objeto adicional es una forma de hacerlo. Aunque lo más extraño es que obtengo la excepción mencionada, pero mi objeto de datos se transfiere en realidad. Entonces funciona, pero derrama la excepción todo el tiempo, lo cual es confuso y amenazante. – Moritz