Comprobación de la versión de Android e introducción de constantes estáticas finales

Era mi entendimiento que y constantes static final se inline en tiempo de compilación cuando se utiliza Java.

Observando el uso del componente Version-Aware – Agregue la lógica de la conmutación y el uso de Build.VERSION.SDK_INT y de Build.VERSION_CODES me confunde, como si ambos estos valores de las constantes sean inlined en la compilación este acercamiento sería inútil. ¿Que me estoy perdiendo aqui?

Gracias 🙂

EDIT: ¿el hecho de que están en un método estático en una clase abstracta cambiar este tiempo de compilación inlining?

Lo que está en línea es las constantes que se pueden determinar en tiempo de compilación, como:

 private final int CONST = 1; 

Si comprueba el código fuente (es una versión antigua, pero supongo que no ha cambiado mucho), las constantes se ven así:

 public static final String SDK = getString("ro.build.version.sdk"); 

Y este es el método getString :

 private static String getString(String property) { return SystemProperties.get(property, UNKNOWN); } 

Por lo tanto, la constante no se puede determinar en tiempo de compilación.

  • Cómo quitar una tarea de ScheduledExecutorService?
  • Ejemplo de uso de pestañas de Android con Vistas en lugar de Actividades?
  • Libgdx Etiqueta de texto de varias líneas de altura
  • Sincronización de dos ListViews lado a lado de Android
  • Android no puede extender el servicio de mensajería de Firebase
  • ¿Por qué no degradar las clases Java en diferentes sabores de Android?
  • Android: Reproducción de sonido sobre auriculares Bluetooth Sco
  • Procesamiento de energía - dispositivos móviles vs Desktop - 100x diferencia?
  • No se pudo leer la fila 0, col -1 de CursorWindow?
  • ¿MonoDroid vale la pena el esfuerzo?
  • Error sobre el contexto FLAG_ACTIVITY_NEW_TASK
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.