¿Cómo enviar objetos de datos personalizados con Intents en Android?

Los intentos en Android son una forma elegante de pasar mensajes entre componentes desacoplados, pero ¿y si quieres enviar datos adicionales con el Intent? Sé que puedes agregar varios tipos de valores y objetos que implementan Parcelable, como extras, pero esto realmente no sirve para enviar tipos definidos por el usuario localmente (es decir, no sobre una interfaz remota). ¿Algunas ideas?

En su tipo, puede implementar la interfaz Serializable y llamar al Intent.putExtra(String, Serializable) para incluirlo en la intención. Pensé en hacerlo yo mismo por un problema similar, pero opté por poner los datos en un paquete porque mi tipo sólo habría tenido dos campos y no valía la pena el esfuerzo.

Así es como podría funcionar, suponiendo que ha implementado Serializable en Foo:

 Foo test = new Foo(); test.Name = "name"; test.Value = "value"; Intent intent = new Intent(); intent.putExtra("test", test); 

Si desea pasar objetos dentro de un solo proceso puede implementar su propia Application para mantener el estado global:

Clase base para aquellos que necesitan mantener el estado de la aplicación global. Puede proporcionar su propia implementación especificando su nombre en la etiqueta de AndroidManifest.xml, que hará que esa clase se instancia para usted cuando se crea el proceso para su aplicación / paquete.

Cuando se dice localmente, ¿significa enviar los tipos definidos por el usuario a través de las Actividades / servicios locales que pertenecen al mismo APK? Mientras que el tipo definido por el usuario es parcelable puede ser enviado como extras en la intención y se puede procesar en onStartCommand () de servicio / actividad.

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