安卓开发 按两次返回键退出APP 2个方法
2014-05-19 08:36
330 查看
点击两次再退出,可以避免误点引起退出,也可以提升用户体验。
第一种:利用线程延时实现:
private int mBackKeyPressedTimes = 0;
@Override
public void onBackPressed()
{
if
(mBackKeyPressedTimes == 0) {
Toast.makeText(this,
"再按一次退出程序 ", Toast.LENGTH_SHORT).show();
mBackKeyPressedTimes
= 1;
new
Thread() {
@Override
public
void run() {
try
{
Thread.sleep(2000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
finally {
mBackKeyPressedTimes
= 0;
}
}
}.start();
return;
else{
this.activity.finish();
}
}
super.onBackPressed();
}
第二种:利用计算时间差实现 (个人觉得这种方式较为简单,而且不容易发生异常,代码较为安全)
private long exitTime = 0;
public void ExitApp()
{
if
((System.currentTimeMillis() - exitTime) > 2000)
{
Toast.makeText(this.activity,
"再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime
= System.currentTimeMillis();
}
else
{
this.activity.finish();
}
实现的思路如下:
首先定义一个布尔变量,赋初始值false。然后监听退出按钮,点击退出按钮时,如果该布尔变量值为false,则把这个变量置为true;如果该变量为true,则退出程序。最后定义一个时间任务,2秒执行一次,如果布尔变量为true,2秒内没有点击返回键,则置为false。
这样,在点击第一次退出时,仅仅改变布尔值变量,而不会退出,2秒内进行第二次点击才会退出。如果用户点击了一次,那么2秒之后布尔变量又被置为false,只有2秒内的两次点击才会退出程序。
代码如下:
第一种:利用线程延时实现:
private int mBackKeyPressedTimes = 0;
@Override
public void onBackPressed()
{
if
(mBackKeyPressedTimes == 0) {
Toast.makeText(this,
"再按一次退出程序 ", Toast.LENGTH_SHORT).show();
mBackKeyPressedTimes
= 1;
new
Thread() {
@Override
public
void run() {
try
{
Thread.sleep(2000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
finally {
mBackKeyPressedTimes
= 0;
}
}
}.start();
return;
else{
this.activity.finish();
}
}
super.onBackPressed();
}
第二种:利用计算时间差实现 (个人觉得这种方式较为简单,而且不容易发生异常,代码较为安全)
private long exitTime = 0;
public void ExitApp()
{
if
((System.currentTimeMillis() - exitTime) > 2000)
{
Toast.makeText(this.activity,
"再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime
= System.currentTimeMillis();
}
else
{
this.activity.finish();
}
实现的思路如下:
首先定义一个布尔变量,赋初始值false。然后监听退出按钮,点击退出按钮时,如果该布尔变量值为false,则把这个变量置为true;如果该变量为true,则退出程序。最后定义一个时间任务,2秒执行一次,如果布尔变量为true,2秒内没有点击返回键,则置为false。
这样,在点击第一次退出时,仅仅改变布尔值变量,而不会退出,2秒内进行第二次点击才会退出。如果用户点击了一次,那么2秒之后布尔变量又被置为false,只有2秒内的两次点击才会退出程序。
代码如下:
private static Boolean isQuit = false; Timer timer = new Timer(); @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (isQuit == false) { isQuit = true; Toast.makeText(getBaseContext(), "再按一次退出", Toast.LENGTH_SHORT).show(); TimerTask task = null; task = new TimerTask() { @Override public void run() { isQuit = false; } }; timer.schedule(task, 2000); } else { finish(); System.exit(0); } } return true; }
相关文章推荐
- Android开发实现按两次返回键退出的方法
- 安卓开发按两次返回键退出
- 安卓 点击两次返回键退出程序 两种方法(新手笔记-3)
- 安卓开发,按两次返回键退出应用
- 点击两次手机的返回键应用退出的思路与方法---android开发
- Android开发中一种两次点击返回键退出应用的方法
- Android开发之点击两次Back键退出App
- android开发:退出程序(对话框、两次返回键退出)
- Android开发实现点击两次返回键退出程序
- 按两次返回键退出app
- 安卓实现摁两次返回键退出程序
- Android连续点击两次返回键退出程序的三种实现方法
- 安卓连续按两次返回按钮退出软件
- TabActivity中返回键(退出键)重写方法dispatchKeyEvent (KeyEvent event)执行两次的解决方法
- 在安卓开发中实现退出App时销毁所有Activity
- 安卓开发退出程序的几种方法
- Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法
- 安卓开发之双击返回键退出程序
- 安卓开发中Theme.AppCompat.Light的解决方法
- Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法