Estoy desarrollando una aplicación para Android que usa un servicio web para obtener datos del servidor, para eso tengo tres conjuntos diferentes de URL para señalar el sistema de desarrollo, el servidor de prueba y el servidor en vivo. Es difícil cambiar la URL cada vez que quiero dar una aplicación para probar / en vivo. así que planeé hacerlo como configurable, para que la aplicación pueda obtener la URL apropiada según mi constante de configuración de tipo de compilación. Entonces,
- ¿Cuál es la mejor manera de mantener estas constantes, la clase estática java o la interfaz pública java o el archivo de recursos xml? ¿Cuando? ¿Por qué?
- ¿Cuál da mejor rendimiento ?, ¿ Cuándo? ¿Por qué?
Ej: recurso 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 estática 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
xml
configuration
constants
static-members
Jayabal
fuente
fuente
Respuestas:
Existe una gran diferencia entre los dos en que puede hacer referencia a los recursos del proyecto en sus diseños XML. Están disponibles en el contexto de la aplicación y, por lo tanto, son accesibles a través de la aplicación global. Las mayores ventajas de utilizar los recursos del proyecto es la facilidad de acceso y que te permiten organizar tu proyecto de forma significativa.
static final
las constantes se compilan en el código de bytes de Java; Los recursos del proyecto se compilan en formato binario dentro del apk. Acceder a cualquiera de los dos es extremadamente eficiente ... si hay una diferencia entre los dos, es trivial como mucho.No hay una regla establecida sobre cómo debe usar recursos / constantes en su proyecto. Dicho esto, personalmente uso recursos para valores que podría necesitar usar en mi código XML o java. Por otro lado, normalmente uso
static final
constantes para valores que solo usará mi código Java y que son específicos de mi implementación.También tenga en cuenta que es posible cargar recursos XML en tiempo de ejecución dependiendo de la configuración actual del dispositivo (es decir, tamaño de pantalla, ubicación, etc.). Por lo tanto, debe tener esto en cuenta al decidir si debe declarar la constante en XML o directamente en sus
.java
archivos.fuente
Para las personas que quieren ver cómo podemos usar una clase para definir nuestras constantes y llamar a cualquier lugar que necesitemos.
Ahora podemos usar las constantes anteriores de la siguiente manera.
fuente
En caso general:
fuente
Siempre es una buena práctica extraer cadenas de IU del código de su aplicación y mantenerlas en un archivo externo. Android facilita esto con un directorio de recursos en cada proyecto de Android.
fuente
Creo que ambos sentidos parecen ser buenos, pero lo que pasa es que depende de tus requisitos.
Si tiene sus valores (enlace de servicio web) en su XML y supone que hay algún cambio en sus valores (enlace de servicio web), puede cambiar fácilmente solo en el archivo XML.
Pero si usa clases internas como variables estáticas, debe cambiar todos los archivos de clase.
Entonces, mi sugerencia es que separe las constantes del archivo fuente y colóquelas en el recurso y acceda a él.
fuente
Me alegra que alguien haya preguntado esto ... ¡más uno!
Los recursos del proyecto necesitan acceso a Contexto, que no está disponible en métodos estáticos (a menos que lo pase, etc.), pero siempre está disponible en Actividad; parece haber una conexión preferencial entre recursos y diseños. Para las variables y constantes de la aplicación que se pueden procesar en métodos estáticos, creo una clase abstracta y hago una importación estática (de esta clase de constantes) en todos los demás archivos de clase del proyecto.
PVS
fuente