una studio screenorientation rotación rotacion por pasar pantalla otro orientacion name manejando detectar compartir como change celular cambio cambiar app aplicaciones aplicacion android lifecycle

studio - Cómo distinguir entre cambio de orientación y dejar aplicación Android



manejando la rotación de pantalla en android studio (4)

Entiendo que cuando cambia la orientación de la pantalla, se invocan las actividades actuales en Destroy () seguidas por onCreate () para recrear de forma efectiva la actividad. Necesito saber cómo decirme programáticamente si la aplicación se está abandonando o si solo se está cambiando la orientación.

Un método es que la actividad anterior me notifique cuando se está llamando a su método onResume (), esto me permitirá saber que el usuario ha presionado el botón Atrás y que la orientación no se ha modificado.

PD. Estoy buscando una solución más elegante que escuchar un clic en el botón de hardware trasero.

Esto era lo que quería hacer:

Tengo dos pestañas, cuando la actividad se ingresa por primera vez o el usuario ha abandonado la actividad y ahora la está ingresando, se muestra una pestaña determinada según algún criterio.

Cuando la orientación cambie, necesito permanecer en la misma pestaña.


Puede obtener el valor del método Activity.getChangingConfigurations() en su onDestroy llamada onDestroy . Esto arrojará un resultado como ORIENTATION_PORTRAIT , que podría verificar contra su orientación actual .

Tenga en cuenta que los cambios de orientación y cierre de actividades no son las únicas condiciones a considerar aquí: ¿qué hay de volver a la pantalla de inicio, llamadas entrantes y otras aplicaciones que roban el foco, y todos los otros escenarios cuando su actividad ya no está en la parte delantera? de la pila?

La mayoría de las veces no necesitarás hacer esto. Si está tratando de corregir algún problema de estado de la actividad (a menudo se manifiesta como una NullPointerException al rotar la pantalla) al capturar el evento de orientación; revisa el ciclo de vida de la actividad de Android y asegúrate de que no estás tratando de hackear una solución para un error de diseño. Publique su problema original en este sitio si no está seguro.


Use el método isFinishing() .

@Override protected void onDestroy() { super.onDestroy(); if (isFinishing()) { // do stuff } else { //It''s an orientation change. } }


para API lvl> = 11 La actividad tiene un método isChangingConfigurations()


puede usar isChangingConfigurations() Leer de la documentation

Compruebe si esta actividad está en proceso de destrucción para volver a crearla con una nueva configuración. Esto se usa a menudo en onStop () para determinar si el estado necesita limpieza o se pasará a la siguiente instancia de la actividad mediante onRetainNonConfigurationInstance ().

Devuelve Si la actividad se está derribando para volver a crearse con una nueva configuración, devuelve verdadero; else devuelve falso

Explicar de manera simple con el ejemplo

isChangingConfigurations()

es un método usado para verificar si la actividad será destruida para volver a crearse nuevamente (como resultado del cambio en la orientación)

Cómo usarlo ?

si usas api> = 11, entonces no hay problema, pero si usas api <11, entonces debemos manejar este manual de método. Formulo una variable booleana llamada IsconfigChange.

private boolean IsconfigChange ; ... protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IsconfigChange = true ; } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public boolean isChangingConfigurations() { if(android.os.Build.VERSION.SDK_INT >= 11){ Log.i("DEBUG", "Orientation changed api >= 11 "); return super.isChangingConfigurations(); }else { Log.i("DEBUG", "Orientation changed api < 11 "); return IsconfigChange; } } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override protected void onStop() { super.onStop(); if(isChangingConfigurations()){ Log.i("DEBUG", "isChangingConfirgurations OnStop Called"); } else{ Log.i("DEBUG", "OnStop Called"); } }

Veraniego

puede usar isChangingConfigurations en onStop para verificar si la aplicación se detiene para ser destruida o debido a cambios en la orientación.

o puede usar isFinishing verifique mi respuesta here