Substitut Posté(e) 11 mai 2012 Share Posté(e) 11 mai 2012 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 More sharing options...
morakevi Posté(e) 11 mai 2012 Share Posté(e) 11 mai 2012 quand tu parle de ServiceConnection, tu veux dire que tu utilise cette méthode this.bindService(ServiceIntent, serviceConnection, ...) ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Substitut Posté(e) 11 mai 2012 Auteur Share Posté(e) 11 mai 2012 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 More sharing options...
morakevi Posté(e) 11 mai 2012 Share Posté(e) 11 mai 2012 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 More sharing options...
Substitut Posté(e) 11 mai 2012 Auteur Share Posté(e) 11 mai 2012 Cela ne fonctionne pas, quand je veux utiliser une méthode de mon Service dans mon activité j'ai un NullPointerException. Lien vers le commentaire Partager sur d’autres sites More sharing options...
morakevi Posté(e) 11 mai 2012 Share Posté(e) 11 mai 2012 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 More sharing options...
Substitut Posté(e) 11 mai 2012 Auteur Share Posté(e) 11 mai 2012 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 More sharing options...
morakevi Posté(e) 12 mai 2012 Share Posté(e) 12 mai 2012 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 More sharing options...
Substitut Posté(e) 14 mai 2012 Auteur Share Posté(e) 14 mai 2012 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 More sharing options...
morakevi Posté(e) 14 mai 2012 Share Posté(e) 14 mai 2012 je ne connait pas lipeRmi. ton serveur est en local ? et tu est bien sur que ton service est démarrer? ou qu'il ne sais pas arrêter ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Substitut Posté(e) 14 mai 2012 Auteur Share Posté(e) 14 mai 2012 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 More sharing options...
morakevi Posté(e) 14 mai 2012 Share Posté(e) 14 mai 2012 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 More sharing options...
Substitut Posté(e) 14 mai 2012 Auteur Share Posté(e) 14 mai 2012 Pourquoi pas. En tout cas merci ! =D Lien vers le commentaire Partager sur d’autres sites More sharing options...
morakevi Posté(e) 14 mai 2012 Share Posté(e) 14 mai 2012 si y a encore un problème n’hésite pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.