dekans Posted January 28, 2010 Share Posted January 28, 2010 (edited) 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( ) ?? Edited January 29, 2010 by dekans Quote Link to comment Share on other sites More sharing options...
xma Posted January 28, 2010 Share Posted January 28, 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 } }; Quote Link to comment Share on other sites More sharing options...
dekans Posted January 29, 2010 Author Share Posted January 29, 2010 Merci beaucoup, je vais regarder ça. :) Quote Link to comment Share on other sites More sharing options...
Galize Posted January 29, 2010 Share Posted January 29, 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. Quote Link to comment Share on other sites More sharing options...
dekans Posted January 29, 2010 Author Share Posted January 29, 2010 (edited) Oui mais comme c'est l'activité qui lance le service, si elle est arrêtée, le service l'est aussi nan ? Edited January 29, 2010 by dekans Quote Link to comment Share on other sites More sharing options...
Galize Posted January 29, 2010 Share Posted January 29, 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. Quote Link to comment Share on other sites More sharing options...
dekans Posted January 29, 2010 Author Share Posted January 29, 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é. Quote Link to comment Share on other sites More sharing options...
Galize Posted January 29, 2010 Share Posted January 29, 2010 (edited) 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é) Edited January 29, 2010 by Galize Quote Link to comment Share on other sites More sharing options...
dekans Posted January 29, 2010 Author Share Posted January 29, 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.