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 :

Problème service et veille prolongée


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par défaut Problème service et veille prolongée
    Bonjour,

    Je commence à apprendre à développer sous Android et je rencontre un souci dans le développement de mon application.

    But de l’application : Envoyer un message UDP de manière périodique.

    Schéma l’application :
    Activité : Qui permet de saisir les paramètres pour le message UDP et qui permet de démarrer ou d’arrêter mon service.
    Mon Service : Qui permet de faire la connexion et de vérifier différents paramètres avant d’envoyer le message.
    Un Thread : Qui envoi le message UDP au serveur de manière périodique.

    Tout ça fonctionne correctement tant que le téléphone est actif (en utilisation ou branché), mais dès qu’il (le téléphone) passe en veille prolongée, mon service s’arrête.

    Je souhaiterais savoir si il est possible, par programmation, de faire sortir le téléphone de la veille prolongée de manière périodique pour qu’il puisse envoyer mon message UDP.

    Merci de l'attention porté à mon message !

  2. #2
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Un "service" n'est pas un truc qui tourne en tâche de fond.... Un "service" n'est ni plus ni moins qu'une activité sans interface.
    Toutes les activités sont interrompues (et les threads aussi) lors d'un passage en veille.

    Pour sortir de veille, il n'y a qu'un moyen: AlarmManager.
    Mais attention, forcer une sortie de veille toutes les 5 minutes (surtout pour faire du réseau) = mort de la batterie très rapidement !

    Normalement, quand le téléphone est en veille il n'y a absolument aucun intérêt à faire des requêtes réseau.


    Si le but est de récupérer des données sur Internet.

    * Pas de notification: Simplement utiliser AlarmManager avec une alarme "inexacte" et un type sans "WAKEUP". L'utilisation de SyncManager permet de s'affranchir de cela (mais nécessite une tringlerie niveau comptes...).
    * Notifications non immédiates (toutes les X minutes). Utiliser une alarme "inexacte" et un type "WAKEUP".
    * Notifications immédiates. Utiliser GCM pour recevoir une notification de mise à jour des données depuis l'extérieur (ce qui réveillera le téléphone).

    Maintenant si les données proviennent du téléphone, il ne sert à rien d'envoyer les données quand le téléphone est en veille, celles-ci ne peuvent pas avoir changé depuis le passage en veille.

    Et si le but est de faire du heart-beat, cela risque de merdoyer vu qu'un accès internet n'est pas toujours disponible.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par défaut Remerciement et réponse
    Merci pour ta réponse "Nicroman", je vais me tourner vers AlarmManager pour essayer de faire fonctionner mon "Envoi UDP" comme je le souhaite. Pour ce qui est de la consommation de la batterie je suis conscient que ça va la réduire de manière importante.

    Sinon effectivement comme tu le dis, c'est du heart-beat que je veux faire. C'est pour indiquer que le téléphone (donc son propriétaire) est présent dans le réseau.

    Par contre pour le "Service", il me semblait justement que c'était le but, qu'il tourne en tache de fond pour récupérer des évènements ou faire des actions que l'utilisateur n'a pas forcément besoin de voir. Exemple, un service qui surveille les SMS pour envoyer des réponses automatiques suivant les personnes ou horaire de la journée.

    En tous les cas merci encore, je vais maintenant essayer de faire la mise en place de tout cela.

  4. #4
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    En fait, dans Android, tout est "réponse à un Intent".

    L'Intent peut être un broadcast ou non, peu importe.

    Dès qu'on a besoin d'un contexte (localisation, utilisation des ressources du device, etc...), il faut utiliser Activity ou Service.
    Si l'Intent doit afficher une interface => Activity
    Si l'Intent ne doit pas afficher d'interface => Service

    Dans les deux cas, la réponse à l'Intent doit être courte et rapide (pas de traitement long, comme l'utilisation du réseau par exemple) => nécessite d'utiliser un Thread dans les cas contraires.
    L'utilisation d'un Thread peut être simplifiée par AsyncTask, ou, dans le cas du Service, par l'utilisation d'un "IntentService".

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

Discussions similaires

  1. Problème mise en veille prolongé/ Internet explorer
    Par morgan47 dans le forum Windows XP
    Réponses: 1
    Dernier message: 06/10/2009, 08h35
  2. Problème mise en veille prolongée
    Par Gragra dans le forum Windows Vista
    Réponses: 5
    Dernier message: 09/10/2008, 09h54
  3. Probléme mise en veille + mise en veille prolongée
    Par Fefy44 dans le forum Windows Vista
    Réponses: 6
    Dernier message: 04/05/2008, 15h55
  4. Problème redémarrage vista (veille prolongée)
    Par matech dans le forum Windows Vista
    Réponses: 3
    Dernier message: 03/11/2007, 18h30
  5. Problème veille prolongée
    Par lolo57 dans le forum Windows XP
    Réponses: 4
    Dernier message: 08/02/2007, 16h23

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