bindService ne fonctionne pas dans un bouton clic, mais fonctionne dans onCreate - android
Question
J'ai un service local assez simple que je suis en train de se lier à mon activité. J'ai travaillé à travers hier avec CommonsWare et il m'a reçu redressé comme j'avais du mal à obtenir le service à lier. Il se trouve que la raison pour laquelle j'avais tant de peine était que je tentais de lier le service avec:
bindService(new Intent(this, myService.class), mConnection, Context.BIND_AUTO_CREATE);
intérieur d'une méthode vide qui a été appelé après un clic sur le bouton.
private void doBindService() {
bindService(new Intent(this, SimpleService.class), mConnection, Context.BIND_AUTO_CREATE);
mIsBound = true;
}
private OnClickListener startListener = new OnClickListener() {
public void onClick(View v){
doBindService();
}
};
quand je déplacé mon bindService () appel à la méthode onCreate de l'activité, il fonctionne très bien. CommonsWare a mentionné quelque chose au sujet de cet appel étant asynchrone et je ne sais pas assez sur la création d'activité Android pour savoir si c'est ce que ma question était ou non. Je ne sais que mon onServiceConnection () a été appelé dans mon ServiceConnection () lorsque le bouton était cliqué, mon mBoundService ne travaillerait quand j'essayé d'accéder à des membres à l'intérieur du service.
Quelqu'un peut-il me dire pourquoi il ne fonctionne pas à l'intérieur du bouton clic, mais fonctionne à l'intérieur du onCreate ()?
TIA
La solution
L'intérieur de référence this
de doBindService
n'est pas le même dans les deux cas. Si elle est appelée à onCreate
il sera une référence à la Activity
si elle est appelée à partir du bouton cliquez sur ce sera une référence à la OnClickListener
. Il est évident que vous ne voulez pas votre service lié aux boutons cliquez sur écoute.
Essayez de changer this
à YOURACTIVITYNAME.this
et voir si cela aide.