appeler une méthode de service Android immédiatement après il est lié à onCreate

StackOverflow https://stackoverflow.com/questions/3637221

  •  30-09-2019
  •  | 
  •  

Question

Je suis sûr que les services Android vont être la fin de moi. Je n'ai presque pas de cheveux à gauche après les derniers jours ....

... de toute façon, je me éloigne du sujet.

Au début, je faisais un mal fou à obtenir le service pour se lier sur un onclick d'un bouton, qui a obtenu l'aide de redressés hier. Maintenant, je veux bien le service de se lier à la méthode onCreate () de l'activité. Cette partie a pas de problème, fonctionne comme prévu. Mon service est en fait un service de prise pour connecter les sockets TCP à un serveur socket que j'ai écrit. Si je mets l'appel à la méthode du service lié mBoundService.StartSocketServer () à l'intérieur d'un bouton clic, bingo, fonctionne très bien. Mais je en ai besoin de tirer immédiatement lorsque la charge d'activité, donc directement sous ma méthode dans mon appel onCreate () bindService () de l'activité. Quand je place l'appel pour démarrer la prise à l'intérieur de mon onCreate () Je reçois une force proche.

Cette méthode (StartSocketServer ()) génère un nouveau fil ouvre alors la prise de ce fil dans ma machine distante. Je devine que le problème réside dans la nouvelle génération de fil avant l'activité pleine charge ... pas sûr.

LogCat est assez cryptique ici. Il ne dit quelque chose au sujet de fil attach a échoué, montre une exception de gestionnaire uncaught qui a « Causé par: java.lang.NullPointerException ». Sein

Encore une fois, si je mets cet appel à la méthode dans un clic de bouton, I "m dans les affaires, si elle est dans le onCreate () il échoue. Est-il possible dans une activité (en supposant que mon hypothèse est correcte que besoins à pleine charge avant la ponte d'un nouveau thread) pour appeler le StartSocketServer () après qu'il est chargé: ala body.onload () en html

?

S'il vous plaît me aider à sauver le reste de mes cheveux:)

TIA

Était-ce utile?

La solution

Comme je l'ai écrit dans votre question précédente :

  

FWIW, bindService () est asynchrone. Vous ne disposez d'une connexion liée jusqu'à onServiceConnected () est   appelé votre ServiceConnection.

Dans votre appel bindService(), vous fournissez un objet ServiceConnection. Cet objet sera appelé avec onServiceConnected() lorsque le service est prêt à l'emploi. Entre autres choses, qui est probablement l'endroit où vous peuplez mService. Mettez votre appel à StartSocketServer() dans onServiceConnected().

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