Android 中點擊返回鍵彈出「在按一次退出程序」的作法

        在不少應用中都有這種作法,連續點擊兩次才退出程序,目的是爲了防止用戶不當心點擊到了返回鍵而退出程序了,添加了一次用戶確認的過程。java

        其實作法很簡單,只須要作一個延時的消息處理就能夠了。android

   首先在咱們在一個Activity中添加一個按鈕,連續兩次點擊按鈕時退出,連續兩次點擊返回鍵時也退出程序。app

     

 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秒的消息處理,兩秒後將標誌位還原,就意味着兩秒後點擊和剛開始點擊是同樣的效果。ide

    

 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,在兩秒內在點一次程序會退出。this

相關文章
相關標籤/搜索