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 :

Thread et Service


Sujet :

Android

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 50
    Points
    50
    Par défaut Thread et Service
    Bonjour

    Je voulais savoir, les service dans Android sont exécutés dans des Thread différents que celui de l'UI ?

    -> Si oui, la méthode onCreate est executer dans quel Thread ?
    -> de même pour la méthode onStart() ?

    J'ai plutôt l'impression que tout ce fait dans le même thread. Et donc je me demande l'intérêt des services locaux (pas remoteService) ?

    Autre remarque, quand je lis des tuto sur les services tels que :
    - http://www.brighthub.com/mobile/goog...les/34861.aspx
    - http://developerlife.com/tutorials/?p=356

    Ils se connectent à leur service avec this.bindService(Intent) et démarrent la fonctionnalité de leurs services dans la méthode onCreate() du service. Si cela fonctionne, Android prévoit tout de même la méthode this.startService(Intent) qui appèle la méthode onStart() du service. En suivant leur tuto cette méthode onStart n'est jamais appelée.

    C'est un mauvais pattern de leur part ?

    Rien ne nous empêche de faire :
    this.bindService(Intent) et une fois connecté au service et seulement à ce moment, faire this.startService(Intent) ? Ça me semble respecter beaucoup mieux le SDK ?

  2. #2
    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 sais pas

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 50
    Points
    50
    Par défaut
    Déception déception..... moi qui aimait bien ton blog !

    Si je prends du recul sur des tutos c'est bien pour développer proprement. J'ingurgite pas bêtement ce qu'on me donne

    La politesse aurait été de répondre aux questions. mais tu ne savais peut être pas y répondre. tant ce cas là, le mieux aurait été de t'abstenir. Parce qu'on attend autre chose d'un membre confirmé.

  4. #4
    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 suis vraiment desolé de ma reaction! Je te demande pardon.

    Par ailleurs je pourrai ajouter le noyaux d'android est sur Linux Version 2.6; par consequent il herite le caractere multi thread;

  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 50
    Points
    50
    Par défaut
    Je suis chiant mais ca me dit toujours pas si les services se déroulaient dans des Threads différents que l'UI. Moi j'ai l'impression qu'ils sont dans le même Thread. Quand je fais un Thread.sleep() dans la méthode onStart() ou onCreate() ca bloque toute l'application. J'aurai pensé que ca ne bloquerait que le service.

    Et donc je vois pas à quoi ca sert puisque les services sont censés exister pour être une tache de fond si j'ai bien tout compris.

    Pour le reste de mes questions, j'ai continuer à chercher sur la doc google: http://developer.android.com/guide/t....html#servlife

    Google nous explique qu'on peut donc démarrer les services soit avec startService() soit avec bindService() et montre le diagramme de cycle de vie. Dans le cas de bindService(), la méthode onStart() du service n'est pas appelée. Les tutos sont donc bien corrects Et faire ce que je disais : startService() puis et bindService() est donc très bête

    Mais mon problème avec Thread.sleep() reste un mystère...

  6. #6
    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
    Salut,
    Bon déjà, je vais surement pas t'apporter la réponse direct, vu que je la connais pas, mais ne soit pas deçu, on peut tenter de la trouver petit à petit.

    Pour commencer, moi j'aurai essayé d'utiliser la plugin DDMS d'Eclipse. Si tu regarde bien, tu as moyen d'inspecter l'activité des Threads du process de ton application. A partir de là, tu pourras surement voir ce qu'il se passe lorsque tu lance le Service en question.

    D'autres part, as-tu regardé l'API Demo du SDK ?
    il y a une exemple : ServiceStartArguments qui pourrais peut être t'intéresser... Dans le service, ils font un Handler pour la mécanique interne du Service...

    Voilà, en espérant t'avoir tout de même aidé...
    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

  7. #7
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 50
    Points
    50
    Par défaut
    Merci. J'ai regardé l'API demo. J'ai pas tout compris non plus. Surtout l'exemple que tu mentionnes.
    Mais j'ai continuer à tester et j'en conclu qu'ils sont dans le même Thread. Mais ca n'a pas de sens pour moi. Ça m'énerve

    J'ai continuer mes recherches et j'ai trouvé un post qui confirme mes dires : http://osdir.com/ml/Android-Beginner.../msg01403.html

    donc les Service Local ca sert à rien !???? c'est quand même étrange tout de même ?

  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
    Oui mais quand tu fais Thread.sleep() , c'est le Thread principale, tu dois plutôt définir ton propre un Thread monthread particulier pour faire le sleep à une operation particuliere

  9. #9
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 50
    Points
    50
    Par défaut
    Quand je fais une boucle longue For, c'est le même problème. Toute l'appli est en attente.

  10. #10
    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
    Si c'est ton application qui lance le service et que tu n'as pas threadé ton service, oui c'est normal que la boucle "for" bloque tout.
    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

Discussions similaires

  1. Stopper thread Executor Service
    Par flolebreton dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 25/04/2013, 11h53
  2. thread timer service
    Par Pymento dans le forum Général Python
    Réponses: 6
    Dernier message: 25/02/2010, 13h08
  3. [WD12] Timer, Thread ou service ?
    Par bruce207 dans le forum WinDev
    Réponses: 3
    Dernier message: 06/01/2010, 11h56
  4. [Service][DLL][Thread] Exécution d'un thread non effective
    Par homeostasie dans le forum Windows
    Réponses: 11
    Dernier message: 18/09/2008, 16h06
  5. service, thread et processus
    Par rdh123 dans le forum Windows
    Réponses: 9
    Dernier message: 02/01/2008, 16h37

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