IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Comment faire dialoguer Service et Activity


Sujet :

Android

  1. #1
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Points : 1 499
    Points
    1 499
    Par défaut Comment faire dialoguer Service et Activity
    Bonjour.

    Voila mon problème :
    J'ai dans mon application plusieurs Activity qui doivent toutes utiliser un thread que je crée dans la première.
    Pour ce faire, j'ai crée un Service qui est lancé par la première Activity et qui lance mon Thread.
    Le soucis c'est que je n'arrive pas a envoyer des informations au service en question. (Appeler mes methodes setParams() et sendMessage())

    Si quelqu'un peut m'aider, d'avance merci.

    Mon code qui crée le service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    startService(new Intent(this, SocketService.class));
    Ma classe Service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    public class SocketService extends Service
    {
    	public class SocketBinder extends Binder
    	{
    		SocketService getService()
    		{
    			return SocketService.this;
    		}
    	}
     
    	private ThreadEnvoi thE;
     
    	public IBinder onBind(Intent intent)
    	{
    		return new SocketBinder();
    	}
     
    	public void onCreate() 
    	{
    		super.onCreate();
    		Toast.makeText(this, "Service created", Toast.LENGTH_LONG).show();
    	}
     
    	public void onStart(Intent intent, int startId) 
    	{
    		Toast.makeText(this, "Service started", Toast.LENGTH_LONG).show();
    		super.onStart(intent, startId);
    	}
     
    	public void onDestroy() 
    	{
    		thE.shutdown();
    		super.onDestroy();
    	}
     
    	public void setParams(PrintWriter pw)
    	{
    		thE = new ThreadEnvoi(pw);
        	        Thread envoi = new Thread(thE);
        	        envoi.start();
    	}
     
    	public void sendMessage(String m)
    	{
    		thE.sendMessage(m);
    	}
    }
    Ingénieur Développement Mobile (Android / Windows Phone / Blackberry10)

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Moi je suis passé par le pattern Singleton pour accéder à mes services.
    Mais ça doit pas être la bonne manière
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    je sais pas si tu as vu ce paragraphe dans la doc mais il permet d'éclaircir un peu la chose :

    Service lifecycle

    A service can be used in two ways:

    * It can be started and allowed to run until someone stops it or it stops itself. In this mode, it's started by calling Context.startService() and stopped by calling Context.stopService(). It can stop itself by calling Service.stopSelf() or Service.stopSelfResult(). Only one stopService() call is needed to stop the service, no matter how many times startService() was called.
    *

    It can be operated programmatically using an interface that it defines and exports. Clients establish a connection to the Service object and use that connection to call into the service. The connection is established by calling Context.bindService(), and is closed by calling Context.unbindService(). Multiple clients can bind to the same service. If the service has not already been launched, bindService() can optionally launch it.
    ici également tu trouveras une bonne ressource pour l'utilisation des services :
    http://www.androidcompetencycenter.c...roid-services/

    en espérant que cela t'aides... bon courage
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  4. #4
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Points : 1 499
    Points
    1 499
    Par défaut
    Merci mais j'ai finalement résolu mon problème en modifiant ma GUI ...
    Ingénieur Développement Mobile (Android / Windows Phone / Blackberry10)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Salut!
    Tu pourrais donner un peu plus de détails stp sur ta solution?

    Merci!

  6. #6
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Bonjour

    Viish pourra tu faire un retour en nous detaillant un peu ta solution?
    Comment tu as pu acceder à une Service depuis une activity?

    Merci

  7. #7
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Points : 1 499
    Points
    1 499
    Par défaut
    J'ai pas réussi, j'ai juste refondu toute l'architecture de mon appli pour pas en avoir besoin et éviter le problème ...
    Ingénieur Développement Mobile (Android / Windows Phone / Blackberry10)

  8. #8
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Je te conseille de ne pas sauter une alternative par ce que tu ne l'a pas compris.
    L'appel des services est vraimennt necessaire dans une activity

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire dialoguer entre eux deux scripts ?
    Par dva2tlse dans le forum Shell et commandes POSIX
    Réponses: 4
    Dernier message: 19/05/2013, 23h10
  2. comment faire dialoguer VB.net et Android 2.3
    Par armin dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/11/2011, 22h32
  3. VB6 Comment Faire : "Dialogue entre 2 machines"
    Par C_Mila dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/03/2007, 14h59
  4. Réponses: 2
    Dernier message: 08/09/2006, 19h10
  5. Comment faire un service interactif ?
    Par michelci dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 21/07/2005, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo