6
votes

Meilleure pratique pour stocker les clés associées à une classe

Est-il préférable de stocker un ensemble de paires de clés utilisées dans une classe dans une interface distincte ou est-ce une meilleure pratique de la stocker dans strings.xml?

E.g. : xxx

puis l'accédez à mon code sous forme de préférences.pref1

vs.

stocker en paires de noms de nom string.xml: xxx

puis y accédant dans ma classe comme: xxx


2 commentaires

Stockez-le en Java si vous le pouvez. Stockez-le dans le fichier Conf si vous devez le faire.


Pourquoi une clé de préférence sauvegarderait-elle une interface ??? La chose est que l'on peut définir les préférences dans le fichier XML (PréférencesCrean, PreferCeCategory, etc.). Dans ce cas, il faut définir Android: la valeur clé et à partir de là, nous ne pouvons pas accéder à la classe Java. Idem pour Android: DefaultValue


4 Réponses :


3
votes

Je tiens à partager ce que j'ai fait pour le stockage de préférences, j'utilise la construction d'Android dans une fonctionnalité de Android appelée SharedPreferences code> . Pour un accès facile, je crée un wrapper autour de SharedPreferences code> appelé usermodel code> qui ont des codes comme celui-ci: xxx pré>

Dataconstant code> Dataconstant code > dans le code ci-dessus n'est qu'une classe qui contient une variable constante comme celle-ci: p> xxx pré>

Ceci utilise une classe d'utilitaire qui crée également pour aider à travailler avec SharedPreferences code> plus facile: p> xxx pré>

Utiliser est assez simple: p>

  1. Pour charger les données, il vous suffit d'appeler: p>

    sharedData.saveIntoPreferences();
    
  2. Pour changer ou récupérer des données, appelez simplement le champ associé Getter / Setter: P>

    sharedData.getPassword();
    sharedData.setPassword("new password");
    
  3. Enfin, si vous modifiez le (s) champ (s), n'oubliez pas d'appeler sauvegardiverferences code>: p>

    UserModel sharedData = new UserModel(getApplicationContext());
    


1 commentaires

C'est la bonne réponse. D'autres réponses sont des non-sens simples, mais je suppose à l'époque, d'autres auteurs n'étaient pas intéressés par Android. La chose est que les préférences peuvent également être définies dans les mises en page XML et à cette clé de localisation et la valeur par défaut doit également être fournie. Il y a un problème si ceux-ci sont définis dans la catégorie de classe Java de XML, nous n'aurons pas accès à ces constantes



0
votes

À mon avis, essayez de minimiser l'utilisation du "contexte" dans votre projet pour éviter les fuites de mémoire ou charger des ressources inneceses.

Les préférences partagées sont une bonne option mais doivent utiliser le contexte de l'application ou de l'activation. Fréquemment utilisé lorsque vous voulez persister certaines valeurs dynamiques, c'est ce cas?. P>

Interfaces Java utilise uniquement les membres finaux (statiques) et sont très compacts et faciles à utiliser (rappelez-vous) dans le code. Essayez d'utiliser Toujours vous avez des membres intégrables statiques (comme IP, mots de passe, etc.). P>

Aussi, utilisez Enums pour gérer des états ou une autre chose dans votre application, par exemple P>

public  interface Preferences {
    public String HOST = "http://xxx.xxx.xxx.xxx";
    public String PREF1 = "pref1";
    public String PREF2 = "pref2"; 
    public enum Connection { CONNECTED, DISCONNECTED, UNKNOWN }
}


0 commentaires

0
votes

C'est à vous d'utiliser la classe Java ou dans SharedPreference, la diffètence entre eux est votre but. À mon avis, si vous souhaitez que Save Constantes, utilisez simplement une classe Java qui s'étend enum. Sinon, les données utilisateur, les données de session enregistrées dans SharedPreference, vous pouvez renvoyer la réponse d'ARFIFBAYU, mais dans mon objectif, vous devez refléter la valeur de votre champ.


0 commentaires

0
votes

Je préfère utiliser strings.xml pour des ressources qui doivent être utilisées dans des fichiers de mise en page. Pour les variables qui doivent être accessibles en classe I préfèrent l'interface way.


0 commentaires