Los Intentos de Android tienen un conveniente método toURI() que los documentos de API parecen indicar que es una forma de serializar un Intento a un URI, y luego analizarlo de nuevo en un Intent. Lamentablemente, al probar esta funcionalidad, descubrí que no serializa todos los extras, solo los tipos primitivos (booleano, int, largo, flotante, cadena). Si un intento especifica cualquiera de los extras Parcelable o array, se perderán.¿Cómo serializas las intrusiones de Android?
¿Dónde (si hay) está documentada esta limitación? ¿Hay alguna razón obvia para este comportamiento (puedo imaginar algunas dificultades con Parcelables)? Y lo más importante, ¿existe una forma recomendada de serializar y analizar los Intentos?
Mi implementación actual simplemente escribe los componentes de Intento (acción, categorías, uri de datos y extras) en una SharedPreferences. Esta estrategia no es compatible con Parcelables.
Quizás debería haber explicado mi situación. Intento almacenar intenciones semipermanentes para transmisiones que se han recibido. Estos intentos tendrán acciones y extras conocidos solo en tiempo de ejecución.La acción y los extras se usan para iniciar y detener servicios arbitrarios, también conocidos solo en tiempo de ejecución. En lugar de construir una estructura de datos personalizada para almacenar los datos de intención, pensé que sería más fácil almacenar el intento original. Por lo que dices, parece que no sabes de una mejor manera que utilizar una estructura de datos personalizada. – Alan
@ Alan: Necesitará una estructura de datos personalizada. Pocas, si las hay, las clases 'android. *' Implementan 'Serializable', que es lo que necesitarías para la serialización completa. La única forma en que se me ocurre que 'Serializable' funcione es crear tu propia subclase, hacer * it *' Serializable' y confiar en el constructor de copia 'Intent' para hacer la tarea de obtener información de un 'Intent' en su subclase' Serializable'. Para eso, solo escribiría las cosas a JSON. Pero, de nuevo, nunca me ha gustado 'Serializable'. – CommonsWare