¿Cómo puedo desactivar el evento onCreate cuando cambio mi dispositivo de orientación vertical? Porque cuando se inicia la aplicación obtendrá gran parte de sus datos de Internet, y será malo descargar estos datos cada vez que el usuario encienda su dispositivo.Cómo deshabilitar onCreate action cuando se cambiará la orientación?
Respuesta
En etiqueta de actividad de escritura manifiesta
androide: configChanges = "orientación | ScreenSize"
ejemplo:
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize">
En manifest.xml agrega android: configChanges = "orientation" para la actividad.
Usar un cheque bandera en onCreate. Hacer flag = true en el momento de la inicialización/declaración añadir androide: configChanges = "orientación" en ur archivo de manifiesto
En ur archivo Java anular el onConfigurationChanged método y hacer que la bandera como falsa.
Después de hacerlo, se llamará a onCreate pero no se invocará el código mencionado en si. Mueve el código ur dentro del si condición.
intente utilizar esto.
static boolean flag = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(flag)
Log.d("ONCREATE", "flag is true");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
Log.d("ONCONFIGCHANGE", "CALLED");
flag = false;
super.onConfigurationChanged(newConfig);
}
enfoque alternativo es el uso de onSaveInstanceState
método para guardar los datos no persistentes en un haz. El estado debe restaurarse en onRestoreInstanceState
o en onCreate
. En onCreate
debe analizar el parámetro savedInstanceState
y si no es nulo, debe restaurar el estado previamente guardado.
Esta solución es, de lejos, la que mejor funciona. en el archivo de manifiesto añadir
<activity
android:configChanges="keyboardHidden|orientation|screenSize"
android:name="your activity name"
android:label="@string/app_name"
android:screenOrientation="landscape">
</activity
Y en su clase de actividad añadir el siguiente código
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
//do your stuff here
//
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
//do your stuff here
}
}
para C# Xamarin tengo esta solución:
using System.Collections.Concurrent;
public static class ObjectExchanger
{
private static ConcurrentDictionary<string, object> ObjectList = new ConcurrentDictionary<string, object>();
/// <summary>
/// Add key and object. Do not add the same key twice.
/// </summary>
/// <param name="key"></param>
/// <param name="obj"></param>
public static void Add(string key, object obj)
{
ObjectList.GetOrAdd(key, obj);
}
/// <summary>
/// Get object via key. Do net Get twice. Key/object will remove after get it once.
/// </summary>
/// <param name="key"></param>
public static object Get(string key)
{
object obj = null;
ObjectList.TryRemove(key, out obj);
return obj;
}
}
Se puede utilizar en en OnCreate Método para hacer una copia de seguridad y restaurar sus datos para la actividad después de la rotación.
- 1. cambiar la orientación sin onCreate call
- 2. ¿Se llama a onCreate cuando se crea un objeto Activity?
- 3. Cómo deshabilitar Javascript cuando se usa Selenium?
- 4. Actividad de Android reiniciada cuando la orientación cambia
- 5. Actividad OnCreate llamada cuando el teléfono se va a dormir
- 6. Ocultar una UITabBar cuando la orientación cambie
- 7. onCreate no llamado cuando la pantalla gira - Android
- 8. public onCreate(), o protected onCreate()?
- 9. iOS 6 - Cómo ejecutar código personalizado cuando cambia la orientación
- 10. PhoneGap aplicación se bloquea cuando se conmuta la orientación incluso con AndroidManifest cambia
- 11. ¿Prevenir cambio de orientación de Live Wallpaper cuando se abre una aplicación y se cambia la orientación?
- 12. ¿Cómo manejo la orientación de la pantalla cuando se abre un cuadro de diálogo?
- 13. matriz cambiará al siguiente elemento
- 14. ¿Cuándo se llama al método onCreate() de la aplicación?
- 15. El scherlock de barra de acciones no se actualiza cuando se cambia la orientación
- 16. NullPointerException en onCreate() cuando se usa findViewById - setContentView se usa antes?
- 17. Obtenga la intención de onCreate en Android
- 18. Cómo determinar la orientación absoluta
- 19. Cómo deshabilitar Android LocationListener cuando la aplicación está cerrada
- 20. Android Action Bar Tab con vista de desplazamiento hecha vista duplicada después del cambio de orientación
- 21. Cómo deshabilitar la imagen nula en la columna de imagen DataGridView cuando se rellena desde DataTable
- 22. Cómo deshabilitar la indexación de directorios desde apache2 cuando se va a la raíz del servidor?
- 23. ¿Cuál es la diferencia entre form action = "" y form action = "."?
- 24. No se está llamando al cargador cuando cambia la orientación de la pantalla
- 25. Ejecutando 'mv A B': ¿Se cambiará el 'inodo'?
- 26. Android onCreate onResume
- 27. iPad orientación de lanzamiento cuando está plana en la superficie
- 28. Cómo deshabilitar la acción de envío
- 29. ¿Puede explicar onCreate and Bundles?
- 30. ¿Cómo obtener la orientación actual de la vista del iPhone o la última orientación del dispositivo?
Precaución: a partir de Android 3.2 (nivel de API 13), el "tamaño de pantalla" también cambia cuando el dispositivo cambia entre orientación vertical y horizontal. Por lo tanto, si desea evitar que se reinicie el tiempo de ejecución debido al cambio de orientación cuando se desarrolla para API nivel 13 o superior (según lo declarado por los atributos minSdkVersion y targetSdkVersion), debe incluir el valor "screenSize" además del valor de "orientación". Es decir, debe descartar android: configChanges = "orientation | screenSize". (http://developer.android.com/guide/topics/resources/runtime-changes.html) – Rubix
Información interesante Rubix. +1 –
Rubix: ¿Qué significa la orientación y el valor de tamaño de pantalla aquí? La pregunta es solo por mi curiosidad. – vgokul129