Aller au contenu

[Résolu]Appel de serviceConnection dans onCreate.


Substitut

Recommended Posts

Bonjour,

J'ai une petite question, en gros ce que je cherche à faire c'est executer un dialog au lancement de mon application selon certain cas. Le problème est que la condition d'éxecution de ce dialog je l'obtiens grace à un ServiceConnection.

Hors dans mon onCreate, le serviceConnection n'est pas encore initialisé, je ne peux donc pas faire appel aux méthodes de mon service obtenues grâce au ServiceConnection.

Y a-t-il un moyen que j'ignore ? Sachant que j'ai également testé les méthodes onPostCreate, onResume, onPostResume et que dans ces 3 méthodes mon serviceConnection n'est toujours pas initialisé.

Lien vers le commentaire
Partager sur d’autres sites

Tout d'abord je fais ceci :

private ServiceConnection myConnect = new ServiceConnection() {
	public void onServiceConnected(ComponentName cn, IBinder ib) {
		myService.MyBinder binder = (myService.MyBinder) ib;
		myService = binder.getInfo();
		mServiceBound = true;
	}
	public void onServiceDisconnected(ComponentName cn) {
		mServiceBound = false;
	}
};

et dans ma méthode onCreate je fais ceci :

	Intent it = new Intent(this, MyService.class);
	bindService(it, myServiceConnect, Context.BIND_AUTO_CREATE);

Je n'appel pas le startActivity(it) puisque mon service est déjà lancé.

Et ce que je voudrais c'est à la suite de ce code, faire un myService.get...;

Problème je ne peux pas dans le onCreate puisque le serviceConnection n'est pas passé dans la méthode onServiceConnected à ce moment la de l'execution.

Lien vers le commentaire
Partager sur d’autres sites

ok tu pourai créé une instance statique de ton service dans la classe de ton service

et créé cette méthode

public static Service getService(){
 return service;
}

et il te suffit de démarrer le service avec

startService(i)

et mettre ce code dans la classe de ton service

@Override
public void onCreate() {
 // TODO Auto-generated method stub
 /*...*/
 service = this;
}

Lien vers le commentaire
Partager sur d’autres sites

si ton service est lancé depuis une autre activiy. moi j'utilise des service dans mon oncreate.

l'activity qui démarre l'application lance les service avec startServise()

ensuite je récupère simplement l'instance static qui est créé dans le oncreate() du service et tout fonctionne et pas besoin de bind du coup

vérifie aussi si ton service ne se coupe pas tout seul aussi ça pourrait venir de la ton problème

Lien vers le commentaire
Partager sur d’autres sites

En faite ta solution marche en partie, le truc c'est que la méthode que j'utilise me permet de recupérer un objet correspondant à un serveur et après je doit executer une méthode de cette classe pour récupérer des informations sur le serveur.

En gros mes communications se font ainsi : Activité -> Service -> Serveur

Mais la j'ai juste le Activité -> Service. Hors quand j'appelle ces méthodes hors des méthodes onCreate, onResume, etc j'arrive a récupérer des informations depuis le serveur.

Lien vers le commentaire
Partager sur d’autres sites

mais comment communique tu avec ton serveur? je suppose qu'il s'agit de requête http. je ne vois pas pourquoi tu ne pourrai pas faire des requêtes dans c'est fonction là.

tu a quoi comme code dans ton service qui ne fonctionne pas dans les onCreate, ... ?

Lien vers le commentaire
Partager sur d’autres sites

En faite j'utilise le jar lipeRmi pour communiquer avec mon serveur. Alors ca viens peut etre de là puisqu'a la base le Rmi existe pas pour android... En gros ce qui fonctionne hors des méthodes onCreate : tout, la connexion aux serveurs et l'execution de requete sur celui-ci. Et dans les méthodes onCreate et cie : Je peux me connecter a mon serveur, mais je ne peux pas executer de requêtes par la suite. Je me retrouve avec des nullPointerExecption systématiquement.

Chose encore plus bizarre. Je viens de retester ta méthode avec l'instance static de mon service.

Dans ma classe Home qui s'ouvre à l'ouverture de mon activité ca ne fonctionne pas, mais dans une classe qui me sert a afficher les notifications celà fonctionne...

Lien vers le commentaire
Partager sur d’autres sites

Le problème viens de là, au moment où je veux faire appel a mon Service, à la fin de mon onCreate, celui-ci n'as pas encore établit la connection au serveur. D'où le fait que ca fonctionne quand je clique sur les notifications puisque la connection a été faite. --'.

Sauf qu'a priori le service même lancé en début de onCreate est réellement connecté qu'à l'affichage de ma view. Et j'ai eut beau essayer avec des thread.sleep, on demander à mon onCreate d'attendre la connection au serveur avant d'executer mes méthodes, cela ne fonctionne pas puisque le service doit être réelement lancé qu'a la fin de mon onCreate, onResume,...

Lien vers le commentaire
Partager sur d’autres sites

ok et pourkoi tu ne créé par une interface pour que ton activity soit listener de ton service. ainsi ton service démarre et une fois bien connecter, il appel une méthode qui a pour but d'appeler une méthode dans ton activity et c'est dans cette méthode que tu lancerai toutes tes méthodes

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...