2012-04-15 16 views
7

Estoy escribiendo una aplicación de Android que está dirigida al nivel 15 de la API, pero también quiero mantener la compatibilidad hacia atrás con niveles API más antiguos (min-sdk 7).¿Está bien tener tantos métodos obsoletos en el código compatible con versiones anteriores?

Voy a llegar a esto poniendo condiciones para decidir qué código usar según el nivel API actual (como se muestra a continuación). Supongo que este es un buen enfoque, solo quiero preguntar si está bien tener tantos métodos en desuso (como display.getWidth()), porque hay muchos cambios entre el nivel 8 y 15 de la API. Y si es así, si es un buen uso de @SuppressWarning("deprecation") en este caso?

¿No sería mejor usar múltiples APK, por ejemplo, para los niveles API < = 8 y> = 9? (A pesar de que no es recomendado por developer.android.com

Display display = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    Point screenSize = new Point(); 

    // calculate the width 
    float width; 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { 
     display.getSize(screenSize); 
     width = screenSize.x; 
    } else { 
     width = display.getWidth(); 
    } 

Gracias

Respuesta

9

Usted tiene que hacerse algunas preguntas:.!

  • ¿Fue desaprobado por los niveles de la API que será la ejecución de este código ?
  • Si es así, es una alternativa sugiere o disponibles?

En su caso, getWidth() está en desuso en favor del uso de getSize(Point), que requiere el nivel de API 13. Por lo tanto, antes del nivel de API 13, todo lo que tiene es getWidth(), que en ese momento no estaba en desuso. La razón por la cual se mantienen estos métodos obsoletos es en gran parte teniendo en cuenta la compatibilidad con versiones anteriores (además de evitar que se rompan las aplicaciones de todos los usuarios que dependen de ella).

Para responder a sus preguntas, sí, esto está bien en este caso, y sí, es un buen uso de @SuppressWarning("deprecation").

+0

Apunto al nivel de API 15, por lo que es probable que esté obsoleto para algunas versiones del sistema operativo. También creo que siempre hay una alternativa al código obsoleto (o mejor, estoy usando una API nueva que no está disponible en el antiguo unos, así que tengo que arreglarlo para mantener la compatibilidad). Bueno, ¿está bien tener muchas de estas condiciones para mantener la compatibilidad con versiones anteriores o es una buena idea tener dos APK para ICS (por ejemplo) y para versiones anteriores? –

+1

Está bien, y animado. Si lanza dos versiones de su aplicación, una para ICS, una para pre-ICS, está invitando a un gran dolor de cabeza, ya que tendrá que mantener dos bases de códigos separadas. –

Cuestiones relacionadas