Bonjour,
Je voudrais savoir comment fais t-on pour qu'un service local envoi des données à une activity dès qu'il y en a.
Merci.
Version imprimable
Bonjour,
Je voudrais savoir comment fais t-on pour qu'un service local envoi des données à une activity dès qu'il y en a.
Merci.
Bonjour,
De quel type de données parles-tu ?
des String.
Ce que je compte faire c'est que le service récupère des données dès qu'il y en a puis les transmet à l' activity A ainsi de suite.
Le problème c'est que mon activité se lance une seule fois alors qu'elle doit se lancer à chaque fois qu'il y a des données.
Avez vous une idée?
Bonjour,
ça c'est assez simple il te suffit d'utiliser un Handler pour que du service tu puisses envoyer des messages à ton Activity.Citation:
Ce que je compte faire c'est que le service récupère des données dès qu'il y en a puis les transmet à l' activity A ainsi de suite.
Le Handler sera commun entre l'activity et le service .
Par contre là, cela implique que le service doit lancer l'activity si celle ci n'est pas en cours d'exécution ou si l'activity est en suspend .Citation:
Le problème c'est que mon activité se lance une seule fois alors qu'elle doit se lancer à chaque fois qu'il y a des données.
Contrôle alors l'état de ton activity , et lance la ou réveille la, si nécessaire
le problème c'est que l'activity se recharge alors que j'essaye de rajouter à ma liste les élements sans qu'elles soient supprimé
je souhaiterais garder mon activity lancé la première fois puis qu'elle actualise à chaque fois dès qu'il y a des données.
Car ce que j'ai actuellement c'est tout le temps un startActivity
Utilise un Handler . Si tu sais que ton activity est lancé .Citation:
je souhaiterais garder mon activity lancé la première fois puis qu'elle actualise à chaque fois dès qu'il y a des données.
Car ce que j'ai actuellement c'est tout le temps un startActivity
C'est facile a savoir si ton handler est null alors pas d'activity si ton handler est non null alors tu envoie ton message .
Tu ajustes la variable de l'handler a partir de l'activity.
puis je avoir un exemple?
peut-on le faire avec un binder?
Euh ....Citation:
puis je avoir un exemple?
http://developer.android.com/referen...p/Service.html
doit-on faire tout le temps un startActivity(monintent) afin d'envoyer l'intent à l'activity?
Est ce que tu as regardé les BroadCastReceiver ?
oui mais ce n'est pas ce que je compte faire
car je souhaiterais que l'intent du service soit attribué à une activity unique et non aux ensembles des activités.
Non , tu ne le fais que si l'activity n'es pas lancé. Soit la première fois .Citation:
doit-on faire tout le temps un startActivity(monintent) afin d'envoyer l'intent à l'activity?
De plus cela suppose que tu lance une activity sans prévenir l'utilisateur . TU peux toujours garder tes données en mémoire et les envoyé quand l'activity est affichée.
Pour cela utilise un Handler , il n'y a rien de plus simple .
Dans ton Activity
Code:
1
2
3
4
5
6
7
8 private final Handler mHandlerActivity = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); String message = msg.getData().getString("tag"); } };
Dons ton Service.
Code:
1
2
3
4 Bundle b = new Bundle(); Message msg = mHandler.obtainMessage(); b.putString("tag", "ta valeur"); msg.setData(b);
Il te manquera plus qu'a faire le lien entre le mHandlerActitivy et le mHandler ;).
Et de là tu as un lien entre le service et l'activity si celle-ci est lancé.
De plus ton service peu se lier par là suite à n'imnporte quelle activity tant que celle ci lui donne un handler .
merci
Bonjour,
Désolé de ré-ouvrir ce post mais je ne vois pas comment faire le lien entre le handler de mon activity (qui est créer dans mon activity) et mon service.
Merci,
Drlord.