Android 中点击返回键弹出“在按一次退出程序”的做法

        在很多应用中都有这种做法,连续点击两次才退出程序,目的是为了防止用户不小心点击到了返回键而退出程序了,添加了一次用户确认的过程。

        其实做法很简单,只需要做一个延时的消息处理就可以了。

   首先在我们在一个Activity中添加一个按钮,连续两次点击按钮时退出,连续两次点击返回键时也退出程序。

     

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:gravity="bottom|right" >
 7     
 8 
 9     <Button 
10         android:id="@+id/exit"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:text="退出应用">
14         
15     </Button>
16 </LinearLayout>

    在代码中点击按钮时将标志位置为true,如果在两秒内点击,因为标致位为true,所以会退出应用,同时做一个延时2秒的消息处理,两秒后将标志位还原,就意味着两秒后点击和刚开始点击是一样的效果。

    

 1 package com.alex.test;
 2 
 3 import java.util.Timer;
 4 import java.util.TimerTask;
 5 
 6 import android.app.Activity;
 7 import android.os.Bundle;
 8 import android.view.KeyEvent;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.Toast;
13 
14 public class ExitTest extends Activity implements OnClickListener {
15 
16     private Button mExitBtn;
17     private static boolean isExit = false;
18     
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.exit);
23         initView();
24     }
25     
26     private void initView() {
27         mExitBtn = (Button) findViewById(R.id.exit);
28         mExitBtn.setOnClickListener(this);
29     }
30 
31     @Override
32     public void onClick(View v) {
33         switch (v.getId()) {
34         case R.id.exit:
35             exit();
36             break;
37 
38         default:
39             break;
40         }
41     }
42     
43     private void exit() {
44         if(!isExit) {
45             isExit = true;
46             Toast.makeText(this, "在按一次退出程序", Toast.LENGTH_SHORT).show();
47             new Timer().schedule(new TimerTask() {
48                 
49                 @Override
50                 public void run() {
51                     isExit = false;
52                 }
53             }, 2000);
54         } else {
55             finish();
56         }
57     }
58     
59     @Override
60     public boolean onKeyDown(int keyCode, KeyEvent event) {
61         if(keyCode == KeyEvent.KEYCODE_BACK) {
62             exit();
63         }
64         return false;
65     }
66 }

    点击返回键和点击按钮都会看到在按一次退出程序的toast,在两秒内在点一次程序会退出。

原文地址:https://www.cnblogs.com/shang53880/p/3578752.html