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 :

Android instance unique de mon app


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Août 2010
    Messages : 130
    Par défaut Android instance unique de mon app
    Bonjour !
    Actuellement quand j'utilise mon application sur android. il arrive que quand je la ferme avec le bouton (icon de petite maison) et que je la reouvre elle garde son état. Et d'autres fois, elle revient à son état initiale (je pense c'est une nouvelle instance qui se lance) alors que je n'avais jamais arreté l'ancienne. Comment avoir une seule instance à la fois qui roule ?
    (c'est-a-dire pas possible d'en ouvrir une seconde en // a la première que j'ai lancé)


    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour,
    Sur ce lien tu trouveras comment lancer une instance une seule fois. http://developer.android.com/guide/t...ent.html#lmode
    Mais après je ne sais pas si cela va résoudre ton problème. Le bouton home (si je ne dis pas de bétises) met ton application en arrière plan. Donc elle n'est pas vraiment arrêtée. Je ne sais pas comment Android gère cela car au bout d'un moment il doit bien les supprimer pour libérer de la mémoire.

  3. #3
    Membre chevronné
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Par défaut
    Je sais que quand tu utilise la touche home, c'est la méthode onPause qui est appelé, et quand tu retourne dessus, il me semble que c'est onResume, tu dois surement jouer dedans mais après je sais pas comment indiquer que l'appli ne doit jamais se stopper. Bon je dis stopper sinon je vois pas pourquoi elle lancerai une nouvelle instance...

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2011
    Messages : 16
    Par défaut
    Sur la documentation d'Android, tu as le cycle d'une actvité :
    http://developer.android.com/referen...ivityLifecycle

    Elle est "tuée" quand le système à besoin de plus de mémoire. C'est pour ça que parfois tu as ton application qui "redémarre".
    Pour être sûr de retrouver tes données à la prochaine ouverture, il faut enregistrer tes données dans les méthodes qui vont bien. (onPause(), onStop() ...)

  5. #5
    Membre très actif
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Août 2010
    Messages : 130
    Par défaut
    re,

    Dans mon cas si l'utilisateur éteint le téléphone ou décide de fermer l'application volontairement, ca ne me dérange pas si mon application est tuée et ne recharge pas son dernier état connu (en repartant à 0). Pour autant que quand il la met en background avec le bouton home, elle garde son état.

    Selon l'approche AndroChristophe, j'ai ajouté pour mon activity dans le manifest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android:launchMode="singleInstance"
    et ca a l'air de faire ne sorte qu'il garde toujours une seule instance ! donc si il y en a une qui roule, il n'en crée pas une nouvelle. Donc ca répond à mon besoin !

    Vagaweb soulève un bon point car si l'application peut être arrêtée automatiquement par le système, ca ne m'arrange pas. Donc je dois empêcher cela.
    Je cherche ! je vous tiens au courant !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 18
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vagaweb soulève un bon point car si l'application peut être arrêtée automatiquement par le système, ca ne m'arrange pas. Donc je dois empêcher cela.
    Je cherche ! je vous tiens au courant !
    Je suis dans le même cas que vous, avez-vous trouvez une solution ?

  7. #7
    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
    Je tiens à m'excuser pour l'édition de ton message... non voulue (je voulais juste répondre en quotant), je vais faire doublement attention à l'avenir à ces boutons l'un à coté de l'autre....

    Sinon :
    Attention, il n'y a toujours qu'une seule et unique instance d'une application (un "process") !! Par contre, il peut y avoir dans ce process, plusieurs instances d'une activité: ca on peut le gérer par le manifest.

    Vagaweb soulève un bon point car si l'application peut être arrêtée automatiquement par le système, ca ne m'arrange pas. Donc je dois empêcher cela.
    Surtout pas ! Cela irait à l'encontre des principes mêmes d'android... Si un autre activité a besoin de la mémoire elle doit pouvoir la prendre....
    Par contre, faire la sauvegarde dans un Bundle de l'état de l'activité (onSaveInstanceState je crois), et reprendre cet état dans le onCreate (le bundle passé en paramètre c'est celui la), est fortement recommandé, et permet justement à Android de tuer le process entierement et de le redémarrer comme si de rien n'était (pour l'utilisateur) si besoin.
    A noter que l'état des views (EditText, etc..) est déjà sauvegardé/recréé dans le bundle.

Discussions similaires

  1. Quelle base de données pour mon app Android
    Par Emy1992 dans le forum Android
    Réponses: 1
    Dernier message: 15/07/2013, 01h45
  2. [C#][VS2003] Instance unique
    Par shinkyo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/05/2006, 00h42
  3. [XML] Lire un fichier uniquement via mon application ?
    Par charliejo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 20/01/2006, 16h26
  4. [MFC] instance unique de dialogue non modale
    Par venomelektro dans le forum MFC
    Réponses: 5
    Dernier message: 02/02/2005, 12h41
  5. [VB6] [DLL] DLL à instance unique
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 19/09/2003, 08h07

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