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