2010-07-26 8 views

Répondre

5

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.

+3

Mais en supposant que votre application utilise le service, il n'y a aucune raison d'utiliser AIDL - est-ce exact? – MalcomTucker

+1

Correct. Mais alors pourquoi voudriez-vous créer un service dans ce cas non plus. –

+1

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

6

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.

0

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

0

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.

AIDL Example

Questions connexes