Android 双击 Back 键退出程序(Alarm 机制实现)

====================实现原理========================

1.重写Back键方法
 2.设置退出标识
 3.延时重置标识

====================延时重置========================
 1.继承 BroadcastReceiver (一定要在 Manifest 中注册)
 2.使用 AlarmManager 设置延时启动任务(以毫秒为单位)
 3.定时自动启动 BroadcastReceiver(重置退出标识)

====================活动代码========================

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();
            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;           //重置退出标识
        }
    }
}

一定要在 Manifest 中进行注册

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".AlarmActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".Activity.AlarmActivity$AlarmReceiver"></receiver>
    </application>

用 Alarm 机制实现双击返回其实是比较繁琐的,Alarm 适合于长时间或者需要唤醒CPU时使用,一般情况下使用 Java API 里提供的 Timer 类就能很好的完成定时任务。

时间: 2024-08-14 22:47:44

Android 双击 Back 键退出程序(Alarm 机制实现)的相关文章

android双击返回键退出程序的实现

/** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK) { exitBy2Click(); //调用双击退出函数 } return false; } /** * 双击退出函数 */ private static Boolean isExit =

android双击返回键退出程序

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_BACK) { ExitClick(); } return false; } private static Boolean isExit = false; private void ExitClick() { Timer tExit =

Android 双击返回键退出程序 实现

在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记录按键时间计算时间差实现.现在跟大家分享一下,代码如下,希望对大家有帮助: 第一种:利用线程延时实现: private int mBackKeyPressedTimes = 0; @Override public void onBackPressed() { if (mBackKeyPressedT

Android应用系列:双击返回键退出程序

前言 有一个很古老的应用技巧,一直被各种大大小小的app用得乐此不疲,那就是双击返回键退出程序.今天就写写它的实现代码,非常简单而且实用. 正文 双击返回键退出程序,一般有两种实现思路,一种是用一个布尔值变量来记录按键事件,并通过线程延时来实现效果:另外一种是直接通过记录按键时间计算时间差实现功能,现在就跟大家分享下代码吧.O(∩_∩)O哈哈~ 1.利用线程延时实现 private static boolean mBackKeyPressed = false;//记录是否有首次按键 @Overr

android之双击返回键退出程序

//onKeyBown方法,用于监听物理键 //参数1:按键码即按下的键 //参数2:按键事件的对象,其中包含了触发事件的详细信息,例如事件的状态.类型.发生的时间等. //返回值:返回ture表示已完整处理事件,不用系统继续处理:返回false相反. public boolean onKeyDown(int keyCode,KeyEvent event) { //判断是否点击返回键 if (keyCode == KeyEvent.KEYCODE_BACK) { exitBy2Click();

Android双击返回键退出Activity的方法

第一种:利用线程延时实现: private int mBackKeyPressedTimes = 0; @Override public void onBackPressed() { if (mBackKeyPressedTimes == 0) { Toast.makeText(this, "再按一次退出程序 ", Toast.LENGTH_SHORT).show(); mBackKeyPressedTimes = 1; new Thread() { @Override public

Android双击返回键退出Activity的两种方法

在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记录按键时间计算时间差实现.现在跟大家分享一下,代码如下,希望对大家有帮助: 第一种:利用线程延时实现: private int mBackKeyPressedTimes = 0; @Override public void onBackPressed() { if (mBackKeyPressedT

Android 双击返回键退出应用

今天做应用的双击退出效果,使用了网上建议的方法,但是每次都是点击一次就退出了,所以就没有用大家的方法,下面把自己的方法写出来,做一下记录.代码如下: /** 双击退出程序 */ private long mExitTime; @Override public void onBackPressed() { // TODO Auto-generated method stub // super.onBackPressed(); if ((System.currentTimeMillis() - mE

PhoneGap API 之事件处理_双击返回键退出程序

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery Mobile Web 应用程序</title> <link href="../jquery.mobile-1.3.2.css" rel="stylesheet" type="text/css"/> <scr