当前位置: 代码迷 >> Android >> 按退后键退出Android程序
  详细解决方案

按退后键退出Android程序

热度:72   发布时间:2016-05-01 19:58:51.0
按后退键退出Android程序

主要的目的是按后退键的时候,让程序能够退出。?

实现起来的思路:?

1.捕获后退键被按了这个事件。?

???????

Java代码?
  1. @Override??
  2. ????????public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)??{??
  3. ????????????if?(keyCode?==?KeyEvent.KEYCODE_BACK?&&?event.getRepeatCount()?==?0)?{???
  4. ????????????//按下的如果是BACK,同时没有重复??
  5. ??????????????//DO?SOMETHING??????
  6. ????????????}??
  7. ??
  8. ????????????return?super.onKeyDown(keyCode,?event);??
  9. ????????}???


2.在后退键被按的事件里退出程序?

这里也有两种方式:直接退出程序,或者退出到主屏幕。?

1)退出程序的方法有两种:?

Java代码?
  1. android.os.Process.killProcess(android.os.Process.myPid());???



Java代码?
  1. System.exit(0);???



我试了这两种方法,但是奇怪的是,在1.5模拟器下,程序确实被KILL了,但是马上Android又重新启动了程序。?

另外还有一种方式,比较友好,可以释放资源,我觉得可行,就是实现起来麻烦一点,需要逐级退出,重写onResume()方法:?

Java代码?
  1. ?@Override??
  2. protected?void?onResume()?{??
  3. ????super.onResume();??
  4. ????if(mExiting){??
  5. ????????finish();??
  6. ????}??
  7. }??



2)退出到主屏幕?
这个比较简单,新建一个主屏幕的Intent就可以。?

Java代码?
  1. Intent?home?=?new?Intent(Intent.ACTION_MAIN);???
  2. ????home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);???
  3. ????home.addCategory(Intent.CATEGORY_HOME);???
  4. ????startActivity(home);??





我最后采用了按后退键回到主屏幕的方式,实现代码如下:?



Java代码?
  1. ????
  2. @Override??
  3. ?public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)?{??
  4. ??if?(keyCode?==?KeyEvent.KEYCODE_BACK?&&?event.getRepeatCount()?==?0)?{?//?按下的如果是BACK,同时没有重复??
  5. ???Intent?home?=?new?Intent(Intent.ACTION_MAIN);??
  6. ???home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);??
  7. ???home.addCategory(Intent.CATEGORY_HOME);??
  8. ???startActivity(home);??
  9. ??}??
  10. ??return?super.onKeyDown(keyCode,?event);??
  11. ?} ?
  相关解决方案