Estoy seguro de que lo has visto en mas de una aplicación, es muy sencillo de implementar y te voy a mostrar como funciona
Usaremos la propiedad isShown() de la clase Toast para hacer la comprobación y evitar que salga de la aplicación por error
Nuestro primer paso es añadir un Toast en nuestro Activity
private Toast _exitToast;
e inicializar una instacia en el OnCreate con el mensaje a mostrar, podemos usar el mensaje desde el strings.xml o directamente un string
_exitToast = Toast.makeText(getApplicationContext(), "Push again to exit" , Toast.LENGTH_SHORT);
Nuestro último paso es sobreescribir la implementación de onKeyDown, comprobaremos si el toast se esta viendo en pantalla para poder salir con la proxima pulsación del Back

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
if(_exitToast.getView().isShown())
{
//If it is the first activity it will exit
_return super.onKeyDown(keyCode, event);
}
else
{
_exitToast.show();
}
}
else
return super.onKeyDown(keyCode, event);
return false;
}Código final de nuestro Activity:
package com.parallelcube.example;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
private Toast _exitToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_exitToast = Toast.makeText(getApplicationContext(), "Push again to exit" , Toast.LENGTH_SHORT);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
if(_exitToast.getView().isShown())
{
//si esta en el primer estado sale del programa
return super.onKeyDown(keyCode, event);
}
else
{
_exitToast.show();
}
}
else
return super.onKeyDown(keyCode, event);
return false;
}
}Ahora nuestra aplicación puede salir usando el doble check de seguridad
Tutorial files
Te puede interesar:
Ayudanos con este blog!
En el último año hemos estado dedicando cada vez más tiempo a la creación de tutoriales, en su mayoria sobre desarrollo de videojuegos. Si crees que estos posts te han ayudado de alguna manera o incluso inspirado, por favor considera ayudarnos a mantener este blog con alguna de estas opciones. Gracias por hacerlo posible!








