2010-12-27 15 views

Respuesta

5

Un gran profesional en el uso de este enfoque es que requiere muy poco esfuerzo de su parte, y que su aplicación sobrevivirá a los cambios de configuración sin recurrir a fallas.

El pequeño inconveniente es que el uso de recursos específicos de configuración (para orientación horizontal o vertical) no se aplica automáticamente.

En mi (quizás pequeña) experiencia, creo que realmente no vale la pena el esfuerzo de hacer todas las cañerías.

El manejo "adecuado" de estos cambios de configuración requiere una gran cantidad de plomería por su parte, y las cosas se vuelven aún más dramáticas si tiene que admitir diálogos de progreso durante los cambios de orientación de la pantalla.

Aunque la mayoría de las personas optarán por la solución rápida cambiando el manifiesto y configurando su actividad con android: configChanges = "keyboardHidden | orientation", creo que es importante darse cuenta de que hay alternativas a esto.

Requiere más código, pero le da una mejor idea de cómo funciona el sistema en general.

6

Es raro que Google en realidad no hablar más sobre el razonamiento detrás de él, pero en realidad hay tres razones principales que se me ocurre para evitar el uso de este enfoque:

  • En mi experiencia, algunos tipos de vista (en particular, WebViews y MapViews en Android 2.1 o versiones anteriores) pueden comportarse de forma bastante extraña después de que cambie la orientación si no se han recreado (por ejemplo, los botones de zoom mal colocados).
  • Impide el uso de diseños específicos de orientación (consulte la vista de paisaje de la nueva aplicación Market, por ejemplo).
  • Puede evitar que descubras el comportamiento incorrecto de tu aplicación en relación con otros tipos de razones por las que tu actividad podría destruirse y recrearse (por ejemplo, memoria baja u otras muertes normales mientras estás en segundo plano). Es decir, si su actividad puede manejar correctamente un reinicio debido a la rotación, probablemente pueda manejar un reinicio debido a la eliminación de antecedentes. Sin embargo, si omite la rotación de manejo, es posible que no se produzca un reinicio debido a la eliminación de antecedentes en pruebas normales hasta que un usuario con un teléfono anterior con poca memoria ingrese un informe de error.

La última razón es la más importante; especialmente con teléfonos anteriores de baja RAM y con los comportamientos de autoflagelado supuestamente más agresivos en Gingerbread, sus actividades necesitan saber cómo volver a crearse rápidamente después de una destrucción guardando su estado, independientemente del manejo de la orientación. Y una vez que tus actividades puedan manejar ese tipo de destrucción/recreación, probablemente estés listo para que el cambio de rotación mate a todos. Puede ganar algo de velocidad absorbiendo el evento de rotación (ya que no tiene que retroceder en el inflado del diseño y todo eso) pero eso es todo, en ese punto.

Si decide tragar rotaciones, recomiendo siempre usar un emulador o dispositivo con la opción "Destruir actividades inmediatamente" Development.apk marcada, y luego asegurarse de que el cambio de aplicaciones o el respaldo a través de la pila de tareas todavía funcionan correctamente.

En mi experiencia, las rotaciones absorbentes pueden ser una buena opción para una mejor experiencia del usuario, especialmente en actividades con diseños complejos que pueden tardar unos minutos en recrearse, pero realmente debe probar cuidadosamente y con eficacia para asegurarse de que su actividad sigue funcionando incluso sin ignorar la rotación.

+0

Acerca de WebView, es problemático porque si cambia la orientación mientras se carga, se reiniciará la carga. Según lo leí, no puedes restaurar su estado (e incluso está escrito en los documentos) –

Cuestiones relacionadas