J'utilise différents processus (utilisant Android: Processus dans mon manifeste) Pour pouvoir utiliser plus d'un MapView dans mon application ( Comment utiliser plusieurs Mapactivités / MapVishs par application Android / processus ). Les 2 cartes sont dans différentes activités et différents onglets de mon tabhost général.
Non, je veux zoomer sur un emplacement spécifique, qui est sélectionné à travers l'utilisateur dans une autre activité. L'utilisation de variables statiques n'a pas fonctionné. Après cela, j'ai essayé de sauvegarder les données dans un fichier SharedPreferences et de le lire à nouveau sur la mapactivité. Mais cela ne fonctionne pas non plus. Les données sont écrites avec succès, mais la mapactivité ne trouve aucune donnée dans les préférences partagées. P>
est une possibilité de partager des données entre deux processus ou plus? P>
Sauvegarde des données de localisation: < / p> lecture de la lecture de la lecture: p>
3 Réponses :
Je pense Android Interface Définition Language (AIDL) peut être votre réponse ici . Je l'ai utilisé pour communiquer entre une application et un service distant à partir d'un APK séparé. Marshalling Les données ne doivent pas être compliquées si vous passez simplement quelques flotteurs. P>
Merci pour votre réponse. Je l'ai regardé, mais je n'ai pas eu de travailler avec deux activités. Aussi, je pense que c'est une surcharge de bits litille à mes fins
J'ai essayé la réponse de Jpriest et Nickt, mais ils n'ont pas fonctionné ni trop surcharger. J'ai fini par sauver les données dans un fichier et la lire à nouveau dans l'autre processus. Pas une très belle solution mais au moins cela a fonctionné. P>
Une méthode simple est les préférences partagées. Utilisez le drapeau "context.mode_multi_process" pour obtenir vos préférences partagées.
dans le processus de l'écrivain: p> dans le processus de lecture: p> Remarque: Dans le processus de lecteur, vous devez récupérer une variante fraîche SharedPreferences à chaque fois pour que la valeur partagée soit rafraîchie. P> Autres méthodes:
1. Envoyez la diffusion avec des données supplémentaires;
2. Le fournisseur de contenu. P> P>
Une note importante: assurez-vous d'utiliser .Commit () code> et non
.Apply () code> lorsque vous écrivez à des préfs pour vous assurer que les données sont écrites avant de la lire de un autre processus. De la DOCS: "Contrairement à
COMMITE () CODE>, qui écrit ses préférences sur le stockage persistant de manière synchrone,
appliquer () code> commente ses modifications apportées à la mémoire
SharedPreferences < / Code> Immédiatement mais commence une commission asynchrone envers le disque et vous ne serez pas averti de tout défaillance ....
SharedPreferences code> Les instances sont des singletons dans un processus B> [emphase ajouté] . "
Context.mode_multi_process est considéré comme obsolète selon les documents, car cela ne se comporte pas de manière cohérente dans tous les cas.
SharedPreferences ne prend pas en charge les multi-processus. State Documents officiels: Remarque: cette classe ne prend pas en charge l'utilisation sur plusieurs processus.