在很多应用中都有这种做法,连续点击两次才退出程序,目的是为了防止用户不小心点击到了返回键而退出程序了,添加了一次用户确认的过程。
其实做法很简单,只需要做一个延时的消息处理就可以了。
首先在我们在一个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,在两秒内在点一次程序会退出。