• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
宝宝儿
博客园    首页    新随笔    联系   管理    订阅  订阅

Android_按两次返回键退出程序和长按返回键退出程序

以上两个功能主要是参考了一下博客的:

http://blog.csdn.net/chenshijun0101/article/details/7682210

http://blog.csdn.net/winlinking/article/details/6596455

 

方法一:

按两次返回键退出程序:

Activity:

复制代码
public class Back2FinishAppActivity extends Activity {  
    Exit exit = new Exit();  
  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
    }  
      
      
      
    @Override    
      public boolean onKeyDown(int keyCode, KeyEvent event) {    
        if (keyCode == KeyEvent.KEYCODE_BACK) {    
                pressAgainExit();    
                return true;    
                }    
      
          return super.onKeyDown(keyCode, event);    
      }    
        
    private void pressAgainExit() {    
            if (exit.isExit()) {    
                finish();    
            } else {    
                Toast.makeText(getApplicationContext(), "再按一次退出程序",    
                        Toast.LENGTH_SHORT).show();    
                exit.doExitInOneSecond();    
            }    
        }    
}  
复制代码

辅助类Exit.java

复制代码
private boolean isExit = false;  
private Runnable task = new Runnable() {  
    @Override  
    public void run() {  
        isExit = false;  
    }  
};  
  
public void doExitInOneSecond() {  
    isExit = true;  
    HandlerThread thread = new HandlerThread("doTask");  
    thread.start();  
    new Handler(thread.getLooper()).postDelayed(task, 1000);  
}  
  
public boolean isExit() {  
    return isExit;  
}  
  
public void setExit(boolean isExit) {  
    this.isExit = isExit;  
}  
复制代码

 

 

长按返回键退出程序:

复制代码
public boolean dispatchKeyEvent(KeyEvent event)    
    {    
        int keyCode=event.getKeyCode();    
        switch(keyCode)    
        {    
            case KeyEvent.KEYCODE_BACK: {    
                 if(event.isLongPress())    
                 {    
                     this.stopService(intent);    
                     System.exit(0);    
                     return true;    
                 }else    
                 {    
                     return false;    
      
                 }    
            }      
        }    
        return super.dispatchKeyEvent(event);    
            
    }  
复制代码

 

方法二:

复制代码
private long exitTime = 0; 

 

@Override 

public boolean onKeyDown(int keyCode, KeyEvent event) { 

if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ 

if((System.currentTimeMillis()-exitTime) > 2000){ 

Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); 

exitTime = System.currentTimeMillis(); 

} else { 

finish(); 

System.exit(0); 

} 

return true; 

} 

return super.onKeyDown(keyCode, event); 

} 
复制代码
posted @ 2016-05-02 20:30  宝宝儿  阅读(233)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3