博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

按后退键退出Android程序

Posted on 2011-01-24 14:31  追梦人2017  阅读(16085)  评论(6编辑  收藏  举报
主要的目的是按后退键的时候,让程序能够退出。 

实现起来的思路: 

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.  }