onBackPressed、onKeyDown和onKeyUp这三个事件的区别

首先,来解释一下这三个事件。

onKeyDown:是当某个按键被按下是触发。所以也有人在点击返回键的时候去执行该方法来做判断。(该方法只是android 1.0~ android 2.1)

捕获判断代码:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event)  {

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复

Toast.makeText(ml78.this,"返回键Back键测试",1).show();

return true;

}

return super.onKeyDown(keyCode, event);

}


onKeyUp:这个方法是当某个按键被按下后,抬起的时候执行,其实跟onKeyDown没什么差别

onBackPressed:在android 2.0开始多出了关于返回键的单独的事件方法,可以在该方法里面执行当点击返回键的时候做什么...所以,后期都是用这个方法比较多。

如果要考虑版本兼容的话,代码可这么写:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// 是否触发按键为back键

if (keyCode == KeyEvent.KEYCODE_BACK) {

onBackPressed();

return true;

} else {// 如果不是back键正常响应

return super.onKeyDown(keyCode, event);

}

}

点击两次返回键退出,防止误操作


//退出时间

privatelongcurrentBackPressedTime= 0;

//退出间隔

privatestaticfinalintBACK_PRESSED_INTERVAL= 2000;

//重写onBackPressed()方法,继承自退出的方法

@Override

publicvoidonBackPressed() {

//判断时间间隔

if(System.currentTimeMillis()-currentBackPressedTime>BACK_PRESSED_INTERVAL) {

currentBackPressedTime= System.currentTimeMillis();

Toast.makeText(this,"再按一次返回键退出程序", Toast.LENGTH_SHORT).show();

}else{

//退出

finish();

}

}

文章部分内容转载自:http://www.csdn123.com/html/mycsdn20140110/4c/4cd69cc9f3b442e5c6eb7f9eaf49ef80.html

你可能感兴趣的:(onBackPressed、onKeyDown和onKeyUp这三个事件的区别)