Service avec Binder : bonnes pratiques ?
Salut,
Je me demande, lorsqu'on fait un service utilisant un BInder, où doit se trouver le code des méthodes du service ? Dans la classe qui hérite de Binder, ou dans celle qui hérite du Service.
Dans le premier cas, ça me semble étrange que le Service en lui-même n'ait aucune méthode :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class MyBoundService extends Service {
private MyBinder myBinder = new MyBinder();
private Random random = new Random();
public class MyBinder extends Binder {
public int random() {
return random.nextInt(100);
}
}
@Override
public IBinder onBind(Intent intent) {
return myBinder;
}
} |
Dans le second cas, ça veut dire qu'il faut que le Binder déléguer toutes les méthodes du Service :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class MyBoundService extends Service {
private MyBinder myBinder = new MyBinder();
private Random random = new Random();
public class MyBinder extends Binder {
public int random() {
return MyBoundService.this.random();
}
}
@Override
public IBinder onBind(Intent intent) {
return myBinder;
}
public int random() {
return random.nextInt(100);
}
} |
Dans un tel exemple, le Service et le Binder me semblent un peu redondants : pourquoi faut-il deux classes, au lieu de retourner directement le Service ? Pourquoi un tel choix de conception dans Android ? (je ne remets pas en cause, il doit y avoir une bonne raison, mais j'aimerais la connaître pour mieux comprendre)
Quelles sont alors les bonnes pratiques pour écrire les méthodes d'un tel service ?
Merci de votre réponse.