Je développe une interface de message entre les services qui appartiennent à différents apk Android.Android - Passage sérialisable ou parcelable en bundle entre les services sur différents apk
Le service d'expéditeur peut envoyer un message, implémenté en tant que Bundle
, au service récepteur. Les types primitifs comme String ou boolean sont correctement échangés.
L'étape suivante consiste à échanger des objets plus complexes, définis dans une bibliothèque, partagés entre les différents services. Ces objets implémentent l'interface Parcelable
ou l'interface Serializable
, afin qu'ils puissent être encapsulés dans un Bundle
, en utilisant les méthodes putParcelable
et putSerializable
.
Malheureusement, cette solution ne fonctionne pas. Dans l'objet bundle reçu par le service, l'objet parcelable (ou sérialisable) est remplacé par un String
. Il semble que Android appelle la méthode toString
de l'objet avant d'envoyer le Bundle au service récepteur.
Existe-t-il une solution à ce problème sans implémenter des méthodes permettant de sérialiser chaque objet sur un Bundle
formé uniquement de types primitifs?
Qu'est-ce qui se passe lorsque vous appelez 'getParcelable()' du Bundle? Avez-vous obtenir null? – NoChinDeluxe
il y a quelque chose qui ne va pas dans votre code: vous pouvez facilement passer n'importe quel 'Parcelable' dans les transactions Binder – pskink
@NoChinDeluxe quand j'appelle' getParcelable() 'effectuer un cast au type attendu, une exception de cast de classe est levée parce que l'élément dans le 'Bundle' est considéré comme un objet' String'. – LucaRoverelli