Aller au contenu

Recommended Posts

Posté(e) (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é par dekans
Posté(e)

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
}
};

Posté(e) (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é par dekans
Posté(e)

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.

Posté(e)

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é.

Posté(e) (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é par Galize
Posté(e)

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

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...