¿Es posible enviar un objeto a un Servicio de Android a través de un Intento sin vincularlo realmente al servicio? O tal vez otro camino para el servicio para acceder a objetos ...Enviar un objeto a un servicio a través de Intento sin enlace
Respuesta
Puede llamar StartService (Intención) así:
MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
El objeto que desea enviar debe implementar parcelable (se puede hacer referencia a esta Percelable guide)
class MyObject extends Object implements Parcelable {
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
}
}
y con el servicio, en el onStart método() o onStartCommand() para el nivel 5 de la API y la más reciente, puede obtener el objeto:
MyObject obj = intent.getParcelableExtra("object");
Eso es todo :)
Como Bino Dicho esto, es necesario tener el objeto personalizado implementa la interfaz parcelable si quieres pasarlo a un servicio a través de una intención. Esto hará que el objeto sea "serializable" en un sentido de Android IPC para que pueda pasarlos a la llamada putExtra (String, Parcelable) del objeto de Intent.
Para los tipos primitivos simples, ya hay un montón de métodos setExtra (String, primitive type). Sin embargo, como te entiendo, esta no es una opción para ti, por lo que deberías ir por un paquete.
Si no desea implementar parcelable y su objeto es serializable
uso de este
En el remitente activiy
Intent intent = new Intent(activity, MyActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("my object", myObject);
intent.putExtras(bundle);
startActivity(intent);
En el receptor:
myObject = (MyObject) getIntent().getExtras().getSerializable("my object");
Funciona bien para mí pruébalo. Pero el objeto debe ser serializable :)
Para mí si funcionó, pero tuve que cambiar algo, en la parte emisora: 'intent.putExtra (" objeto pasado ", bundle.getSerializable (" mi objeto "));' Y en la parte receptora: 'myObject = (MyObject) intent.getExtras(). GetSerializable (" objeto pasado ");' – Ruocco
- 1. Enviar objeto Java a un servicio web en reposo
- 2. Utilizar un intento para enviar datos a mi actividad
- 3. ¿Cómo implementar un enlace "enviar a Kindle"?
- 4. Enviar objetos con atributos personalizados a través de un servicio wcf
- 5. Enviar un hash de ubicación a través de un referente
- 6. ¿Cómo serializo un objeto anónimo para enviarlo a través de un servicio web SOAP?
- 7. Iterando a través de un objeto JSON
- 8. enviar un mensaje de texto a través de .net
- 9. Transmisión de argumentos a un BroadcastReceiver a través de un Intento en Android
- 10. WCF servicio no puede enviar correo a través de MailDefinition
- 11. SignalR + enviar un mensaje a un concentrador a través de un método de acción
- 12. intento de volver a abrir un objeto ya cerrado: SQLiteDatabase
- 13. Intento de volver a abrir un objeto ya cerrado: java.lang.IllegalStateException :?
- 14. Interfaz de enlace a través de ToMethod a un método con un parámetro
- 15. ¿Cómo transferir un java.util.Map a través de un servicio web?
- 16. ¿Cómo enviar un correo electrónico a través del servidor de intercambio sin usar smtp?
- 17. ¿Cuál es su método preferido para enviar datos complejos a través de un servicio web?
- 18. ¿Cómo publicitar un servicio usando Bonjour a través de subredes?
- 19. Uso de netcat para enviar un paquete UDP sin enlace
- 20. ¿Transfiriendo datos binarios a través de un servicio web SOAP?
- 21. un enlace de servicio a un android.app.Activity vs unión a un android.app.Application
- 22. Al pasar un objeto de excepción a un servicio web
- 23. Pasar un objeto como parámetro a un servicio de Windows
- 24. Cómo abrir un archivo en Android a través de un Intento
- 25. Llamar a un servicio WCF sin generar un ensamblaje
- 26. ¿Cómo pasar un URI a un intento?
- 27. ¿Enviar datos de teléfono a teléfono a través de internet?
- 28. Enviar una imagen de Android a un servicio web ASP.NET
- 29. ¿Cómo enviar un retorno de carro a través de telnet?
- 30. Serialización de pares de nombre/valor en un objeto personalizado a través del servicio web
¿Cómo envío más de un solo valor de datos al paquete? Tengo dos cadenas que necesito enviar. – jax
intent.putExtra ("my.first.string", "algo"); intent.putExtra ("my.second.string", "algo más"); – hackbod
Esto todavía no funciona para mí. He hecho todo lo anterior pero sigo teniendo problemas. ¿Cómo debo pasar el estado completo del objeto a través de Parcelable? Sé que puedo enviar tipos básicos como String y Arrays pero por objeto contiene clases más complejas que solo estas. – jax