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 :

fermeture de l'activité principale de mon application lorsque je reçois un appel


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Géochimiste
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Géochimiste

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Par défaut fermeture de l'activité principale de mon application lorsque je reçois un appel
    Bonjour,

    Cela fait 1 semaine que je me casse la tête sur mon application. S'il vous plait, y a t il quelqu'un pour m'aider ?

    J'ai développé une application qui permet de faire du tracking GPS. l'activité tourne correctement même en background (un thread est lancé pour effectuer la sauvegarde des données dans un fichier donc je vois que ça fonctionne). Sauf que lorsque je reçois un appel téléphonique et/ou lorsque je navigue entre plus de 4 applications (ex.je consulte mes mails, puis j'envoie un sms, navigue sur internet, etc.) le tracking est stoppé. Lorsque je ré ouvre l'activité, c'est comme si elle été repassée par la méthode onCreate() du MainActivity, supprimant aussi les saisies de l'utilisateur.

    J'ai lu quelque part que c'était Android qui tuait les applications lorsque l'on navigue sur plus de 4 applis, lorsque celle-ci est onPause() pendant plus de 30 minutes ou lorsque le système à besoin de mémoire pour exécuter les Services prioritaires (ex. téléphone).

    J'ai recherché sur les forums, tutos et internet, mais je n'ai rien trouvé qui fonctionnait ex.

    Sauvegarder le Bundle de l'activité => La sauvegarde fonctionne mais entre la coupure et la réouverture de l'application, il n'y a pas eu de tracking.

    J'ai lu des trucs sur START_STICKY en retour de la méthode onStartCommand :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            handleStart(intent, startId);
            return START_STICKY;
        }
    mais d'après ce que j'ai compris cela concerne les services et non les activités, de plus, je n'ai pas l'impression que cela réponde à mon problème.

    Existe-t-il une méthode simple pour résoudre mon problème ?
    D'avance merci......

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Bonjour,


    pour moi la meilleur solution serait d'utiliser un service. Tu es sure que cela fonctionnera en background quoi qu'il arrive. Ensuite, il suffit de faire communiquer ce dernier avec ton activité.

    Sinon, essaye les sauvegardes avec les préférences mais cela ne résoudra pas ton problème d'arrêt de tracking!

    Bon courage

  3. #3
    Membre averti
    Homme Profil pro
    Géochimiste
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Géochimiste

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Par défaut
    Citation Envoyé par David55 Voir le message
    Tu es sure que cela fonctionnera en background quoi qu'il arrive.
    d'abord merci pour ta réponse , je vais creuser du côté des services voir ce que ça donne....

    Oui je suis sur que l'appli tourne en background car elle a déjà tourné durant 12 h et j'ai bien 12h de tracking......cela a fonctionné car c'était la nuit (donc je n'utilisais pas le téléphone) et je n'ai pas reçu d'appels téléphoniques, donc Android n'avait pas besoin de libérer la mémoire.

    Dalvik tue l'application quand il veut c'est à dire si le besoin arrive (il a besoin de la memoire) mais jamais en fonction du temps. Toujours en fonction du besoin.
    oui tout le monde dit la même chose sur les forums, mais je suis sur qu'il y a un moyen de contourner ce problème......Pourquoi cette certitude ???? Parce que j'utilise des applications qui tournent en background sans être kill par le système et ceci quoi qu'il arrive : ex. AirDroid, Skype, tTorrent, etc...

    Peut être que David55 a raison, il faudrait faire un service qui tourne en background en sticky pour que le tracking ne soit jamais interrompu et en parallèle je sauvegarde l'état de l'activité pour la restaurer au démarrage. Je n'ai jamais fait ça, je m'y penche et je vous tiens au courant......
    Encore merci....

    P.S. Toutes autres suggestions est la bienvenue

  4. #4
    Membre averti
    Homme Profil pro
    Géochimiste
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Géochimiste

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Par défaut
    David55 je crois que ta solution de créer un service fonctionne......J'ai mis un toast "service" pour le service et un "activité" pour l'activité qui s'exécute toutes les 3 secondes.

    Lorsque je navigue d'une application à l'autre et même lorsque je passe des coups de téléphone, l'activité est détruite (plus d'affichage du toast) alors que le service lui continue.

    Pour ceux que ça intéresse, je me suis aidé de ce tuto pour créer mon service (en plus ça tombe bien car cela concerne le relevé des coordonnées GPS )

    http://nbenbourahla.developpez.com/t...-sous-android/

    Pour moi ce problème est résolu....Il ne me reste plus qu'à transférer le code de mon activité vers mon service. Au pire si je butte encore sur quelque chose je publierai un nouvel article.

    Merci à tous, vous êtes super

  5. #5
    Membre chevronné

    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
    Par défaut
    Citation Envoyé par wataiso Voir le message
    Bonjour,
    J'ai lu quelque part que c'était Android qui tuait les applications lorsque l'on navigue sur plus de 4 applis, lorsque celle-ci est onPause() pendant plus de 30 minutes ou lorsque le système à besoin de mémoire pour exécuter les Services prioritaires (ex. téléphone)
    Je pense pas s'il y'a un contrat entre le Dalvik et l'application qui permettra de faire vivre l'application onPause pendant un temps t ou selon le nombre d'application ouvert.
    Dalvik tue l'application quand il veut c'est à dire si le besoin arrive (il a besoin de la memoire) mais jamais en fonction du temps. Toujours en fonction du besoin.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par jahbromo Voir le message
    Dalvik tue l'application quand il veut c'est à dire si le besoin arrive (il a besoin de la memoire) mais jamais en fonction du temps. Toujours en fonction du besoin.
    Ouais, mais mon petit doigt me dit que celle qui sont restées le plus longtemps inutilisées passent à la trappe en premier

  7. #7
    Membre chevronné

    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
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ouais, mais mon petit doigt me dit que celle qui sont restées le plus longtemps inutilisées passent à la trappe en premier
    Attention!!!!! dans un forum public destiné à partager l'information, toute information que chacun partage dans le sens de l'aide...doit etre verifié et prouvé exacte. Sinon l'aide deviendra destructif.

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    C'est juste une question de bon sens, une application, en background, qui tourne depuis longtemps, et plus facilement candidate au kill qu'un application en avant plan, qui viens d'être démarrée. Sinon l'utilisateur deviendrais fous . Bien entendu, l'algorithme est plus complexe et les détails sont ici:


    http://developer.android.com/referen...ocessLifecycle

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/01/2011, 17h27
  2. 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
  3. [EasyPHP] Pb lors de la fermeture de mon application avec ou sans fermeture de Easy Php
    Par Lolie11 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/06/2007, 10h38
  4. Réponses: 5
    Dernier message: 28/04/2006, 18h45
  5. Réponses: 1
    Dernier message: 26/04/2006, 14h54

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