作者:程序员小冰
微博:http://weibo.com/mcxiaobing
【Android】双击返回键,退出android应用程序 双击两次退出程序提示功能 三种实现方法
最下面有项目源代码下载地址。当然,还是希望大家掌握这个小功能。
package davidsystemapp.com.davidsystemapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
/**
* @author :程序员小冰
*
* @新浪微博 :http://weibo.com/mcxiaobing
*
*
*/
public class MainActivity extends AppCompatActivity {
private Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toast = Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT);
}
/**
* 双击两次退出程序提示 第一种方式
*/
/* boolean isState = true;//设置双击退出的变量
public void onBackPressed() {
if (isState) { //isState初始值为true
isState = false;
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
isState = true;
}
}, 2000);
} else {
finish();
}
}*/
/**
* 双击两次退出程序提示 第二种方式
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
quitToast();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void quitToast() {
if (null == toast.getView().getParent()) {
toast.show();
} else {
finish();
// System.exit(0);
}
}
/**
* 双击两次退出程序提示 第三种方式
* <p/>
* https://github.com
*/
// 1.on..2.开发者实现 3.系统调用
// 条件 :点击物理键盘或者软件盘
// int keyCode按键编号
/* long[] times = new long[2];
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
// ① 找出回调函数
// ② 点击时间 time1 time2
// ③ 时间 间隔 <2000 退出
// ④ 提示再点一次
times[0] = times[1];
times[1] = System.currentTimeMillis();
if (times[1] - times[0] < 2000) {
finish();
} else {
Toast.makeText(getBaseContext(), "再点一次退出", Toast.LENGTH_SHORT).show();
}
return true;// 消费事件
}
return super.onKeyDown(keyCode, event);
}*/
}