Dans quelles circonstances utiliser AIDL pour définir une interface de service est-il la bonne décision (plutôt que de simplement créer une extension à la classe service
)?Quand utiliser un service basé sur Aidl?
Répondre
L'extension simple d'une classe de service ne permettra pas à votre service d'exposer ses méthodes à des entités externes. Si vous voulez que votre service soit exposé/utilisé par un code qui sort de votre application Android, vous devrez définir un AIDL pour cela. Cette AIDL sera partagée et formera un contrat pour votre service. Reportez-vous à http://developer.android.com/guide/components/aidl.html.
Vous devez utiliser AIDL si vous souhaitez qu'une classe en dehors du processus de votre application accède au Service. Si vous utilisez uniquement le service depuis l'intérieur de votre application, vous pouvez utiliser un local service.
1.Quand utiliser un service basé sur l'aide.
Quelques avantages peut être acquise par une partie de segment de code en service d'arrière-plan:
- découpler frontal et dorsal
- mémoire/unité centrale de traitement intensif peut être empilé au service d'arrière-plan, GC en service ne sera pas une incidence sur l'accident expérience utilisateur frontal
- service ne sera pas descendre toute l'APP
2.how pour créer un tel service
J'ai écrit une bonne bibliothèque, vous pouvez vous référer à titre d'exemple http://github.com/zhchang/hogwarts
AIDL
La Interface Definition Language Android (AIDL) permet aux développeurs de définir une interface de programmation que l'utilisation du client et le serveur communiquer les uns avec les autres en utilisant la communication inter-processus (IPC).
Cet article explique comment se connecter à un service en cours d'exécution dans Android et comment récupérer les données du service distant/en cours d'exécution.
Exemple de mécanisme IPC
Soit RemoteService être un service à la clientèle et RemoteServiceClient une activité pour communiquer avec le service à distance. Un service fournit des informations sur les opérations mathématiques comme l'addition, la soustraction et la multiplication pour les deux nombres entiers donnés.
Pour exposer la fonctionnalité de ce que Service peut faire, créez un fichier .aidl dans le répertoire du projet.
- 1. Quand utiliser un service Web sur un service Windows?
- 2. Android - Quand utiliser le service
- 3. Android: Comment lancer un AIDL unbind à partir d'un service?
- 4. AIDL ServiceConnection.OnServiceDisconnected() non appelé
- 5. Service basé sur REST sur iPhone
- 6. Bon service de paiement basé sur l'utilisation
- 7. Comment démarrer un service basé sur un objet ServiceInfo?
- 8. quand utiliser UriTemplate dans REST service WCF
- 9. Quand utiliser le service WCF et le service Windows ancien?
- 10. Comment utiliser un client basé sur socket avec le service WCF (net.tcp)?
- 11. Affichage d'itinéraires fantaisistes dans un service basé sur le cloud
- 12. Quand utiliser POJO et Quand utiliser SLSB
- 13. Quand utiliser un module et quand utiliser une classe
- 14. quand utiliser un singleton?
- 15. Quand utiliser un SQLTransaction
- 16. Quand utiliser un singleton?
- 17. Quand utiliser Server.Transfer sur PostBackURL?
- 18. Quand utiliser pragmas sur sqlite?
- 19. Comment utiliser Boost.Test dans un projet basé sur CMake?
- 20. Quand utiliser l'activateur et quand utiliser la méthode d'usine?
- 21. Service de données basé sur les fichiers en Java
- 22. Quand dois-je utiliser OperationContextScope à l'intérieur d'un service WCF?
- 23. Google App Engine + Service basé sur JSON + Authentification
- 24. Déploiement d'un service WCF basé sur TCP, hébergé dans un service Windows
- 25. Problème d'activation basé sur la configuration dans mon service Wcf
- 26. Post Redirect Obtenir un modèle et utiliser un service basé sur les ressources RESTful lors de la recherche
- 27. Quand utiliser conserver et quand utiliser copier
- 28. Les classes personnalisées sont passées du service à un thread d'interface utilisateur via AIDL
- 29. Comment savoir quand utiliser un analyseur XML et quand utiliser ActiveResource?
- 30. Conseil concernant un FTP basé sur le Web ou un service d'envoi de fichiers
Mais en supposant que votre application utilise le service, il n'y a aucune raison d'utiliser AIDL - est-ce exact? – MalcomTucker
Correct. Mais alors pourquoi voudriez-vous créer un service dans ce cas non plus. –
J'ai créé un service local dans mon application pour faire un plus grand téléchargement. De cette façon, je pourrais avoir un peu plus de contrôle et de sécurité, juste une tâche asynchrone qui peut être tuée à chaque fois. Si je comprends bien, un service lié à une activité n'est pas susceptible d'être tué si les ressources sont rares. – Janusz