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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top