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 :

[Local Service] Comment être sur que le service est connecté avant de faire quoi que ce soit ?


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 21
    Points
    21
    Par défaut [Local Service] Comment être sur que le service est connecté avant de faire quoi que ce soit ?
    Bonjour,

    Je suis débutant en la matière et je viens de créer une partie d'un futur service de Géolocalisation. Jusque là pas de pb ca marche plutôt bien .

    Pour la partie vue c'est du classique : une activité menu d'accueil, une activité pour le tableau de bord et l'autre pour la map.

    Pour faire dialoguer les 3 je start le service dans l'activité d'accueil puis je passe sur l'activité tableau de bord qui va faire un onbind() dans le onCreate()., de même que sur la map ou je fais la aussi un onBind().

    Dans la méthode onServiceConnected de chaque activité la j'instancie mon objet service qui va me permettre de jouer.

    Sauf que quand j'appel directement sur un click d'un button mon objet service sans attendre qques secondes je me prend un null pointer sur mon objet service, plutôt logique vu que onServiceConnected n’est pas passé.

    Ma question, c'est comment être sur que le service est connecté avant de travailler sur mon objet service ?

    Merci par avance de votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 87
    Points
    87
    Par défaut
    En utilisant un Handler que tu passes à ton service ?

    Une fois que le service à démarré tu peux alors le savoir.

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Surtout en démarrant ton code dans le onServiceConnected() justement !

    Sentant arriver les questions, je donne une implémentation (modeless) parmi tant d'autres:
    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
     
    private boolean connected = false;
    private ArrayList<Runnable>  serviceList= new ArrayList<Runnable>();
     
    public void onClick(View v)
    {
         addConnectedTask(new Runnable() {
              public void run() {
                  doGetPosition();
              }
            }
         );
    }
     
    public void addConnectedTask(Runnable r)
    {
        synchronized (serviceList) {
           if (!connected) {
                serviceList.add(r);
                return;
           }
        }
        r.run();
    }
     
    public void onServiceConnected()
    {
        synchronized (serviceList) {
           connected = true;
           for (Runnable r : serviceList)
              r.run();
           serviceList.clear();
        }
    }
     
     
    public void doGetPosition()
    {
         ... ici on est 'connected'
    }
    Autre implémentation possible (modale): si non connecté, affichage d'un progress, stockage de la fonction... (unique donc), et sur le onServiceConnected, dismiss du progress, utilisation de la fonction.
    Et si cancel du progress, annulation de la fonction...

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2013, 11h10
  2. [Toutes versions] Comment être sur que c'est bien un mail qui est sélectionné
    Par basto dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 02/01/2012, 15h41
  3. [AC-2007] Comment être sur la dernière ligne d'un sous formulaire ?
    Par tibofo dans le forum IHM
    Réponses: 3
    Dernier message: 08/09/2010, 16h45
  4. comment être sur de la fermeture de mon application java
    Par Tsunamy dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 06/11/2008, 09h12
  5. Réponses: 3
    Dernier message: 19/11/2006, 15h40

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