Quelle est la meilleure façon de définir des constantes dans Android, classe statique, interface ou ressource xml?

Je développe une application Android qui utilise un service Web pour obtenir des données du serveur, car j'ai trois ensembles d'URL différents pour mettre en point le système de développement, le serveur de test et le serveur en direct. Il est difficile de modifier l'URL chaque fois que je souhaite donner une application pour tester / vivre. Donc j'ai prévu de le rendre configurable, afin que l'application puisse obtenir une URL appropriée basée sur moi, la configuration de type de construction est constante. Alors,

  • Quelle est la meilleure façon de conserver ces constantes, la classe statique java ou l'interface publique java ou le fichier de ressources xml? Quand? Pourquoi?
  • Ce qui donne de meilleures performances?, Quand? Pourquoi?

Ex: ressource xml

  • Une classe peut-elle étendre deux classes?
  • Remplacez les paramètres du chemin commun en rétrofit 2 avec okhttp
  • Etats desséchables avec des couleurs (pas débrochables)
  • Envoyer SMS par programme sans ouvrir d'application de message
  • IntelliJ IDEA - Android JDK ne fonctionne pas
  • Comment déterminer l'IME actuel dans Android?
  • <integer name="config_build_type">0</integer> <string-array name="url_authentication"> <item >http://development.com/xxxx</item> <item >http://test.com/xxx</item> <item >http://example.com/xxx</item> </string-array> 

    Constante statique de Java

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

  • Android: ouvrez un pdf de mon application à l'aide de la visionneuse de pdf intégrée
  • Comment afficher une image dans le corps du courrier électronique?
  • Android WebView - naviguer sur la redirection d'URL
  • Caméra avant Android
  • Facebook LoginButton pour Android ne prend pas les termes login_text et logout_text passé de XML
  • Préférence AndroidPrix d'écran en deux lignes
  • 7 Solutions collect form web for “Quelle est la meilleure façon de définir des constantes dans Android, classe statique, interface ou ressource xml?”

    Il existe une grande différence entre les deux en ce sens que vous pouvez référencer les ressources du projet dans vos mises en page XML. Ils sont disponibles dans le contexte de l'application et sont donc accessibles sur l'application globale. Les plus grands avantages de l'utilisation des ressources du projet sont la facilité d'accès et qu'ils vous permettent 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 binaire dans l'apk. L'accès à l'un ou l'autre est extrêmement efficace … s'il y a une différence entre les deux, il est trivial au plus.

    Il n'existe pas de règle définie sur la façon dont vous devriez utiliser des ressources / constantes dans votre projet. Cela dit, j'utilise personnellement des ressources pour les valeurs que je devrais utiliser dans mon code XML ou java. D'autre part, j'utilise habituellement static final constantes static final pour les valeurs qui ne seront utilisées que par mon code java et qui sont spécifiques à ma mise en œuvre.

    Notez également qu'il est possible de charger des ressources XML au moment de l'exécution en fonction de la configuration actuelle de l'appareil (c'est-à-dire la taille de l'écran, les paramètres régionaux, etc.). Donc, vous devriez prendre cela en considération lorsque vous décidez si vous devez ou non déclarer la constante en XML ou directement dans vos fichiers .java .

    Dans le cas général:

    • Les valeurs XML ont l'avantage d'accessbilty dans le fichier de mise en page et le fichier de manifeste sur Constantes dans le fichier java
    • Les valeurs XML présentent l'avantage pour le support multi-langue sur Constantes dans le fichier java

    Pour les personnes qui souhaitent 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 String SERVER = "http://192.168.0.100/bs.dev/nrum"; // public static final String SERVER = "http://192.168.100.2/bs.dev/nrum"; public static final String API_END = SERVER + "/dataProvider"; public static final String NEWS_API = API_END + "/newsApi"; public static final String BANNER_API = API_END + "/bannerApi/lists"; public static final String NOTICE_API = API_END + "/noticeApi/lists"; public static final String UPLOAD_PATH = SERVER + "/uploads"; public static final String UPLOAD_PATH_BANNER = UPLOAD_PATH + "/company_1/banner"; public static final String 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 

    C'est toujours une bonne pratique d'extraire des chaînes UI à partir du code de votre application et de les garder dans un fichier externe. Android facilite cette tâche avec un répertoire de ressources dans chaque projet Android.

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

    Je pense que les deux voies semblent être bonnes, mais cela dépend de vos besoins.

    Si vous avez vos valeurs (lien de service Web) dans votre XML et supposons qu'il y ait une modification de vos valeurs (lien de service Web), vous pouvez facilement changer uniquement dans le fichier XML.

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

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

    Je ne pense pas que cela va être important pour la performance, pour être honnête. Il se compare surtout à la préférence (je préfère utiliser une variable statique dans le code).

    C'est probablement le meilleur moyen de le faire, car ils ne doivent pas être lus à partir de XML, mais il n'y a aucun moyen d'être une différence notable. Je le répète, vous ne remarquerez pas la différence.

    Je suis content que quelqu'un l'a demandé … plus un!

    Les ressources du projet ont besoin d'accéder au contexte, qui n'est pas disponible dans les méthodes statiques (à moins que vous ne le transmettez, etc.), mais toujours disponible dans Activité – il semble y avoir une connexion préférentielle entre les ressources et les mises en page. Pour les variables et les constantes de l'application qui peuvent être traitées en 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

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.