dekans Posté(e) 28 janvier 2010 Share Posté(e) 28 janvier 2010 (modifié) Je souhaite créer un service (qui fait serveur) qui devra remonter des infos à l'activité principale. Pour le transfert en lui même, putExtra( ) et getExtra( ) doivent bien faire l'affaire. Mais comment être notifié dans l'activité que le service a fait un putExtra( ) ?? Modifié 29 janvier 2010 par dekans Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
xma Posté(e) 28 janvier 2010 Share Posté(e) 28 janvier 2010 Il faut déclarer un BroadcastReceiver dans ton activity et définir ce qu'il fait (une seule méthode, onReceive()): Par exemple, dans le onResume(): @Override public void onResume() { super.onResume(); registerReceiver(receiver, new IntentFilter(TON_SERVICE.ACTION)); } Il faut penser à le dégager lors du passage au mode "Pause" de ton activity: @Override public void onPause() { super.onPause(); unregisterReceiver(receiver); } private BroadcastReceiver receiver =new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { // fait des trucs ici } }; Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 29 janvier 2010 Auteur Share Posté(e) 29 janvier 2010 Merci beaucoup, je vais regarder ça. :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Galize Posté(e) 29 janvier 2010 Share Posté(e) 29 janvier 2010 C'est exactement cela, l'intent broadcasté sera même capable de redémarrer l'activité si elle a été terminée ou n'a jamais démarrée. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 29 janvier 2010 Auteur Share Posté(e) 29 janvier 2010 (modifié) Oui mais comme c'est l'activité qui lance le service, si elle est arrêtée, le service l'est aussi nan ? Modifié 29 janvier 2010 par dekans Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Galize Posté(e) 29 janvier 2010 Share Posté(e) 29 janvier 2010 Non, un service a l'autorisation de tourner en arrière plan et ne sera pas arrêté s'il ne le demande pas explicitement. On peut ainsi avoir le service qui continue de tourner alors que l'activité (i.e. la partie graphique) est terminée. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 29 janvier 2010 Auteur Share Posté(e) 29 janvier 2010 J'ai le problème inverse, mon service est constamment arreté. Je passe par le onCreate. Alors que je voudrais rester dans une boucle while, je ne comprends pas pourquoi il est arrêté. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Galize Posté(e) 29 janvier 2010 Share Posté(e) 29 janvier 2010 (modifié) tu crées bien un nouveau thread dans ton ton service ? très grossièrement : onCreate(xxxxx) { new Thread(new Runnable() { public void run() { while (!lespoulesaurontdesdents) { //Fait mon boulot } } }).start(); } (mon eclipse est pas lancé) Modifié 29 janvier 2010 par Galize Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 29 janvier 2010 Auteur Share Posté(e) 29 janvier 2010 Non j'avais lancé le service dans un process à part. (mais avant d'en faire un service c'était un thread) Mais je vais lancer un thread dans le service (et remettre le service dans le process principal). Pour info il était killé car j'utilisais une fonction bloquante dedans, et android considère qu'un service qui ne répond pas est mort => kill Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.