Tengo una aplicación en la que en la página de inicio he botones para la navegación a través de la aplicación.

En esa página que tiene un botón «SALIR» que cuando se pulsa debe llevar al usuario a la pantalla de inicio del teléfono donde el icono de aplicación.

¿Cómo puedo hacer eso?

InformationsquelleAutor poojan9118 | 2010-07-12

18 Comentarios

  1. 321

    Android del diseño no está a favor de salir de una aplicación, por elección propia, sino que gestiona el sistema operativo. Usted puede traer a la Casa de la aplicación por su correspondiente Intención:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    • :Muchas gracias..
    • Usted puede incluso utilizar.. «moveTaskToBack(true);»
    • Gracias por la sugerencia, es muy útil
    • gran cosa funciona prefecto!!
    • se dealocate todos los recursos? Porque cuando salga de la aplicación de esta forma y después de algún tiempo me haga clic en el icono de la aplicación de nuevo. Empieza desde donde lo dejé. Esto significa que la aplicación se sigue ejecutando en segundo plano.
    • último funciona a la perfección..
    • Gracias funcionó muy fina +1 para que. También por qué el sistema.exit(0) no funciona?
    • Actividad.finish();
    • Esto no puede ser eliminado de los últimos de la lista de aplicaciones
    • Esto mantiene su aplicación en segundo plano, por lo que no se salga de la aplicación.
    • sí, exactamente, estoy totalmente de acuerdo con usted
    • Esta respuesta se acaba de hacer la pantalla de inicio aparecen y no salir/cerrar la aplicación completamente como el OP quiere.
    • Esto será de utilidad para usted: moveTaskToBack(true); android.os.Proceso.killProcess(android.os.Proceso.myPid()); System.exit(1);
    • Esto es problemático, con fragmentos para mí.
    • que funcionaría sólo si usted tiene una actividad en la aplicación. Simplemente cierra la actividad actual.
    • Gracias, a mí me funciona y se cierra la app en segunda actividad.
    • funciona como un encanto…gracias
    • tener problemas en la prueba más

  2. 72

    Puede ser que usted puede intentar algo como esto

    Supongamos que en nuestra aplicación, tenemos una serie de actividades(digamos diez) y tenemos que salir directamente de esta actividad. Lo que podemos hacer es, crear una intención y de ir a la raíz de la actividad y el conjunto de la bandera en la intención como

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    también, añadir algunos extras como boolean a la intención

    intent.putExtra("EXIT", true);

    A continuación, en la actividad de la raíz, compruebe el valor de la boolean y de acuerdo a esa llamada finish(), en el onCreate() de la actividad de la raíz

    if (getIntent().getBooleanExtra("EXIT", false)) {
     finish();
    }
    • Simplemente no hacer nada en onCreate para invocar acabado.
    • En mi caso tuve que anular onNewIntent así. Debido a que el intnet.getExtras() sigue siendo nulo.
    • Y este método se reinicie el RootActivity en lugar de reanudación de la pila. Marque aquí para superar este stackoverflow.com/a/26258455/609782
  3. 28
    System.exit(0);

    Es probablemente lo que usted está buscando. Se va a cerrar la aplicación, y llevará a la Pantalla de inicio.

    • Que debe ser una minúscula salir?
    • No…copiar y pegar como es
    • debe ser el Sistema.exit(0). Pero no es muy útil de todos modos.
    • se da la excepción en la Pestaña que se ejecutan en OS 3.0, y la excepción no puede ser almacenado en caché.
    • Sistema.exit(0) no debe ser utilizado según lo aconsejado por el core Android equipo.
    • Creo que este es el mejor enfoque para circunstancias excepcionales. Decir de una aplicación que necesita de internet y la conexión se rompe un par de actividades en la aplicación. Una alerta de diálogo se puede mostrar (sin botones). El botón Atrás necesita para salir de la aplicación desde el reingreso requiere inicio de sesión/inicialización de nuevo. Sistema.la salida es la única cosa que funciona razonablemente que he encontrado. No estoy seguro acerca de @user1699548 comentario, aunque.
    • Será esto de matar a todos los servicios relacionados con la aplicación así?
    • lo que se debe utilizar entonces?
    • youraActivity.finish()
    • El Uso Del Sistema.exit(0), se omitirá el método onDestroy de una Actividad

  4. 25

    Esto funciona bien para mí.

    Cerca de todas las actividades anteriores de la siguiente manera:

        Intent intent = new Intent(this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("Exit me", true);
        startActivity(intent);
        finish();

    A continuación, en MainActivity onCreate() método de agregar esto a acabado el MainActivity

        setContentView(R.layout.main_layout);
    
        if( getIntent().getBooleanExtra("Exit me", false)){
            finish();
            return; //add this to prevent from doing unnecessary stuffs
        }
    • Esta es una gran funcionaba bien
    • Este! Trabajó para mí , gracias
    • Muchas gracias hombre!!!
    • Esto no funciona para mí. Deja que mi aplicación con nada visible, pero sigue en ejecución de alguna forma. Puedo ver los hilos que cuelgan alrededor y esperando en el depurador de que en realidad nunca va a hacer nada.
  5. 23

    primera finalizar su solicitud utilizando el método finish();

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

    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
    • +1 que funciona como un encanto.
    • nunca lo use, porque se que no hay oportunidad para liberar recursos
    • -1 porque onDestroy se ejecuta cada vez que salgas de la actividad, no sólo cuando se pulsa la tecla.
    • y ¿cómo matar el proceso que no se libre de los recursos del sistema?
    • ¿Por qué es el super.onDestroy() después de la killProcess() ? sería esta línea, incluso se llega?
    • ¿no es esto también matar a todos tus servicios?

  6. 19

    Si desea finalizar una actividad que usted puede simplemente llamar finish().
    Sin embargo, es una mala práctica para tener un botón exit en la pantalla.

    • Lo estoy usando para «necesita actualizar esta app a la última versión», y yo no quiero seguir usándolo. Todavía malas prácticas…?
    • Sí. Como cualquier mala práctica, hay casos donde es su única opción, y utilizarlo porque tratando de hacer algo más sería un contrasentido. El punto de las malas prácticas de la, como contraposición a la ilegal sintaxis, es que está disponible para aquellos pocos casos, pero usted debe intentar su darndest encontrar una mejor manera de hacerlo. En su caso, no hay uno.
  7. 16

    No es recomendable para salir de su Aplicación para Android. Ver este pregunta para obtener más detalles.

    El usuario siempre puede salir de la aplicación mediante el botón de inicio o en la primera actividad a través del botón atrás.

    • tengo concepto después de la lectura de la página. gracias
    • pulsando el botón home nunca salga de la aplicación de android, sino que va en el fondo…
  8. 16

    Algunas Actividades que realmente no desea abrir de nuevo cuando se presiona el botón tales Pantalla de presentación de la Actividad, la Pantalla de Bienvenida de la Actividad, Ventanas de Confirmación. En realidad no necesitas esta en la actividad de la pila. usted puede hacer esto utilizando=> abrir manifest.xml archivo y agregar un atributo

    android:noHistory=»true»

    a estas actividades.

    <activity
        android:name="com.example.shoppingapp.AddNewItems"
        android:label="" 
        android:noHistory="true">
    </activity>

    O

    A veces desea cerrar la aplicación, en cierta pulsación de un botón. Aquí la mejor práctica es abrir la ventana de inicio en lugar de salir de la aplicación. Para que usted necesita para reemplazar onBackPressed() método. generalmente este método de abrir la parte superior de la actividad en la pila.

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

    O

    En la parte de atrás se presiona el botón que desea salir de esa actividad y también usted también no desea agregar esto en la actividad de la pila. llame a finish() método dentro de onBackPressed() método. no va a hacer cerca de toda la aplicación. se va a ir para la actividad anterior en la pila.

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

    (He probado las respuestas anteriores, pero que carece en algunos puntos. Por ejemplo, si usted no hace un return; después de terminar la actividad, el resto de la actividad que se ejecuta el código. También usted necesita para editar onCreate con retorno. Si no funciona super.onCreate() obtendrá un error en tiempo de ejecución)

    Decir tiene MainActivity y ChildActivity.

    Dentro de ChildActivity añadir esto:

    Intent intent = new Intent(ChildActivity.this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("EXIT", true);
    startActivity(intent);
    return true;

    Dentro de MainActivity del onCreate añadir esto:

    @Override
    public void onCreate(Bundle savedInstanceState) {
    
        mContext = getApplicationContext();
    
        super.onCreate(savedInstanceState);
    
        if (getIntent().getBooleanExtra("EXIT", false)) {
            finish();
            return;
        }
        //your current codes
        //your current codes
    }
  10. 3

    U cuando la llamada termine onDestroy() de la actividad será llamado y va a volver a la actividad anterior en la actividad de la pila… Así que.. para salir de no llamar finish();

  11. 3

    Esto es lo que hice:

    SomeActivity.java

     @Override
        public void onBackPressed() {
                Intent newIntent = new Intent(this,QuitAppActivity.class);
                newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(newIntent);
                finish();
        }

    QuitAppActivity.java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          finish();
    }

    Básicamente lo que hicimos, se borran todas las actividades de la pila y el lanzamiento de QuitAppActivity, que va a terminar la tarea.

    • Buen enfoque. No hay necesidad de pasar valores a través de la Intención.
  12. 0

    Añadimos las siguientes líneas después de finish(); en onDestroy():

    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
  13. 0

    Traté de salir de la aplicación utilizando la siguiente fragmento de código, esto funcionó para mí. Espero que esto ayude.
    me hizo pequeña demo con 2 actividades

    primera actividad

    public class MainActivity extends Activity implements OnClickListener{
        private Button secondActivityBtn;
        private SharedPreferences pref;
        private SharedPreferences.Editor editer;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            secondActivityBtn=(Button) findViewById(R.id.SecondActivityBtn);
            secondActivityBtn.setOnClickListener(this);
    
            pref = this.getSharedPreferences("MyPrefsFile", MODE_PRIVATE);
            editer = pref.edit();
    
            if(pref.getInt("exitApp", 0) == 1){
                editer.putInt("exitApp", 0);
                editer.commit();
                finish();
            }
        }
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.SecondActivityBtn:
                Intent intent= new Intent(MainActivity.this, YourAnyActivity.class);
                startActivity(intent);
                break;
            default:
                break;
            }
        }
    }

    su cualquier otra actividad

    public class YourAnyActivity extends Activity implements OnClickListener {
        private Button exitAppBtn;
        private SharedPreferences pref;
        private SharedPreferences.Editor editer;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_any);
    
            exitAppBtn = (Button) findViewById(R.id.exitAppBtn);
            exitAppBtn.setOnClickListener(this);
    
            pref = this.getSharedPreferences("MyPrefsFile", MODE_PRIVATE);
            editer = pref.edit();
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.exitAppBtn:
                Intent main_intent = new Intent(YourAnyActivity.this,
                        MainActivity.class);
                main_intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(main_intent);
                editer.putInt("exitApp",1);
                editer.commit();
                break;
            default:
                break;
            }
        }
    }
  14. 0

    Lo hice con el modo espectador.

    Interfaz del observador

    public interface Observer {
    public void update(Subject subject);
    }

    Base Sujetos

    public class Subject {
    private List<Observer> observers = new ArrayList<Observer>();
    
    public void attach(Observer observer){
        observers.add(observer);
    }
    
    public void detach(Observer observer){
        observers.remove(observer);
    }
    
    protected void notifyObservers(){
        for(Observer observer : observers){
            observer.update(this);
        }
    }
    }

    Niño /a Sujeto implementa el método de salida

    public class ApplicationSubject extends Subject {
    public void exit(){
        notifyObservers();
    }
    }

    MyApplication que su aplicación debe extiende

    public class MyApplication extends Application {
    
    private static ApplicationSubject applicationSubject;
    
    public ApplicationSubject getApplicationSubject() {
                if(applicationSubject == null) applicationSubject = new ApplicationSubject();
        return applicationSubject;
    }

    }

    Base De La Actividad

    public abstract class BaseActivity extends Activity implements Observer {
    
    public MyApplication app;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        app = (MyApplication) this.getApplication();
        app.getApplicationSubject().attach(this);
    }
    
    @Override
    public void finish() {
        //TODO Auto-generated method stub
                app.getApplicationSubject().detach(this);
        super.finish();
    }
    
    /**
     * exit the app
     */
    public void close() {
        app.getApplicationSubject().exit();
    };
    
    @Override
    public void update(Subject subject) {
        //TODO Auto-generated method stub
        this.finish();
    }
    
    }

    vamos a probarlo

    public class ATestActivity extends BaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        close(); //invoke 'close'
    }
    }
  15. 0

    si quieres salir de la aplicación
    poner este código en virtud de su función

    public void yourFunction()
    {
    finishAffinity();   
    moveTaskToBack(true);
    
    }
    
    
    
    //For an instance, if you want to exit an application on double click of a 
    //button,then the following code can be used.
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 2) {
            //do something on back.
            From Android 16+ you can use the following:
    
            finishAffinity();
            moveTaskToBack(true);
        }
    
        return super.onKeyDown(keyCode, event);
    }
  16. 0

    100% funciona bien. este es el código para Salir de su aplicación onClick (Método)

        Button exit = (Button)findViewById(R.id.exitbutton);
    
        exit.setOnClickListener(new View.OnClickListener() {
    
            @Override
    
            public void onClick(View view) {
    
                finish();
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);
                Toast.makeText(getApplicationContext(), "Closed Completely and Safely", Toast.LENGTH_LONG).show();
    
            }
        });
  17. -2

    Si desea salir de la aplicación. A continuación, utilice este código en el interior de su evento de pulsación de botón.
    como:

    public void onBackPressed()
    {
        moveTaskToBack(true);
        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(1);
    }

Dejar respuesta

Please enter your comment!
Please enter your name here