activity 的返回按钮
http://www.2cto.com/kf/201210/160251.html
连续点击两次程序就退出程序,这是一个很有趣的程序功能,下来介绍一下我的实现方式(欢迎大家拍砖指点):
1、在Activity中设置一个long型的全局变量 firstTime=0,用来记录第一次按下的时间(单位为毫秒);
2、响应Activity的 onKeyUp事件:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
long secondTime = System.currentTimeMillis();
if (secondTime - firstTime > 800) {//如果两次按键时间间隔大于800毫秒,则不退出
Toast.makeText(MainActivity.this, "再按一次退出程序...",
Toast.LENGTH_SHORT).show();
firstTime = secondTime;//更新firstTime
return true;
} else {
System.exit(0);//否则退出程序
}
}
return super.onKeyUp(keyCode, event);
}
OK了!
http://www.2cto.com/kf/201103/84900.html
在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK )就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。
我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy() 里强制退出应用,或直接杀死进程,具体操作代码如下:
//捕获按下键盘上返回按钮
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
new AlertDialog.Builder(this)
// .setIcon(R.drawable.services)
.setTitle(R.string.prompt)
.setMessage(R.string.quit_msg)
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
})
.setPositiveButton(R.string.confirm,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
finish();
}
}).show();
return true;
} else {
return super.onKeyDown(keyCode, event);
}
}
//彻底退出程序
@Override
protected void onDestroy() {
super.onDestroy();
System.exit(0);
// 或者下面这种方式
// android.os.Process.killProcess(android.os.Process.myPid());
}
http://blog.csdn.net/carterjin/article/details/7677069
正好在网上看到了一个,研究了一下,保存下来吧。
第一步,定义一个变量,用于标识是否退出
- boolean isExit;
第二步,重写Activity中onKeyDown方法
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- exit();
- return false;
- } else {
- return super.onKeyDown(keyCode, event);
- }
- }
第三步,写一个退出方法,名称就是onKeyDown中的exit()
- public void exit(){
- if (!isExit) {
- isExit = true;
- Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
- mHandler.sendEmptyMessageDelayed(0, 2000);
- } else {
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_HOME);
- startActivity(intent);
- System.exit(0);
- }
- }
第四步,根据exit()方法中的的消息,写一个Handler
- Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- super.handleMessage(msg);
- isExit = false;
- }
- };
实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。
在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。
如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出的方法。
activity 的返回按钮的更多相关文章
- Activity详解三 启动activity并返回结果
首先看演示: 1 简介 .如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int ...
- 【Android 复习】:从Activity中返回数据
在实际的应用中,我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递类似,也可以采用上一讲中的四种方式来传递数据,但是一般建议采用Intent对象的方式的来返 ...
- 建立、配置和使用Activity——启动其他Activity并返回结果
Activity还提供了一个startActivityForResult(Intent intent,int requestCode)方法来启动其他Activity.该方法用于启动指定Activity ...
- Android用户点击返回按钮两次退出整个APP
最近的APP项目有一个需求就是连续点击两次返回按钮,退出整个APP,而不是返回到上一个页面,这个连续是有时间限制的,在我的项目里,我设置成2秒钟,如果两秒之内点击了两次,就代表用户想要退出整个APP, ...
- 【Android】12.3 在当前Activity中获取另一个Activity的返回值
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...
- activity 接回返回值
activity 接回返回值 今天做订单列表显示 点击某一项显示订单详细信息,在详细activity中用户可以选择取消订单(未支付的状态下)当用户取消订单后订单列表也要改变状态,原来最初做法是所加载绑 ...
- Activity详解三 启动activity并返回结果 转载 https://www.cnblogs.com/androidWuYou/p/5886991.html
首先看演示: 1 简介 .如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int ...
- Android中Activity处理返回结果的实现方式
大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信息,则会自动跳转到订单提交界 ...
- navigationController 的返回按钮自定义
1: navigationController 的返回按钮自定义 SecondViewController *secondVC = [SecondViewController new]; ...
随机推荐
- 深入了解三种针对文件(JSON、XML与INI)的配置源
深入了解三种针对文件(JSON.XML与INI)的配置源 物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonCon ...
- javaScript中小数取整,四种方法的比较
1.parseInt:只取整数位例如:parseInt(3.7) 取整结果为:3parseInt(-1.1) 取整结果为:-1 2.Math.floor :向下去整,取大的整数例如:Math.floo ...
- 解决 setOnItemClickListener,setOnScrollListener与setOnTouchListener事件冲突问题
代码案例如下: lvXxsdMore.setOnItemClickListener(xxsdMoreListener); //对listView 注册onclick事件 lvXxsdMore.setO ...
- 子shell的$$
http://blog.csdn.net/firefoxbug/article/details/7426109
- C# 调用FFmpeg 根据图片合成视频
1.项目结构: 2.代码: using System; using System.Collections.Generic; using System.Diagnostics; using System ...
- 【图解ASP.NET MVC运行机制理解-简易版】
很多盆友咨询ASP.NET MVC的机制.网上也有好多.但是都是相当深奥.看的云里雾里的.我今天抽空,整理个简易版本.把处理流程走一遍. 当然,这个只是处理请求的一部分环节.百度的面试题“客户端从浏览 ...
- FVANCOP/ChartNew.js
FVANCOP/ChartNew.js FVANCOP/ChartNew.js
- Spring(二)——IoC
IoC(Inversion of Control)称之为控制反转,指的是在Spring框架的配置文件中声明对象,由框架负责创建对象,这叫做控制反转.实现方式有两种:DI(Dependency Inje ...
- RMAN完整全备份
1.以CATALOG模式连接到目标数据库和恢复目录(如:目标数据库为ORCL) C:\Users\Administrator>RMAN TARGET / CATALOG RMANCT/RMANC ...
- App Store不能下载一直等待中的两种解决办法
1,重启手机,之后确认是否得到改善 2,重启不行,更改WiFi的dns为114.114.114.114或者223.5.5.5 或 223.6.6.6,再重启手机 ps:我是第二种方法