Cuando un usuario presiona el botón atrás en la intención, la aplicación debe dejar de fumar. ¿Cómo puedo asegurar que la aplicación se cierra cuando se pulsa el botón atrás?

InformationsquelleAutor d-man | 2010-03-01

10 Comentarios

  1. 43

    Inmediatamente después de iniciar una nueva actividad, el uso de startActivity, asegúrese de llamar finish() de modo que la actividad actual no es apiladas detrás de la nueva.

    EDITAR
    Con respecto a tu comentario:

    Lo que usted está sugiriendo no es particularmente cómo la aplicación de android de flujo generalmente funciona, y cómo los usuarios se espera que trabaje. Lo que puede hacer si usted realmente quiere, es asegurarse de que cada startActivity previos a la actividad, es un startActivityForResult y tiene un onActivityResult oyente que busca un código de salida, y las burbujas que se de vuelta. Usted puede leer más sobre esto aquí. Básicamente, el uso de setResult antes de terminar una actividad, para establecer un código de salida de tu elección, y si su actividad principal, que recibe el código de salida, en que actividad, y el acabado que uno, etc…

    • creo que no entiendes el caso, mi pregunta es que cuando el usuario haga clic en específico de una actividad que yo elija presionando botón volver sobre él debe hacer la llamada de salir de la aplicación
    • bien, véase mi edición.
  2. 87

    En mi Casa, puedo reemplazar 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);
     }

    por lo que si el usuario está en la casa, y pulse de nuevo, se va a la pantalla de inicio.

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

    • Excelente, justo lo que necesitaba.
    • Alguien puede describir más en profundidad cómo funciona esto? Si el usuario mantiene pulsando de nuevo el botón y, a continuación, el relanzamiento de la aplicación, no la actividad de la pila de crecer indefinidamente?
    • Excelente, funcionó «como se anuncia» 🙂
    • Hmm, en mi opinión, esta es sólo la mitad de la verdad. Llamar «original» finish() se invoca en la mayoría de los casos onDestroy(). Tu Log está diciendo «Acabado», pero la aplicación no lo es. Pero no tengo una solución mejor. Sensación extraña.
    • tienes razón, puede ser confuso. Olvide de Registro, sólo he eliminado de ella.
  3. 28

    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++;
        }
    }
    • Gran trabajo. Un par de otras cosas que me gustaría añadir es la configuración de una variable miembro para el Brindis.makeText de la llamada (por ejemplo, Tostadas myToast=Toast.makeText()), entonces el uso que en backButtonCount >= 1, llamando .cancelar() en los brindis. Me alargó la duración de pan Tostado.LENGTH_LONG para mis propósitos, porque para la cantidad de texto de la duración pareció corto. Mis usuarios son personas de edad avanzada. También, como es probablemente obvio, backButtonCount es un miembro de la variable se establece en 0 y también se debe establecer a 0 en el interior de su primera instrucción if.
    • También agrego «de android.os.Proceso.killProcess(android.os.Proceso.myPid());» para que mi aplicación se mató y se reinicia si el usuario haga clic en él de nuevo
  4. 2

    Por qué no el usuario pulsa el botón de inicio? Entonces pueden salir de su aplicación de cualquiera de sus actividades, no sólo en uno específico.

    Si usted está preocupado acerca de su solicitud de continuar a hacer algo en el fondo. Asegúrese de parar en la correspondiente onPause y onStop comandos (que se activa cuando el usuario presiona el Hogar).

    Si tu problema es que quieres que la próxima vez que el usuario hace clic en su aplicación para que se inicie de nuevo al principio, yo recomiendo poner algún tipo de elemento de menú o de interfaz de usuario botón en la pantalla que lleva al usuario de vuelta a la partida de la actividad de la aplicación. Como el pajarito de twitter en el twitter oficial de la aplicación, etc.

  5. 2

    La aplicación solo va a salir si no hay actividades en la parte posterior de la pila. PARA añadir esta línea en el archivo de manifiesto android:noHistory=»true» a todas las actividades que usted no quiere volver a estar apilados.Y, a continuación, se cierra la app llamada la finish() en el OnBackPressed

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

    Uso onBackPressedmétodo

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

    Que esto va a resolver el problema.

  7. 1

    Primero de todo, Android no recomendamos hacerlo en el botón atrás, pero en vez de usar los métodos del ciclo de vida proporciona. El botón de atrás no debe destruir la Actividad.

    Actividades que se añade a la pila, accesible desde la vista general (botón cuadrado, ya que introdujo el diseño de Materiales 5.0) cuando se pulsa el botón atrás en el último resto de la Actividad de la interfaz de usuario de la pila. Si el usuario desea cerrar la aplicación, se debe arrastrarlo fuera (cierre) de la Descripción general del menú.

    Su aplicación es responsable para detener cualquier tipo de tareas en segundo plano y trabajos que usted no desea ejecutar, en onPause(), onStop() y onDestroy() métodos del ciclo de vida. Por favor, lea más acerca de los ciclos de vida y su correcta aplicación aquí: http://developer.android.com/training/basics/activity-lifecycle/stopping.html

    Pero para responder a su pregunta, usted puede hacer hacks para implementar el comportamiento exacto que usted desea, pero como ya he dicho, no es recomendable:

    @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);
    }
  8. 1

    A la salida de una aplicación de Android, simplemente uso.
    en su Actividad Principal, o puede utilizar el archivo de manifiesto de Android para establecer

    android:noHistory="true"
  9. 0

    terminar su current_activity utilizando el método finish() onBack method of your current_activity

    y, a continuación, agregar a continuación de las líneas de onDestroy de la current_activity para la Eliminación de la Fuerza de cierre

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

    He modificado @Vlad_Spays respuesta, de modo que el botón atrás actúa normalmente a menos que sea el último elemento de la pila, a continuación, se le pedirá al usuario que 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();
        }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here