要实现的效果如图:
代码很简单,复写onKeyDown方法,监听到back键的点击就初始化一个时间变量,并给出一个toast。当接下来一定时间内(我这里取的是1.5秒)再次有点击事件时,退出应用。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
long secondClickBack = System.currentTimeMillis();
if(secondClickBack - firstClickBack >1500){
Toast.makeText(this, "再按一次退出每一天", 0).show();
firstClickBack = secondClickBack;
return true;
}else{
MyApplication.getInstance().exitApp();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
注意上述代码中有个MyApplication.getInstance().exitApp();
执行这个的前提是实现自定义个MyApplication,代码在后面。
我们在每个Activity的onCreate()方法中调用MyApplication.addActivity方法将当前activity保存进去。等要退出应用时调用MyApplication.exitApp方法将所有activity都finish();
MyApplication代码如下:
package com.zsx.base;
import java.util.ArrayList;
import android.app.Activity;
import android.app.Application;
public class MyApplication extends Application {
public static ArrayList<Activity> list;
private static MyApplication myApp = null;
public static MyApplication getInstance(){
if(myApp == null ){
myApp = new MyApplication();
list = new ArrayList<Activity>();
}
return myApp;
}
/**
* 添加activity到数组中
* @param activity
*/
public void addActivity(Activity activity){
list.add(activity);
}
/**
* 退出应用,结束所有activity
*/
public void exitApp(){
for (Activity activity : list) {
activity.finish();
}
}
}