双击退出程序的原理无非就是设置一个退出标识(询问是否退出),如果改变了这个标识(确认退出),则再次点击时立马退出,如果短时间内没有退出,则延时重置这个标识(不退出)。
====================Alarm 机制实现=========================
AlarmActivity.java
public class AlarmActivity extends Activity { private static boolean quit = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 重写 Back 键方法 */ public void onBackPressed() { if (quit == false) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); alarmAtTime(); //调用计时器 quit = true; //设置退出标识 } else { super.onBackPressed(); quit = false; this.finish(); //退出当前Activity } } /** * Alarm 机制计时器 */ private void alarmAtTime() { Intent intent = new Intent(this, AlarmReceiver.class); //启动接收器 PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0); //设置延迟启动 AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); long delay = System.currentTimeMillis() + 2000; //取得当前时间,并延迟2秒 manager.set(AlarmManager.RTC_WAKEUP, delay, pi); //延迟启动广播接收器 } /** * BroadcastReceiver 广播接收器 */ public static class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { quit = false; //重置退出标识 } } }