2010-01-08 6 views
13

J'ai un service d'arrière-plan en cours d'exécution et un client qui interagit avec le service.Rappel de service à l'activité dans android

Lorsque le client demande une opération, le service l'exécute et renvoie le résultat à l'activité (client). Je sais comment invoquer les méthodes de service dans l'activité et en utilisant les rappels, nous pouvons réaliser ce que je veux faire. Mais je ne suis pas capable de comprendre le mécanisme de rappel et l'exemple de code fournis dans les démos Api (remoteservice). Est-ce que quelqu'un pourrait expliquer comment fonctionne ce rappel de service? ou tout ce qui est réalisable en utilisant un mécanisme plus simple.

Répondre

5

Voici le flux
Créez votre intention d'appeler un service. Vous pouvez startService() ou BindService() avec BIND_AUTO_CREATE

Une fois que le service est une liaison, il crée un tunnel pour parler avec elle des clients qui est le IBinder Interface. Il est utilisé par l'implémentation d'interface AIDL et retourner le IBinder dans

private final MyServiceInterface.Stub mBinder = new MyServiceInterface.Stub() { 
    public int getNumber() { 
     return new Random().nextInt(100); 
    } 
}; 

public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Service OnBind()", Toast.LENGTH_LONG).show(); 
    return mBinder; 
} 

Une fois retourne le mBinder, ServiceConnection que vous avez créé dans le client sera appelé en arrière et vous obtiendrez l'interface de service en utilisant cette

  mConnection = new ServiceConnection() { 

     public void onServiceDisconnected(ComponentName name) { 
      // TODO Auto-generated method stub 

     } 

     public void onServiceConnected(ComponentName name, IBinder service) { 
      // TODO Auto-generated method stub 

      mService = MyServiceInterface.Stub.asInterface(service); 


    }; 

maintenant vous avez l'interface mService pour appeler et retreive tout service de cette

+3

comment obtenir un rappel du service à l'activité? –

Questions connexes