码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2016-05-01 21:45:10      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:

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

 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 类就能很好的完成定时任务。

 

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

标签:

原文地址:http://www.cnblogs.com/woider/p/5451167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!