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

{转}Android点击两次Back键退出当前程序

2017-11-23 22:38 405 查看


实现原理:onKeyDown()会捕获当前点击事件,如果当前keyCode等于BACK事件值就会执行ToQuitTheApp()方法。在ToQuitTheApp()方法中,首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在3000毫秒(3秒)后发出一个消息,在Handler中接收到消息后将isExit值还原成false。如果在发送消息间隔的3秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出程序的方法。

主要代码:

package com.yc.toquitapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.widget.Toast;

public class MainActivity extends Activity {

private boolean isExit = false;

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

// ClickTwiceBackToQuit

}

// 重写Activity中onKeyDown()方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {// 当keyCode等于退出事件值时
ToQuitTheApp();
return false;
} else {
return super.onKeyDown(keyCode, event);
}
}

//封装ToQuitTheApp方法
private void ToQuitTheApp() {
if (isExit) {
// ACTION_MAIN with category CATEGORY_HOME 启动主屏幕
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
System.exit(0);// 使虚拟机停止运行并退出程序
} else {
isExit = true;
Toast.makeText(MainActivity.this, "再按一次退出APP", Toast.LENGTH_SHORT).show();
mHandler.sendEmptyMessageDelayed(0, 3000);// 3秒后发送消息
}
}

//创建Handler对象,用来处理消息
Handler mHandler = new Handler() {

@Override
public void handleMessage(Message msg) {//处理消息
// TODO Auto-generated method stub
super.handleMessage(msg);
isExit = false;
}
};
}


原文:https://www.cnblogs.com/yc-755909659/archive/2013/03/14/2959099.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android