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 :

[service] debuger mon service


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [service] debuger mon service
    Bonjour à tous,

    Je suis assez nouveau dans le dev Android.

    et je travail sur un service. J'ai le choix a utiliser startService(..) ou bindService(..).

    Une première question est laquelle de ces actions pour lancer un service dois-je utiliser?

    Ensuite mon service est lancer avec startService(..) pour le coup cela fonctionne assez bien.

    Donc comme je disait j'ai lancer mon service a partir de mon activité dans un AlarmManager.

    Et a un moment ou a un autre de doit stopper mon service .

    Je fait donc stopSelf() dans mon service.

    Mais mon activité est stopper également..

    Une solution a cela m'aiderait beaucoup.

    Je vous met le code:

    Mon Activité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Intent myIntent = new Intent(this, AlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent, 0);
            AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.MINUTE,1);//one minute for launching service
            //alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 6000, pendingIntent);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                    6000, pendingIntent);
    Ma routine pour lancer mon service (MyServiceTask):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Intent myIntent = new Intent(context, AlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);
            AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.MINUTE,2);//Fiveteen minutes to send a event BroadcastReceiver
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                    6000, pendingIntent);
            PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
            Intent background = new Intent(context, MyServiceTask.class);
            context.startService(background);
    Et dans mon service a un moment je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyServiceTask.this.stopSelf();
    Une petite aide .. Merci pour vos réactions.

  2. #2
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [Update] Une souci résolu..
    J'ai relis mon code et j'ai trouvé le souci..

    dans mon onDestroy() de mon service
    j'ai fait un cancel de locationListener:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            lm.removeUpdates(this);
            lm = null;
    du coup si je fais un remove.. ca plante et je reviens vers mon activité précédente.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Pour ce qui est du start ou du bind :

    startService() est à utiliser pour un service autonome. Par exemple un téléchargement. On peut communiquer avec ce genre de service via des intents , mais la plus part du temps il se débrouille tout seul
    bindService() au contraire est à utiliser quand ton service n'est pas autonome , qu'il à besoin de beaucoup échanger avec une activité. La communication va se faire via un IBinder et un objet serviceConnection
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [Service] Location Listener
    Bonjour Grunk,

    Merci pour ta réaction.

    Mon Service lui ne communique pas avec l'activité.
    C'est donc la première proposition qui est a utilisé.

    Pour killer le LocationListener je fais comment du coup?

    Merci

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    De quel location listener tu parles ? un qui se trouve dans ton service ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [Service] Location Listener details
    oui, exactement.

    mon service implémente l'interface LocationListener et récupère la position de l'utilisateur.

    je stoppe mon service et du coup je voudrait stopper la localisation aussi..

    en dehors du fait que si je stoppe le service cela stoppe aussi la localisation?

    Merci.

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Je procède ainsi dans un service qui me sert à récupérer les positions GPS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void onDestroy()
    {
    	super.onDestroy();
    	if (this.locManager != null)
    		this.locManager.removeUpdates(this);
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [Loc] merci bien
    Merci pour ta réaction Grunk..

    je vais l'implementer.

    J'ai une autre question,

    Comment tester quand mon telephone est en veille donc verrouiller
    et quand le telephone est actif avec l'ecran allumer?

    Pour l'instant je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
                if(pm.isScreenOn() || pm.isInteractive()){
                    // not sleep
     
                }else{
                    // sleep
     
                }
            }
    ce qui me dérange c'est le contrôle de la version de l'OS,
    car pas compatible avec les versions inférieur..

    Merci d'avance.

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Si tu as besoin d'activer ou arreter uelque chose en fonction de l'atat de l'écran tu peux le faire via un broadcastreceiver.

    A chaque fois que l'écran s'éteint ou s'allume le système broadcast des intents que tu peux recevoir et donc agir en conséquence :

    https://developer.android.com/refere...TION_SCREEN_ON
    https://developer.android.com/refere...ION_SCREEN_OFF

    Sinon on trouve ce code un peu partout sur internet , a tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
    boolean isPhoneLocked = myKM.inKeyguardRestrictedInputMode();
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Merci Grunk
    Bonjour,

    Merci pour ta réponse Grunk.

    J'ai un souci de consommation d'énergie,
    je peux faire quoi pour supprimer le message de consommation d'énergie?

  11. #11
    Membre éclairé

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Points : 690
    Points
    690
    Par défaut
    Bonjour,

    Mon conseil : faire plutôt des tests pour voir qu'est ce qui consomme dans ton appli autant d'énergie et essayer d'optimiser. C'est mieux et tu gagneras en performance.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

    N'oubliez pas de consulter les FAQ Swift, Android
    Tutoriel : Développer une application multilingue sous iOS

  12. #12
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut
    Merci pour ta réaction Seelass;

    Quel genre de test je doit faire passer a mon code?

    Merci d'avance.

  13. #13
    Membre éclairé

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Points : 690
    Points
    690
    Par défaut
    Tu peux, peut-être jeter un oeil au moniteur d'android studio lorsque tu executes ton application qu'est ce qui se passe. Ex: Nom : Capture d’e?cran 2017-02-17 a? 11.41.20.png
Affichages : 81
Taille : 65,6 Ko
    Regarder aussi dans ton code (il existe des conseils, bonnes pratiques ou recommandations lorsqu'on veut faire certaine traitement) voir s'ils sont respectés.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

    N'oubliez pas de consulter les FAQ Swift, Android
    Tutoriel : Développer une application multilingue sous iOS

  14. #14
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut Profiling
    Merci pour ta réaction Seelass,

    Du coup je n'ai ce message que après 10h de fonctionnement.. La consommation énergétique c'est du côté batterie, mémoire ou cpu ?
    Je posterai un screen shot du profiler de Android studio.. Aujourd'hui encore
    Merci encore

  15. #15
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par sinzen Voir le message
    Bonjour,
    J'ai un souci de consommation d'énergie,
    je peux faire quoi pour supprimer le message de consommation d'énergie?
    Augmenter l'intervalle de temps entre 2 demandes au GPS et/ou réduire la précision du GPS.

    Il faut bien comprendre que quand tu demande une position GPS , tu reveil la puce GPS mais aussi le wifi et la puce 3/4G ce qui concrètement sont les trois plus gros consommateur d'énergie sur un téléphone (hors écran)

    Citation Envoyé par sinzen Voir le message
    Merci pour ta réaction Seelass,
    La consommation énergétique c'est du côté batterie, mémoire ou cpu ?
    Batterie
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Points : 101
    Points
    101
    Par défaut [Question ?] LocationListener
    Bonjour,

    Je post ce message pour que m'éclairé sur le fonctionnement de la localisation sous android.

    je fait une requête toute 15 minutes.

    Après avoir reçu un localisation Fine donc très précise,

    la mesure suivante me localise après déplacement de quelque kilomètres,

    m'indique toujours ma localisation précédente.

    Je sais pas pourquoi mais cela se résout tous seul.
    Mais cette situation est quand même problématique
    et j'espère résoudre cela avec vous.

    J'attends vos réaction et je poste le code également:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 400, 1, this);

  17. #17
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    C'est le comportement "normal" quand tu demande une position , la première qu'il te retourne est souvent celle mise en cache :

    https://developer.android.com/guide/...gies.html#Flow

    elle peut donc être relativement ancienne. Il faut donc peut être attendre une seconde mesure plus précise.

    note : le lien que je te propose , réponds probablement à la plus part des questions que tu as sur l'utilisation de la localisation.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Envoyer un message WM_USER a mon service
    Par basnifo dans le forum Windows
    Réponses: 3
    Dernier message: 04/10/2006, 10h42
  2. Réponses: 11
    Dernier message: 11/05/2006, 09h05
  3. Mon service Windows ne marche pas
    Par laadhar dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2006, 18h13
  4. Problème avec mon service mysql et PhpMyAdmin
    Par Fixazo dans le forum Outils
    Réponses: 1
    Dernier message: 28/08/2005, 18h02
  5. [VB.NET] afficher les "Services" de mon serv
    Par sangokus dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/03/2004, 13h09

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