studio programacion para herramientas fundamentos desarrollo con avanzado aplicaciones android xml configuration constants static-members

programacion - ¿Cuál es la mejor manera de definir constantes en android, ya sea clase estática, interfaz o recurso xml?



manual android studio avanzado (7)

Creo que en ambos sentidos parece ser bueno, pero la cosa es que depende de tus requisitos.

Si tiene sus valores (enlace del servicio web) en su XML y supone que hay algún cambio en sus valores (enlace del servicio web), puede cambiar fácilmente solo en un archivo XML.

Pero si usa las clases internas como variables estáticas, debe cambiarlas en todos los archivos de la clase.

Así que mi sugerencia es que se separen las constantes del archivo fuente y poner en el recurso y acceder a él ..

Estoy desarrollando una aplicación para Android que utiliza el 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 deseo dar una aplicación para probar / en vivo. así que planeé hacerlo como configurable, para que la aplicación pueda obtener la URL adecuada en función de la constante de configuración del tipo de compilación. Asi que,

  • ¿Cuál es la mejor manera de mantener estas constantes, la clase estática de Java o la interfaz pública de Java o el archivo de recursos xml? ¿Cuando? ¿Por qué?
  • que da un 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"}; }


En el caso general:

  • Los valores XML tienen la ventaja de la accesibilidad en el archivo de diseño y el archivo de manifiesto en Constantes en el archivo java
  • Los valores XML tienen la ventaja de admitir varios idiomas en Constantes en el archivo java

Hay una gran diferencia entre los dos en cuanto a 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, están disponibles en toda la aplicación global. Las mayores ventajas de utilizar los recursos del proyecto es la facilidad de acceso y que le permiten organizar su proyecto de manera significativa.

static final constantes static final se compilan en el bytecode de java; los recursos del proyecto se compilan en un formato binario dentro de la aplicación. El acceso a cualquiera de ellos es extremadamente eficiente ... si hay una diferencia entre los dos, es trivial como máximo.

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 XML o código Java. Por otro lado, normalmente utilizo constantes static final 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, el tamaño de la pantalla, la configuración regional, etc.). Por lo tanto, debe tener esto en cuenta al decidir si debe declarar la constante en XML o directamente en sus archivos .java .


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 transfiera, etc.), pero siempre está disponible en la Actividad: parece haber una conexión preferencial entre los recursos y los diseños. Para las variables y constantes de la aplicación que pueden procesarse en métodos estáticos, creo una clase abstracta y realizo una importación estática (de esta clase de constantes) en todos los demás archivos de clase de proyecto.

PVS


No creo que va a importar mucho para el rendimiento, para ser honesto. Principalmente se trata de preferencia (prefiero usar una variable estática en el código).

Probablemente sea la mejor forma de hacerlo, ya que no es necesario leerlos desde XML, pero no hay forma de que sea una diferencia notable. Repito, no notarás la diferencia.


Para las personas que quieren ver cómo podemos usar una Clase para definir nuestras constantes y llamar a cualquier parte que necesitemos.

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; }

Ahora podemos usar las constantes anteriores de la siguiente manera.

Constant.NOTICE_BUTTON_BLINK_DURATION