主要的目的是按后退键的时候,让程序能够退出。?
实现起来的思路:?
1.捕获后退键被按了这个事件。?
???????
Java代码?
- @Override??
- ????????public?boolean?onKeyDown(int?keyCode,?KeyEvent?event)??{??
- ????????????if?(keyCode?==?KeyEvent.KEYCODE_BACK?&&?event.getRepeatCount()?==?0)?{???
- ????????????//按下的如果是BACK,同时没有重复??
- ??????????????//DO?SOMETHING??????
- ????????????}??
- ??
- ????????????return?super.onKeyDown(keyCode,?event);??
- ????????}???
2.在后退键被按的事件里退出程序?
这里也有两种方式:直接退出程序,或者退出到主屏幕。?
1)退出程序的方法有两种:?
Java代码?
- android.os.Process.killProcess(android.os.Process.myPid());???
Java代码?
- System.exit(0);???
我试了这两种方法,但是奇怪的是,在1.5模拟器下,程序确实被KILL了,但是马上Android又重新启动了程序。?
另外还有一种方式,比较友好,可以释放资源,我觉得可行,就是实现起来麻烦一点,需要逐级退出,重写onResume()方法:?
Java代码?
- ?@Override??
- protected?void?onResume()?{??
- ????super.onResume();??
- ????if(mExiting){??
- ????????finish();??
- ????}??
- }??
2)退出到主屏幕?
这个比较简单,新建一个主屏幕的Intent就可以。?
Java代码?
- Intent?home?=?new?Intent(Intent.ACTION_MAIN);???
- ????home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);???
- ????home.addCategory(Intent.CATEGORY_HOME);???
- ????startActivity(home);??
我最后采用了按后退键回到主屏幕的方式,实现代码如下:?
Java代码?
- ????
- @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);??
- ?} ?