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 :

SharedPreferences.Editor.commit() - Pour quelles raisons peut retourner "false" ?


Sujet :

Android

  1. #1
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut SharedPreferences.Editor.commit() - Pour quelles raisons peut retourner "false" ?
    Bonjour à toutes et à tous,

    Mon appli propose à l'utilisateur de se loguer. Au bout de 3 essais, celui-ci est bloqué pendant 1 minute, même si il quitte l'appli.

    Pour réaliser cela, j'enregistre au bout de trois essais infructueux le timestamp auquel il a fait le dernier essai (avec java.lang.System.currentTimeMillis()). Et dans mon activité de log, je vérifie régulièrement si il y a 60000 de différence entre le timestamp courant et le timestamp enregistré dans la mémoire pour débloquer le bouton de connexion.

    J'utilise SharedPreferences pour écrire dans la mémoire et ça fonctionne très bien. Par contre, je n'ai pas vraiment la main mise sur le risque d'erreur... En effet, il est dit que SharedPreferences.Editor.commit() peut retourner false si on a pas réussi à écrire... Ok, mais pourquoi ? Comment savoir la cause du problème ? Y'a pas d'exception ?

    Selon vous, utiliser SharedPreferences est une bonne solution pour cette problématique ? Si non, vous auriez des suggestions ?

    Merci d'avance !

  2. #2
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    SharedPreferences fonctionne très bien, je n'ai jamais eut de soucis avec.
    Sinon pour être sure à 100% que la valeur est bien enregistré, il suffit de la comparer avec l'ancienne valeur une fois écrite.

  3. #3
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut
    Merci de ta réponse, mais le problème n'est pas là...

    Pas besoin de comparer avec l'ancienne valeur, puisque si elle n'a pas été correctement écrite, la fonction renvoie false.

    Ce n'est pas la conséquence qui m'intéresse, mais l'origine.

    Si l'erreur provient d'un manque de place en mémoire, par exemple (peu probable, mais c'est juste un exemple), j'aimerais pouvoir le détecter afin d'au moins afficher un message à l'utilisateur et agir en conséquence !

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Le seul risque d'erreur en utilisant les SharedPreferences c'est si tu change le type de donnée associé à une clé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    e.putInt("key",0);
    e.commit();
    e.putBoolean("key",true);
    e.commit();
    Ou sinon il se pourrait mais ça ne s'est jamais vu, c'est que le dossier de stockage des préférences soit corrompu, occupé ou introuvable.

    Mais tu peux tout à fait l'utiliser sans risque, surtout si tu connais les types de donnée que tu y stockes.

  5. #5
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    D'après ce que j'ai lu, la fonction peut renvoyer false si l'on déclare plusieurs instantances de l'Editor.

    C'est pour ça, si tu compare la valeur, tu aura un résultat plus proche de ce qui se passe vraiment. Mais bon, ça fait des lignes en plus et ça fait bricolage.

    Et même si tu en connaissais l'origine, je pense pas que tu puisse forcement agir dessus vu que ça doit être un cas vraiment très spécial.

    Si tu veut vraiment une sécurité, test si la fonction ne renvoie pas false ou obtient la même chose en comparant les valeurs et si problème il y a, il faut coder une solution en conséquence.

Discussions similaires

  1. Pour quelles raisons les entreprises devraient-elles opter pour des solutions libres ?
    Par Francis Walter dans le forum Logiciels Libres & Open Source
    Réponses: 116
    Dernier message: 11/02/2015, 11h19
  2. Réponses: 9
    Dernier message: 12/10/2011, 14h27
  3. [Conception Général] Pour quelles raisons un fichier CSS ne se charge pas ?
    Par Faiche dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 10/09/2008, 14h06
  4. message kernel_panic, pour quelles raisons ?
    Par copro dans le forum Debian
    Réponses: 6
    Dernier message: 10/07/2008, 21h33
  5. Allez vous acheter Leopard, et pour quelles raisons ?
    Par Mathusalem dans le forum Apple
    Réponses: 9
    Dernier message: 29/10/2007, 12h51

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