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?
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. –
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
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 –