您的位置:首页 > 移动开发 > Android开发

[Android] Android 两次Back键点击退出程序

2016-09-09 22:43 671 查看
【需求分析】

在应用程序中经常会误操作点击返回键退出程序,现在需要连续两次点击返回键才退出程序,否则只是提示

用户当前按下了返回键,再按一次后就退出程序。

【效果展示】



【实现原理】

记录两次Back键按下的时间戳。如果两个时间戳之间的差值在一个设置的阈值范围内(程序中设置为2s)则

退出App,否则弹出一个Toast告知用户当前Back键被按下,再按一次就退出App.

【代码展示】

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

/**
* 功能:两次返回键退出App,第一次按下返回键时弹出Toast提示用户是否退出程序
* 作者:lexli
* 博客:http://blog.csdn.net/csdn_lexli/article
*/
public class MainActivity extends AppCompatActivity {

private long lastPressTime = 0l;
private int timeExpired = 2000;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

/**
* 两次返回键退出App.实现的核心要素:
* 原理:第一次按下返回键时,弹出提示Toast同时记录当时的时间。
* 如果下一次返回键时间与本次间隔在2s内,则退出App,否则
* 继续两次时间间隔检测
* 注意:这里是完全复写onBackPressed方法,不要调用父类的onBackPressed
* 否则按一下返回键就退出了
*/
@Override
public void onBackPressed() {
if (System.currentTimeMillis() - lastPressTime > timeExpired) {
// 两次间隔在expiredTime外,则弹出Toasr提示用户“再按一次退出程序”
Toast.makeText(MainActivity.this, "再按一次退出本程序", Toast.LENGTH_SHORT).show();
lastPressTime = System.currentTimeMillis();
} else {
// 两次间隔在ExpiredTime内,直接退出程序
finish();
}

// 注意,这里不需要调用父类的onBackPressed方法了,否则每次运行到这调用父类的onBackPressed退出程序了
//super.onBackPressed();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息