2011-09-04 4 views
0

Voici mon AIDL PlayerHandleService.aidl:Problème avec le service utilisant AIDL?

interface PlayerHandleService { 
    void changeTextView(); 
} 

Le oncreate() sur mon activité: Player_Activity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    this.bindService(new Intent(this,PlayerService.class), mConnection, Context.BIND_AUTO_CREATE); 
} 

Le mConnection:

private ServiceConnection mConnection = new ServiceConnection() { 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     // TODO Auto-generated method stub 
     mpInterface=null; 
    } 

    @Override 
    public void onServiceConnected(ComponentName name, IBinder service) { 
     // TODO Auto-generated method stub 
     mpInterface = PlayerHandleService.Stub.asInterface(service); 
    } 
}; 

Maintenant, sur mon activité (Player_Activity) ont un TextView et je veux utiliser la méthode changeTextView() dans le AIDL pour changer le contenu de ce TextView, comment je c un faire ça?

Répondre

0

Ce n'est pas le cas. Votre activité change son propre TextView.

Si votre service veut dire l'activité de faire quelque chose, vous pouvez utiliser une sorte d'auditeur personnalisé ou une émission Intent, ou un Messenger, ou createPendingResult(), ou probablement d'autres techniques aussi bien.

+0

L'instance de l'interface AIDL dans l'activité peut-elle renvoyer des données (je n'ai pas essayé, je demande simplement)? Je veux dire, si vous avez dans la méthode d'interface d'un certain type et retourner ce type. Je sais que cela peut être fait avec les radiodiffuseurs, c'est comme ça que je le fais. Je vous remercie. –

+1

L'activité n'a pas d'interface AIDL. Le service fait. Les méthodes de l'interface AIDL d'un service peuvent renvoyer des valeurs à ceux qui se sont liés à ce service: http://developer.android.com/guide/developing/tools/aidl.html – CommonsWare

+0

Je comprends. Je veux dire que vous avez l'interface dans le Service, et vous créez l'instance dans l'activité afin que vous puissiez contrôler à distance. E.g: dans l'interface vous avez 'int returnsomenumber();' et vous avez outrepassé le service, nous le connaissons. Mais dans l'activité vous pouvez avoir une instance de l'interface pour pouvoir contrôler le service à distance, donc peut faire 'myRemoteControl.returnsomenumber();' retourner des données du service? Désolé si je ne me suis pas exprimé clairement –

Questions connexes