Si un objet Binder représente une interface distante (vers un service Android ou une interface de rappel vers un client distant), aurais-je besoin d'une synchronisation explicite lors de l'envoi IPC via cet objet à partir de plusieurs threads? composant Android sous-jacent?Les objets d'interface Android AIDL/Binder sont-ils compatibles avec les threads?
Répondre
Appel d'une méthode RPC Binder dans Android est threadsafe, vous pouvez émettre l'appel à partir de plusieurs threads sans synchronisation. Du côté de la réception - en supposant que le Service soit dans un processus différent comme d'habitude - vous recevez des appels d'un groupe de threads Binder, quelle que soit la manière dont il a été appelé du côté des appelants. Cela signifie que votre service peut avoir plusieurs appels en cours simultanément, alors soyez prudent de ce côté.
Plus d'info dans Android Docs: Processes and Threads
Un service Borné est mis en œuvre en utilisant la classe Binder si nous voulons client et le service à exécuter dans le même processus et ne veulent pas effectuer IPC simultané dans différentes applications. Ainsi, le thread (dans le client) qui appelle la méthode de service sera bloqué jusqu'à son retour. Il peut y avoir plusieurs threads engendrés dans le client (activité) par programme, chacun appelant la méthode de service à tout instant. Par conséquent, le service doit être implémenté de telle sorte qu'il soit compatible avec les threads car plusieurs threads peuvent appeler la méthode de service à la fois. Conclusion is android ne s'occupe pas de la synchronisation lorsque la classe Binder est étendue pour implémenter le service borné.
Un service borné est implémenté en utilisant AIDL si nous voulons permettre aux clients de différentes applications d'accéder au service pour IPC et de gérer le multithreading dans le service. Conclusion est android ne prend pas soin de la synchronisation lorsque AIDL est utilisé pour implémenter le service borné.
- 1. Comment rendre les applications Android compatibles avec différentes résolutions d'écran?
- 2. La visibilité des objets sur les threads
- 3. Android: appareils compatibles DLNA
- 4. problème avec les threads
- 5. Quels sont les navigateurs compatibles avec "! Important"?
- 6. Android: Observer SMS pour les threads supprimés
- 7. Les routines MD5 compatibles GLib?
- 8. android threads
- 9. Problème avec les objets et les pointeurs
- 10. Quels sont les substituts MATLAB compatibles avec Linux?
- 11. Envoi d'e-mails compatibles avec les e-mails clients
- 12. Comment rendre les terminaux compatibles avec Silverlight 4?
- 13. Les applications IPhone sont-elles compatibles avec l'iPod touch?
- 14. Les images png sont-elles compatibles avec plusieurs navigateurs?
- 15. Les services Web WCF sont-ils compatibles avec Sharepoint?
- 16. Tous les téléphones J2ME sont-ils compatibles avec JavaScript?
- 17. System.nanoTime() est-il cohérent entre les threads?
- 18. Android CursorAdapters, ListViews et les threads d'arrière-plan
- 19. Communication socket asynchrone dans Android avec threads
- 20. C#, problèmes avec les objets
- 21. Déplacer des objets OpenGL avec les doigts
- 22. Problème avec les threads non répondeurs
- 23. SQLite.Net est-il compatible avec les threads?
- 24. MapViewOfFile avec des pointeurs entre les threads
- 25. Les scripts CPython, IronPython, Jython sont-ils compatibles les uns avec les autres?
- 26. Que sont les bibliothèques WebDAV compatibles J2ME?
- 27. Les ID de threads Android sont-ils globaux par processus?
- 28. PyQT et les threads
- 29. Les threads Java doutent
- 30. Redémarrer les threads normaux