2011-07-30 12 views
14

¿Alguien conoce los motivos del diseño de Android para destruir y volver a crear actividades en un simple cambio de orientación?¿Por qué Android recrea actividades en Orientation Change

¿No debería permitir que la actividad simplemente se vuelva a dibujar (si así lo desea) sea un diseño mejor, más simple y más práctico?

Por cierto, soy muy consciente de cómo deshabilitar mi aplicación de los efectos del cambio de orientación, pero lo que realmente no consigo es la razón de este diseño en Android

+1

Esta es una pregunta de programación. Android Enthusiasts es más para los usuarios de Android. Moveré tu pregunta a StackOverflow. –

+0

Al principio estaba pensando en publicarlo aquí, pero no estaba seguro de si pertenecía. Gracias por aclarar eso :) –

Respuesta

1

No saber exactamente por qué, yo creo que es porque tiene que reconstruir la actividad en la pantalla.

OnCreate tiene una variable "Bundle SavedInstanceState". Puede guardar los datos allí para una recarga más rápida.

package com.android.hello; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mTextView = new TextView(this); 

     if (savedInstanceState == null) { 
      mTextView.setText("Welcome to HelloAndroid!"); 
     } else { 
      mTextView.setText("Welcome back."); 
     } 

     setContentView(mTextView); 
    } 

    private TextView mTextView = null; 
} 
8

En docs, http://developer.android.com/guide/topics/resources/runtime-changes.html

Afirma que,

El comportamiento de reinicio está diseñado para ayudar a su aplicación adaptarse a las nuevas configuraciones volviendo a cargar automáticamente su aplicación con recursos alternativos.

+4

Bueno, realmente no "ayuda" cuando causa tantos otros problemas como los efectos secundarios (por ejemplo, AsyncTasks colgantes, los diálogos que no continúan a la perfección son algunos de los que me he encontrado hasta ahora). Cuando todo lo que realmente se requiere es un redibujado/diseño de los componentes actuales en la pantalla, ¿hay alguna manera sencilla de garantizar esto (sin tener que destruir ni recrear la actividad)? –

+5

Se necesita más de un redibujado. Android le ofrece la posibilidad de tener diferentes recursos (imágenes, cuerdas, temas, estilos, diseños, etc.) para las 2 orientaciones de pantalla. Recargar estos manualmente sería mucho más trabajo que manejar diálogos y tareas asíncronas. –

+2

Hmmm ... ¿Está destruyendo y recreando una actividad realmente mucho más 'liviana' que permitiendo que la aplicación vuelva a cargar los recursos adicionales que necesita? –

1

Esto es bastante simple. Android destruye y recrea una actividad en los cambios de orientación para que usted (el desarrollador) tenga la opción de seguir usando el diseño anterior o usar e implementar otro.

+1

Tiene razón, pero la razón es completamente incorrecta _en mi opinión_. Los documentos informan sobre la destrucción: '[..] puede ocurrir ya sea porque la actividad está terminando [..] o porque el sistema está destruyendo temporalmente esta instancia de la actividad para ahorrar espacio. Esto no excluye los cambios de orientación, pero parece extraño que funcione así ... Hasta ahora, la única forma en que he podido desencadenar un 'natural' 'destroy' es girando la pantalla. Hacer una 'pausa' seguida de un 'curriculum vitae' me parece más lógico. Además, 'resume 'es un nombre inapropiado, pero aparte. – pauluss86

Cuestiones relacionadas