点击返回键实现退出程序的两种方法

点击手机的返回键实现程式的退出,一种是以弹框的方式提示也就是dialog的方法,另一种是以Toast的方式提示

首先讲的是对话框的形式提示用户是否退出程序

按手机的返回键其实就是按下事件keydown事件,在一般的Activity下面只要重写OnKeyDown事件就行了,对于主界面是表格布局的就需要监听dispatchKeyEvent方法了,如下:

界面是Tabhost布局的则实现以下方法

1 //按住back鍵,退出系統    
2     @Override
3     public boolean dispatchKeyEvent(KeyEvent event) {
4         if(event.getKeyCode()==KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_DOWN&&event.getRepeatCount()==0){
5             ExitDialog(MainActivity.this).show(); 
6         }
7         return super.dispatchKeyEvent(event);
8     }

一般Activity的则实现OnKeyDown事件,就可以监听了

1     @Override
2     public boolean onKeyDown(int keyCode, KeyEvent event) {
3         // TODO Auto-generated method stub
4         return super.onKeyDown(keyCode, event);
5     }

 

dialog对话框

 1 //弹出退出提示框
 2     private Dialog ExitDialog(Context context){
 3         AlertDialog.Builder dia=new AlertDialog.Builder(context);
 4         dia.setTitle("提示");
 5         dia.setMessage("確定要退出程序嗎?");
 6         dia.setPositiveButton("確定", new DialogInterface.OnClickListener() {
 7             @Override
 8             public void onClick(DialogInterface dialog, int which) {
 9                 android.os.Process.killProcess(android.os.Process.myPid());//退出程序
10             }
11         });
12         dia.setNegativeButton("取消", new DialogInterface.OnClickListener() {
13             @Override
14             public void onClick(DialogInterface dialog, int which) {
15                 System.out.println("取消操作");
16             }
17         });
18         return dia.create();
19     }

 

下面介绍第二种方法,实现程序退出,其实基本原理还是一样的,只不过这种是以时间来判断,当用户按一次返回键,则提示用户再按一次,当用户不继续按的时候过2s就自动取消该事件,

只有按两次的时候,才让程序退出

1 //是否退出
2     private static boolean isexit=false;
3     //定時器
4     private static Timer mytimer=null;

重写onKeyDown事件

 1 @Override
 2     public boolean onKeyDown(int keyCode, KeyEvent event) {
 3         if(keyCode==KeyEvent.KEYCODE_BACK){
 4             if(isexit==false){
 5                 isexit=true;
 6                 if(mytimer!=null){
 7                     mytimer.cancel();//移處任務
 8                 }
 9                 //重新實例化一個定時器
10                 mytimer=new Timer();
11                 TimerTask task=new TimerTask() {
12                     
13                     @Override
14                     public void run() {
15                        isexit=false;
16                     }
17                 };
18                 
19                 Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();//Toast提示用户是否退出程序
20                 //延時2s退出程序
21                 mytimer.schedule(task, 2000);//设置时间
22                 
23             }else{
24                 finish();
25                 System.exit(0);//退出程序
26             }
27             return true;
28         }
29         return super.onKeyDown(keyCode, event);
30     }

 

以上就是按手机返回键退出程序的两种方法,好吧,就写到这了。。

 

posted @ 2013-12-06 19:23  小小缘  阅读(1004)  评论(0编辑  收藏  举报