Je développe une application Android qui utilise un service Web pour obtenir des données du serveur, pour cela, j'ai trois ensembles différents d'URL pour pointer le système de développement, le serveur de test et le serveur en direct. Il est difficile de changer d'URL chaque fois que je veux donner une demande de test / live. j'ai donc prévu de le rendre configurable, afin que l'application puisse obtenir l'URL appropriée en fonction de la constante de configuration du type de construction. Alors,
- Quelle est la meilleure façon de conserver ces constantes, classe statique java ou interface publique java ou fichier de ressources xml.? Quand? Pourquoi?
- qui donne de meilleures performances ?, Quand? Pourquoi?
Ex: ressource xml
<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 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"};
}
Réponses:
Il existe une grande différence entre les deux en ce 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'ensemble de l'application. Les principaux avantages de l'utilisation des ressources du projet sont la facilité d'accès et le fait qu'elles vous permettent d'organiser votre projet de manière significative.
static final
les constantes 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, c'est tout au plus trivial.Il n'y a pas de règle définie sur la façon dont vous devez utiliser les 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 des
static final
constantes pour des 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 de l'appareil (c.-à-d. Taille de l'écran, paramètres régionaux, etc.). Vous devez donc en tenir compte lorsque vous décidez si vous devez déclarer la constante en XML ou directement dans vos
.java
fichiers.la source
Pour les personnes qui veulent voir comment nous pouvons utiliser une classe pour définir nos constantes et appeler celles dont nous avons besoin.
Maintenant, nous pouvons utiliser les constantes ci-dessus de la manière suivante.
la source
Dans le cas général:
la source
Il est toujours recommandé d'extraire les chaînes d'interface utilisateur du code de votre application et de les conserver dans un fichier externe. Android rend cela facile avec un répertoire de ressources dans chaque projet Android.
la source
Je pense que les deux sens semblent être bons, mais le fait 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 comme variables statiques, vous devez modifier tous les fichiers de classe.
Ma suggestion est donc de séparer les constantes du fichier source et de les mettre dans la ressource et d'y accéder.
la source
Je suis content que quelqu'un ait posé ça ... plus un!
Les ressources du projet ont besoin d'accéder à Contexte, 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 mises en page. Pour les variables d'application et les constantes qui peuvent être traitées dans des méthodes statiques, je crée une classe abstraite et j'effectue une importation statique (de cette classe de constantes) dans tous les autres fichiers de classe du projet.
PVS
la source