Quel est le meilleur moyen de définir des constantes dans Android, que ce soit une classe statique, une interface ou une ressource XML?

Je développe une application Android qui utilise le service Web pour obtenir des données à partir du serveur, pour cela j’ai trois jeux d’URL différents pour diriger le système de développement, le serveur de test et le serveur live. Il est difficile de changer d’URL chaque fois que je veux faire une demande de test / live. J’ai donc prévu de le rendre configurable, afin que l’application puisse obtenir une URL appropriée basée sur la configuration de type de construction constante. Alors,

  • qui est le meilleur moyen de conserver ces constantes, java static class ou java public interface ou xml resource file. Quand? Pourquoi?
  • qui donne de meilleures performances ?, quand? Pourquoi?

Ex: ressource XML

0  http://development.com/xxxx http://test.com/xxx http://example.com/xxx  

Constante statique Java

 public class Config { public static final int BUILD_TYPE = 0; // 0 - development, 1 - test, 2 - live public static final Ssortingng[] URL_AUTHENTICATION = {"http://development.com/", "http://test.com/", "http://example.com"}; } 

    La différence entre les deux réside dans le fait que vous pouvez référencer des ressources de projet dans vos mises en page XML. Ils sont disponibles dans le contexte de l’application et sont donc accessibles dans l’application globale. Le plus grand avantage de l’utilisation de ressources de projet est la facilité d’access et la possibilité d’organiser votre projet de manière significative.

    static final constantes static final sont compilées dans le bytecode Java; les ressources du projet sont compilées dans un format binary dans l’apk. L’access à l’un ou l’autre est extrêmement efficace … s’il y a une différence entre les deux, c’est tout au plus sortingvial.

    Il n’y a pas de règle définie sur l’utilisation des ressources / constantes dans votre projet. Cela dit, j’utilise personnellement des ressources pour des valeurs que je pourrais avoir besoin d’utiliser dans mon code XML ou Java. D’un autre côté, j’utilise généralement static final constantes static final pour les valeurs qui ne seront utilisées que par mon code Java et qui sont spécifiques à mon implémentation.

    Notez également qu’il est possible de charger des ressources XML au moment de l’exécution en fonction de la configuration actuelle du périphérique (taille de l’écran, parameters régionaux, etc.). Vous devez donc en tenir compte lorsque vous décidez de déclarer ou non la constante en XML ou directement dans vos fichiers .java .

    Dans le cas général:

    • Les valeurs XML ont l’avantage d’être accessibles dans le fichier de présentation et le fichier manifeste sur les constantes dans les fichiers Java
    • Les valeurs XML ont l’avantage de prendre en charge plusieurs langues sur les constantes dans les fichiers Java

    Pour les personnes qui veulent voir comment nous pouvons utiliser une classe pour définir nos constantes et appeler tout ce dont nous avons besoin.

    Constant.java

      package org.nrum.nrum; /** * Created by rajdhami on 5/23/2017. */ public class Constant { public static final Ssortingng SERVER = "http://192.168.0.100/bs.dev/nrum"; // public static final Ssortingng SERVER = "http://192.168.100.2/bs.dev/nrum"; public static final Ssortingng API_END = SERVER + "/dataProvider"; public static final Ssortingng NEWS_API = API_END + "/newsApi"; public static final Ssortingng BANNER_API = API_END + "/bannerApi/lists"; public static final Ssortingng NOTICE_API = API_END + "/noticeApi/lists"; public static final Ssortingng UPLOAD_PATH = SERVER + "/uploads"; public static final Ssortingng UPLOAD_PATH_BANNER = UPLOAD_PATH + "/company_1/banner"; public static final Ssortingng UPLOAD_PATH_NEWS = UPLOAD_PATH + "/company_1/news"; public static final int BANNER_TRANSITION_DURATION = 5000; public static final int NOTICE_BUTTON_BLINK_DURATION = 5000; public static final int BANNER_FETCH_LIMIT = 3; } 

    Maintenant, nous pouvons utiliser les constantes ci-dessus de la manière suivante.

     Constant.NOTICE_BUTTON_BLINK_DURATION 

    Il est toujours recommandé d’extraire les chaînes de l’interface utilisateur de votre code d’application et de les conserver dans un fichier externe. Android rend cela facile grâce à un répertoire de ressources dans chaque projet Android.

    http://developer.android.com/training/basics/supporting-devices/languages.html

    Je pense que les deux sens semblent être bons mais la chose est que cela dépend de vos besoins.

    Si vous avez vos valeurs (lien de service Web) dans votre XML et supposez qu’il y a un changement dans vos valeurs (lien de service Web), vous pouvez facilement changer uniquement dans un fichier XML.

    Mais si vous utilisez des classes internes en tant que variables statiques, vous devez changer dans tous les fichiers de classe.

    Donc, ma suggestion est que séparer les constantes du fichier source et mettre en ressource et y accéder ..

    Pour être honnête, je ne pense pas que cela aura beaucoup d’importance pour la performance. Cela se résume surtout aux préférences (je préfère utiliser une variable statique dans le code).

    C’est probablement le moyen le plus performant de le faire, car il n’est pas nécessaire de le lire à partir de XML, mais il n’y a pas de différence notable. Je répète, vous ne remarquerez pas la différence.

    Je suis content que quelqu’un ait demandé ceci … plus un!

    Les ressources du projet doivent avoir access à Context, qui n’est pas disponible dans les méthodes statiques (sauf si vous le transmettez dans etc.), mais toujours disponible dans Activity – il semble y avoir une connexion préférentielle entre les ressources et les dispositions. Pour les variables d’application et les constantes pouvant être traitées dans des méthodes statiques, je crée une classe abstraite et effectue une importation statique (de cette classe de constantes) dans tous les autres fichiers de classe de projet.

    PVS