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 :

Problemes perenption objets java android


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut Problemes perenption objets java android
    Bonjour, je présente d'abord le contexte : je développe actuellement une application android. Dans cette application l'utilisateur doit se connecter pour accéder à ses données. Pour stocker les informations j'ai créé une classe Utilisateur.java qui contient les informations dans des variables et possède des fonction d’accès à ces variables.

    En faite ma classe marche très bien l'utilisateur se connecte, les informations sont comparées à celles de la base de données et elle écrit dans l'objet les informations. Le problème est que lorsque l'application est réduite plus d'une heure et que je la ré-ouvre, les variables de l'objet Utilisateur n'ont plus les même valeurs. Je sais juste qu'il faut un certain temps environ une heure car si je réduit l'appli et que je la ré-ouvre au bout de dix minutes aucun problème et j'ai testé mais l'objet utilisateur n'est pas = null;

    Pour pouvoir utiliser cet objet dans toutes les Activities ou dans l'appli en général la particularité est que cette classe contient une instance d'Utilisateur (elle même). J'ai une fonction getinstance() qui me retourne l'objet si il n'est pas vide ou qui si il est égale à null, l'instancie.

    exemple d'utilisation Utilisateur.getinstance().getnom(); //retourne le nom

    Voila si quelqu'un peut m'aider à trouver pourquoi les valeurs sont modifiées. J'ai pensée que peut être le garbage colector de la vm pouvais être dans le coup lors du nettoyage mémoire.

    Je donnerais plus de détails si il en faut ou si je me suis mal expliqué(pas facile)...

    Merci

  2. #2
    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
    Bonjour,

    D'abord regarde bien si les valeurs récupéré lors de la réouverture sont les bonnes (regarde dans le code et non l'écran).
    Si ce n'est pas les bonnes regardes si tu les sauvegardes bien .

    Ensuite il y a un nettoyage qui s’effectue par Android si il considère que l'application n'est plus utilisé et qu'il a besoin de mémoire, pour cela tu as une 'option' (startForeground(int, Notification)) pour lui signifier que l'application est prioritaire.
    Cela se fait sur les Services :
    The Android system will attempt to keep the process hosting a service around as long as the service has been started or has clients bound to it. When running low on memory and needing to kill existing processes, the priority of a process hosting the service will be the higher of the following possibilities:
    http://developer.android.com/referen...ocessLifecycle

  3. #3
    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
    Pour pouvoir contribuer moi j'ai besoin quelques information supplementaires

    1. La base de données est locale ou distante?

    2. Veux tu saugarder l'object Utilisateur pendant tout le temps?

    3. Au lieu de stocker les informations dans une variable static qui ne peut pas persister longtemps (question de heap, space) pourquoi ne pas penser au stockage dans les preferences, filesystem ou database?

    4.

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut
    Déja merci de vos réponses.

    La base de donnée est distante, base de donnée Mysql stocké sur un serveur php et je n'ai aucun problème pour récuperer les valeurs.

    Je recupère donc ces données et je les places dans l'objet Utilisateur. Et c'est cet objet que j'utilise à chaque fois qu'il me faut une info(l 'id de l'utilisateur pour faire une requete de ses messages par exemple).

    En faite je viens de me rendre compte d'une chose c'est que lors de l'utilisation d'onglet dans android on peut reduire l'application les onglets se re-ouvre directement mais si l'on reduit l'appli un bon moment 1 heure par exemple les onglets ne sont pas simplement réaffichés mais ils sont "re-executés".

    Si quelqu'un pouvais me dire à quoi est du ce phénomène qui doit etre la cause de mon problème.

    Sinon je pense que je vai stocker les données dans un fichier dans la mémoire du telephone comme le dit jahbromo.

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/03/2013, 00h53
  2. Problème d'installation java
    Par mickey hollywood dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 23/03/2005, 11h01
  3. [SAX] Passer d'objet java en fichier XML?
    Par spoutyoyo dans le forum Format d'échange (XML, JSON...)
    Réponses: 15
    Dernier message: 05/01/2005, 08h31

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