Est-il possible d'envoyer un objet à un service Android via une intention sans réellement lier le service? Ou peut-être une autre façon pour le service d'accès aux objets ...Envoi d'un objet à un service via Intent sans liaison
Répondre
Vous pouvez appeler startService (intention) comme ceci:
MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
L'objet que vous souhaitez envoyer doit mettre en œuvre Parcelable (vous pouvez vous référer à cette 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
}
}
et avec le service, dans la méthode onStart() ou onStartCommand() pour le niveau api 5 et plus récent, vous pouvez obtenir l'objet:
MyObject obj = intent.getParcelableExtra("object");
C'est tout :)
Comme Bino dit, vous devez avoir votre objet personnalisé implémenter l'interface Parcelable si vous voulez passer à un service via une intention. Cela rendra l'objet "sérialisable" au sens IPC Android, de sorte que vous puissiez le transmettre à l'objet d'un objet putExtra (String, Parcelable).
Pour les types primitifs simples, il existe déjà un tas de méthodes setExtra (String, primitive type). Comme je vous comprends, cependant, ce n'est pas une option pour vous, c'est pourquoi vous devriez aller chercher un colis.
Si vous ne voulez pas mettre en œuvre Parcelable et votre objet est sérialisable
utilisent ce
Dans l'expéditeur Activiy
Intent intent = new Intent(activity, MyActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("my object", myObject);
intent.putExtras(bundle);
startActivity(intent);
Dans le récepteur:
myObject = (MyObject) getIntent().getExtras().getSerializable("my object");
Fonctionne bien pour moi l'essayer. Mais l'objet doit être sérialisable :)
Pour moi si travaillé, mais je devais changer quelque chose, sur la partie émettrice: 'intention.putExtra (" passé objet ", bundle.getSerializable (" mon objet "));' Et sur la partie de réception: 'myObject = (MonObjet) intention.getExtras(). GetSerializable (" objet passé ");' – Ruocco
- 1. désérialisation des messages de msmq envoi via la liaison netmsmq
- 2. Envoi d'Excel à un utilisateur via ASP.NET
- 3. Envoi de classes Linq à SQL via le service Web
- 4. Liaison à un service dans Android
- 5. C#. Liaison objet à objet
- 6. Est-il possible d'envoyer un message via GTalk Intent?
- 7. Envoi de données du service à l'activité
- 8. Envoi dynamique et liaison
- 9. Envoi de différents paramètres à pendingIntent via la notification
- 10. Liaison de données à un objet - comment mettre à jour un objet/une liaison?
- 11. Liaison à un objet complexe dans Silverlight
- 12. Envoi de données à un site Web via HTTP
- 13. Envoi attachement PNG via l'application Android GMail
- 14. Envoi d'un objet complexe via JMS en Java
- 15. Envoi d'un objet inconnu à un RenderPartial dans MVC
- 16. Liaison/dissociant objet jquery à un élément
- 17. Connexion à un objet RMI sans registre
- 18. Envoi de courrier électronique sans Intent.createChooser
- 19. Envoi Gmail via C#
- 20. Envoi MIDI via USB via Arduino
- 21. Envoi d'images à l'application RoR via un API + trombone
- 22. Comment démarrer un service basé sur un objet ServiceInfo?
- 23. Android: Sérialisable Intent
- 24. Android - Envoi de données d'une activité à un service
- 25. Envoi d'un fichier XML brut à un service Web
- 26. Envoi d'un message à un objet membre du tableau
- 27. Python/Twisted - Envoi à un objet socket spécifique?
- 28. Envoi de messages via l'application
- 29. Envoi de cookies via WCF à l'aide de ChannelFactory
- 30. Liaison à un objet à mise à jour automatique?
Comment envoyer plus d'une valeur de données à la parcelle? J'ai deux cordes que je dois envoyer. – jax
intention.putExtra ("my.first.string", "quelque chose"); intention.putExtra ("my.second.string", "autre chose"); – hackbod
Cela ne fonctionne toujours pas pour moi. J'ai fait tout ce qui précède mais j'ai toujours des problèmes. Comment est-ce que je suis censé passer l'état entier de l'objet par le biais de Parcelable? Je sais que je peux envoyer des types de base comme String et Arrays mais par objet contient des classes plus complexes que celles-ci. – jax