Android 双击 Back 键退出程序
双击退出程序的原理无非就是设置一个退出标识(询问是否退出),如果改变了这个标识(确认退出),则再次点击时立马退出,如果短时间内没有退出,则延时重置这个标识(不退出)。
====================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; //重置退出标识
}
}
}
AlarmActivity.java
AndroidManifest.xml
<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>
AndroidManifest.xml
其实 Alarm 机制用于双击退出任务显得有些大材小用了,Java API 里提供的 Timer 类就能很好的完成这个任务。
Alarm 机制适合那些长期在后台运行的定时任务,并且它具有唤醒CPU的功能,即可保证每次需要执行定时任务的时候都能正常工作。
====================Timer 机制实现============================
private boolean quit = false; //设置退出标识 @Override
public void onBackPressed() {
if (quit == false) { //询问退出程序
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
new Timer(true).schedule(new TimerTask() { //启动定时任务
@Override
public void run() {
quit = false; //重置退出标识
}
}, 2000); //2秒后运行run()方法
quit = true;
} else { //确认退出程序
super.onBackPressed();
finish();
}
}
Android 双击 Back 键退出程序的更多相关文章
- android双击返回键退出程序
今天给大家简单说一下,android双击返回键退出程序. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
- android双击返回键退出程序的实现
/** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-gen ...
- Android应用系列:双击返回键退出程序
前言 有一个很古老的应用技巧,一直被各种大大小小的app用得乐此不疲,那就是双击返回键退出程序.今天就写写它的实现代码,非常简单而且实用. 正文 双击返回键退出程序,一般有两种实现思路,一种是用一个布 ...
- WP8.1应用双击返回键退出程序。
#region 双击退出程序代码 //双击HardwareButtons.BackPressed: //出现退出提示窗口: //“确定”退出,“取消”返回什么也不做: private async vo ...
- Android按返回键退出程序
既然想实现 按两次返回键 退出程序 有两个关键词 一个是 “返回键”,再一个是“退出程序” )先说“退出” 退出相信大家都会 finish(); System.exit(); 为了确保不出现问题,两种 ...
- Android双击Home键返回桌面
转载自:http://blog.csdn.net/dl10210950/article/details/60866407 2中方式,都是监听返回键 一种 1 private long time; /* ...
- Android双击返回按钮退出程序
//双击退出事件 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KE ...
- Android双击返回键退出Activity的两种方法
在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记 ...
- android 双击返回按钮退出程序。
重写 onKeyDown()方法. @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == K ...
随机推荐
- enumerate用法
Return an enumerate object. sequence must be a sequence, an iterator, or some other object which sup ...
- ASP.NET MVC - 探究应用程序文件夹
为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序. 第 2 部分:探究应用程序文件夹. MVC 文件夹 一个典型的 ASP.NET MVC Web 应用程序的文件夹内容如下 ...
- sql 函数 汉字转拼音
GO /****** Object: UserDefinedFunction [dbo].[fn_GetPy] Script Date: 2017/1/4 10:53:49 ******/ SET A ...
- js和jquery如何获取图片真实的宽度和高度
按照插入的图片的尺寸来判断图片是横图还是竖图.然后判断过后给予不同的展示方式,下面为大家介绍下js和jquery如何获取图片真实的宽度和高度 1.什么时候需要获取图片真实的宽度和高度 在做pc网页 ...
- knockoutJS学习笔记05:控制文本和外观绑定
测试数据: function Person(name,age){ var self = this; self.name = ko.observable(name); self.age = ko.obs ...
- .Net配置中心-简介
系统简介 最近做了一个.Net配置中心,本质就是将原本放在各个站点下AppSettings中的配置统一管理,可以实现一次更改,自动更新,这里提供了两个版本, 一个是心跳版,一个是zookeeper版. ...
- 分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
我发布的「正则表达式入门以及高阶教程」,欢迎学习. 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力: 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大 ...
- iOS中多线程常用的知识点
1.pThread 跨平台的多线程技术 , 是IEEE制定的POSIX 表示可移植性操作系统接口的多线程计数,UNIX内核平台 Unix,Linux,Mac(小红帽) (windows上有可移 ...
- 跳转Activity两种方法
摘要:假设从A界面开启另外一个B界面根据是否需要返回数据分为两种方式 一.无需返回数据方式 在A界面中调用startActivity方法进行直接跳转即可 二.需要返回数据方式 1.在A界面中调用sta ...
- mac下需要安装旧 Java SE 6 才能打开程序解决办法
今天我在mac系统下面安装myeclipse2014(myeclipse-pro-2014-GA-offline-installer-macosx.dmg)的时候,发现显示错误: 您需要安装旧 Jav ...