标签:
====================实现原理========================
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