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 :
Dans le second cas, ça veut dire qu'il faut que le Binder déléguer toutes les méthodes du Service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Quelles sont alors les bonnes pratiques pour écrire les méthodes d'un tel service ?
Merci de votre réponse.
Partager