按后退键的时候,让程序退出。
实现起来的思路:
1.捕获后退键被按了这个事件。
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK ){ //DO SOMETHING return true; } return false; }
2-1.通过intent返回都主屏幕中
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 按下的如果是BACK,同时没有重复 Intent home = new Intent(Intent.ACTION_MAIN); home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); home.addCategory(Intent.CATEGORY_HOME); startActivity(home); } return super.onKeyDown(keyCode, event); }
2-2.记录所有打开的activity,关闭的时候将所有的activity关闭
使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器专门负责存储新开启的每一个Activity
MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作
public class MyApplication extends Application { private List<Activity> activityList = new LinkedList<Activity>(); private static MyApplication instance; private MyApplication() { } //单例模式中获取唯一的MyApplication实例 public static MyApplication getInstance() { if(null == instance) { instance = new MyApplication(); } return instance; } //添加Activity到容器中 public void addActivity(Activity activity) { activityList.add(activity); } //遍历所有Activity并finish public void exit() { for(Activity activity:activityList) { activity.finish(); } System.exit(0); } }
在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中
MyApplication.getInstance().addActivity(this);
在需要结束所有Activity的时候调用exit方法
MyApplication.getInstance().exit();
引用:
1.http://www.cnblogs.com/yunfei181/archive/2011/01/24/1943128.html
2.http://chaowen0668.iteye.com/blog/1064588