studio por metodo finish con completo cerrar boton atras app aplicaciones aplicacion android exit back-button

android - por - onbackpressed



Android presionando el botón Atrás debe salir de la aplicación (10)

¿Por qué el usuario no debería presionar el botón de inicio? Luego pueden salir de su aplicación de cualquiera de sus actividades, no solo de una específica.

Si le preocupa que su aplicación continúe haciendo algo en segundo plano. Asegúrese de detenerlo en los comandos onPause y onStop relevantes (que se activarán cuando el usuario presione Inicio).

Si su problema es que desea que la próxima vez que el usuario haga clic en su aplicación para que comience desde el principio, le recomiendo que coloque algún tipo de elemento de menú o botón de IU en la pantalla que lleve al usuario a la actividad inicial de su aplicación Como el pájaro de twitter en la aplicación oficial de Twitter, etc.

Cuando un usuario presiona el botón Atrás en un intento, la aplicación debe salir. ¿Cómo puedo garantizar que la aplicación se cierra cuando se presiona el botón Atrás?


Antes que nada, Android no recomienda que hagas eso en el botón Atrás, sino que usas los métodos del ciclo de vida provistos. El botón Atrás no debe destruir la Actividad.

Las actividades se agregan a la pila, accesible desde la vista general (botón cuadrado desde que introdujeron el diseño del material en 5.0) cuando se presiona el botón Atrás en la última actividad restante de la pila de la interfaz de usuario. Si el usuario desea cerrar su aplicación, debe deslizarla hacia afuera (cerrarla) desde el menú de Información general.

Su aplicación es responsable de detener las tareas en segundo plano y los trabajos que no desea ejecutar, en los métodos de ciclo de vida onPause (), onStop () y onDestroy (). Lea más sobre los ciclos de vida y su implementación adecuada aquí: http://developer.android.com/training/basics/activity-lifecycle/stopping.html

Pero para responder a su pregunta, puede hacer hacks para implementar el comportamiento exacto que desee, pero como dije, no se recomienda :

@Override public void onBackPressed() { // make sure you have this outcommented // super.onBackPressed(); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }


En mi actividad de inicio anulo el "onBackPressed" a:

@Override public void onBackPressed() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }

entonces, si el usuario está en la actividad de inicio y presiona hacia atrás, va a la pantalla de inicio.

Tomé el código de Ir a la pantalla de inicio mediante programación


La aplicación solo saldrá si no hay actividades en la pila de respaldo. ASÍ, agregue esta línea en su manifiesto android: noHistory = "true" a todas las actividades que no desea volver a apilar. Y luego, para cerrar la aplicación, llame al final () en OnBackPressed

<activity android:name=".activities.DemoActivity" android:screenOrientation="portrait" **android:noHistory="true"** />


Modifiqué la respuesta de @Vlad_Spays para que el botón de retroceso funcione normalmente a menos que sea el último elemento de la pila, y luego avisa al usuario antes de salir de la aplicación.

@Override public void onBackPressed(){ if (isTaskRoot()){ if (backButtonCount >= 1){ Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }else{ Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show(); backButtonCount++; } }else{ super.onBackPressed(); } }


Para salir de una aplicación de Android, simplemente use. en su actividad principal, o puede usar el archivo de manifiesto de Android para establecer

android:noHistory="true"


Una mejor experiencia de usuario:

/** * Back button listener. * Will close the application if the back button pressed twice. */ @Override public void onBackPressed() { if(backButtonCount >= 1) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show(); backButtonCount++; } }


Use el método onBackPressed

@Override public void onBackPressed() { finish(); super.onBackPressed(); }

Esto resolverá tu problema.


termine su current_activity usando el método finish() onBack method of your current_activity

y luego agregue las siguientes líneas en onDesyy of the current_activity para quitar la fuerza cerrar

@Override public void onDestroy() { android.os.Process.killProcess(android.os.Process.myPid()); super.onDestroy(); }


Inmediatamente después de comenzar una nueva actividad, utilizando startActivity , asegúrese de llamar a finish() para que la actividad actual no se apile detrás de la nueva.

EDITAR con respecto a su comentario:

Lo que sugiere no es particularmente cómo funciona el flujo de aplicaciones de Android, y cómo los usuarios esperan que funcione. Lo que puede hacer si realmente lo desea es asegurarse de que cada startActivity conduzca a esa actividad, sea un startActivityForResult y tenga un oyente onActivityResult que compruebe si hay un código de salida y si las burbujas vuelven. Puedes leer más sobre eso aquí . Básicamente, use setResult antes de finalizar una actividad, establezca un código de salida de su elección, y si su actividad padre recibe ese código de salida, setResult en esa actividad, y termínelo, etc.