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 :

Remote Service avec le Task Manager


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut Remote Service avec le Task Manager
    Bonsoir,
    Encore une question, décidément j'en pose plus que je n'aide la communauté

    J'ai un Service dans mon application que j'ai déclaré en tant que :remote,
    tout ce passe bien et j'arrive à le lancer au démarrage.
    Si je ferme mon application normalement, grâce au bouton back notamment mon service continue de tourner pour lancer des notifications a l'utilisateur.
    Par contre, dès que je passe par le gestionnaire des applications et que je ferme mon application cela tue mon service aussi.
    Je pense que le gestionnaire tue mon service car il est déclaré dans le même manifest que mon application,.
    Il y a t'il un moyen d'indiquer au gestionnaire de ne pas tuer mon service ?
    Évidemment je souhaite garder le service dans le même apk que mon application.

    En vous remerciant par avance pour le temps consacré à me lire/répondre.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sake_reflex Voir le message
    Si je ferme mon application normalement, grâce au bouton back notamment mon service continue de tourner pour lancer des notifications a l'utilisateur.
    Le back ne ferme pas l'application. C'est pour cela que le service tourne toujours. Ca stop juste l'activity en cours.

    Par contre, dès que je passe par le gestionnaire des applications et que je ferme mon application cela tue mon service aussi.
    Je pense que le gestionnaire tue mon service car il est déclaré dans le même manifest que mon application,.
    Vue que tu force la fermeture de l'application, pourquoi le service devrais ne pas se fermer?

    Sinon, pour obliger Android à laisser un service tourner, il faut le rendre foreground. Sinon, Android peut décider de le fermer lors d'un appel, une mise en veille, ...
    http://developer.android.com/referen...Foreground(int, android.app.Notification)

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Merci bien
    Par contre pour lancer un service en background, une notification est "obligatoire" alors ?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sake_reflex Voir le message
    Merci bien
    Par contre pour lancer un service en background, une notification est "obligatoire" alors ?
    En forground, oui.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Ça marche merci beaucoup

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Sinon, pour obliger Android à laisser un service tourner, il faut le rendre foreground. Sinon, Android peut décider de le fermer lors d'un appel, une mise en veille,
    Juste une précision , il ne le fermera que s'il pense que cela est nécessaire pour récupérer de la mémoire.

    Make this service run in the foreground, supplying the ongoing notification to be shown to the user while in this state. By default services are background, meaning that if the system needs to kill them to reclaim more memory (such as to display a large page in a web browser), they can be killed without too much harm.
    Donc si tu le force à rester il faut bien penser que tu n'autorise pas le téléphone à vider de sa mémoire pour qu'il fonctionne plus facilement. Donc vu de l'utilisateur ce n'est pas forcément apprécié. A mon avis il ne faut l'utiliser que si tu penses que cela est nécessaire.

    Par contre, dès que je passe par le gestionnaire des applications et que je ferme mon application cela tue mon service aussi.
    En même temps si l'utilisateur décide de "kill" ton application cela me semble normal que le service le soit également non ?

    Par contre pour lancer un service en background, une notification est "obligatoire" alors ?
    Comme l'a dit Yan en ForeGround oui en Background non.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Juste une précision , il ne le fermera que s'il pense que cela est nécessaire pour récupérer de la mémoire.
    En gros Android libère suivant cette priorité :

    1- les Activity : Une activity en arrière plan prend des ressources pour rien. C'est du jetable.

    2- les services : il exécute surement quelque chose donc ils sont détruit en second si besoin. C'est du jetable mais que l'on garde si on peux.

    3- les services foreground : l'appli spécifie que le service fait quelques chose (joue de la music, ...) et ne doit pas être détruit sauf cas extrême.

    Il faut donc faire attention où l'on met nos traitement et gérer le fait qu'Android peut détruire les activity et service quand bon lui semble. Il faut bien faire attention à leurs cycle de vie.
    C'est pour cela que mettre un thread dans une activity est dangereux par exemple et qu'il faut mieux utiliser un service pour des traitements lourd.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par défaut
    Tu peux toujours utiliser un WatchDog, tu lance une alarme tout les x minutes qui vérifie que ton service est lancé, sinon il le relance.

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    En fait c'est un service qui envoi une notification quand une nouveau message arrive dans la messagerie, un peu comme le service de mail utilise par gmail.

    Donc c'est un service qui doit être toujours lancé même si mon application est morte.

    Ps : L'utilisateur peut enlever le service par les préférences de mon application.

  10. #10
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sake_reflex Voir le message
    En fait c'est un service qui envoi une notification quand une nouveau message arrive dans la messagerie, un peu comme le service de mail utilise par gmail.

    Donc c'est un service qui doit être toujours lancé même si mon application est morte.

    Ps : L'utilisateur peut enlever le service par les préférences de mon application.
    Tu réagit lors d'un itent ou tu regarde s'il y as un nouveau message?

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Je me suis peut-être mal exprimé, la messagerie se situe sur un site qui n'est pas un service de messagerie, c'est un jeu par navigateur.
    Donc je regarde tout les X minutes(paramétrable par l'utilisateur, par défaut je pense mettre 15-30 minutes) la page HTML que je parse.
    Si je vois qu'il y a un nouveau message je lance une notification qui renvoi sur mon application.

    Tu réagit lors d'un itent ou tu regarde s'il y as un nouveau message?
    Donc je regarde si il y a de nouveaux messages.

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Donc regarde AlarmManager qui est fait pour cela
    http://developer.android.com/referen...rmManager.html

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Citation Envoyé par yan Voir le message
    Donc regarde AlarmManager qui est fait pour cela
    http://developer.android.com/referen...rmManager.html
    This class provides access to the system alarm services. These allow you to schedule your application to be run at some point in the future. When an alarm goes off, the Intent that had been registered for it is broadcast by the system, automatically starting the target application if it is not already running
    De ce que j'ai compris, dès qu'un événement survient cela démarre automatiquement mon application, il n'y a pas moyen de changer cela ?
    Par exemple lancer une notification à la place ?

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sake_reflex Voir le message
    De ce que j'ai compris, dès qu'un événement survient cela démarre automatiquement mon application, il n'y a pas moyen de changer cela ?
    Par exemple lancer une notification à la place ?
    Comment cela?

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    J'ai mal compris le fonctionnement je pense.
    Pour être sûr comme receiver a l'alarmManager je peux donner ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class BackgroundServiceReceiver extends BroadcastReceiver
    {
    	@Override 
    	public void onReceive(Context context, Intent intent)
    	{
    		Intent serviceIntent = new Intent(); 
    		serviceIntent.setClassName("package", "package.MessagerieSerivce"); 
    		context.startService(serviceIntent);
    	} 
    }
    Le service ne s’exécute qu'une seule fois et on le relance tout les X temps grâce a l'alarmManager ?
    Et en plus je n'ai plus besoins de le mettre en foreground.

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sake_reflex Voir le message
    Le service ne s’exécute qu'une seule fois et on le relance tout les X temps grâce a l'alarmManager ?
    En gros oui.
    L'alarmManager sert à lancer un intent. Que l’application soit lancé ou non. Le gros intérêt c'est qu'il ne va pas le faire si le device est en veille mais dés sa sortie en veille pour ne pas pomper toute la batterie.
    A savoir qu'un device en veille en sort de temps en temps.

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Merci beaucoup
    Le développement android c'est bien mais il y a tellement de choses à savoir
    En tout cas merci encore à tous ceux qui prennent le temps de m'aider.

  18. #18
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sake_reflex Voir le message
    Merci beaucoup
    Le développement android c'est bien mais il y a tellement de choses à savoir
    En tout cas merci encore à tous ceux qui prennent le temps de m'aider.
    C'est ces petites choses qui change du monde PC que me plait dans Android ^^

  19. #19
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    J'ai réussi à implémenter l'alarmManager mais il reste toujours le problème de savoir comment gérer le fait que l'utilisateur tue l'application mais sans fermer les alarmes.
    Il y a t'il une façon de ne pas supprimer les alarmes ?

  20. #20
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sake_reflex Voir le message
    J'ai réussi à implémenter l'alarmManager mais il reste toujours le problème de savoir comment gérer le fait que l'utilisateur tue l'application mais sans fermer les alarmes.
    Il y a t'il une façon de ne pas supprimer les alarmes ?
    C'est android qui gère les alarme et non l'appli.
    Je suis étonné qu'ils disparaissent quand l'application est tué par l'utilisateur. Ce qui est un cas très rare en principe.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. gwt-ext : remplir un grid avec un remote service!
    Par touille dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 01/07/2008, 15h05
  2. Déploiement de Web Service avec InstallShield
    Par _beber85 dans le forum Services Web
    Réponses: 7
    Dernier message: 12/07/2006, 13h28
  3. Réponses: 3
    Dernier message: 30/08/2005, 09h09
  4. comment on peut faire un service avec builder c++
    Par infoactif dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/08/2005, 17h33
  5. Réponses: 3
    Dernier message: 21/09/2003, 15h52

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