Android 正确处理回发请求,使应用程序能够在SDK 4(API级别1.6)之前正常工作

Android 正确处理回发请求,使应用程序能够在SDK 4(API级别1.6)之前正常工作,android,android-activity,Android,Android Activity,我注意到,“后退”请求过去是在用户按下“后退”键时发出的,但在某些情况下,这种情况发生了变化,因此在释放“后退”键时会发出“后退”请求。(如果我错了,请纠正我!)是否有人知道此更改是从哪个SDK(或API级别)生效的?我认为它是SDK 2.0(API级别5),因此在我的活动中有如下代码,但我想确定一下 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCOD

我注意到,“后退”请求过去是在用户按下“后退”键时发出的,但在某些情况下,这种情况发生了变化,因此在释放“后退”键时会发出“后退”请求。(如果我错了,请纠正我!)是否有人知道此更改是从哪个SDK(或API级别)生效的?我认为它是SDK 2.0(API级别5),因此在我的活动中有如下代码,但我想确定一下

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
 if (keyCode == KeyEvent.KEYCODE_BACK)
 {
  if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR)
   handleBackRequest();

  return true;
 }

 return super.onKeyDown(keyCode, event);        
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) 
{
 if (keyCode == KeyEvent.KEYCODE_BACK)
 {
  if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ECLAIR)
   handleBackRequest();

  return true;
 }

 return super.onKeyUp(keyCode, event);
}
@覆盖
公共布尔onKeyDown(int-keyCode,KeyEvent事件)
{
if(keyCode==KeyEvent.keyCode\u BACK)
{
if(android.os.Build.VERSION.SDK_INT=android.os.Build.VERSION\u CODES.ECLAIR)
handleBackRequest();
返回true;
}
返回super.onKeyUp(keyCode,event);
}

对Android 2.0及更高版本使用
onBackPressed()
。在Android 1.6上使用
onKeyDown()

在我上一篇文章中的代码中,我遇到了一些不想要的行为(当对话框、Android键盘等出现时),根据Commonware的建议,将我的代码更改为以下内容,并且似乎对不同的SDK工作正常

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
 if (keyCode == KeyEvent.KEYCODE_BACK
     && android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR)
 {
  onBackPressed();
  return true;
 }

 return super.onKeyDown(keyCode, event);        
}

@Override
public void onBackPressed()
{
 // handle back request here
}
@覆盖
公共布尔onKeyDown(int-keyCode,KeyEvent事件)
{
if(keyCode==KeyEvent.keyCode\u BACK
&&android.os.Build.VERSION.SDK_INT

。。。如果这里有什么不对的地方,请告诉我

对于更高版本的Android,在
onKeyUp(int,KeyEvent)
方法中处理“back”请求是否与在
onBackPressed()方法中处理它不同?那么,我是否需要对2.0以上的版本进行不同的处理?@AdilHussain:AFAIK,
onKeyUp()
对后退按钮不合适。我有点困惑。
onKeyUp(int,KeyEvent)
(当'back'键被释放时;在最新版本的Android sdk中)的默认实现不是简单地调用
onBackPressed()
方法,这样就在此时(即当'back'键被释放时)发出了'back'请求吗?@AdilHussain:可能——我还没看过。我只是告诉你谷歌告诉我们要做什么。谷歌已经告诉我们对Android 2.0及更高版本使用
onBackPressed()
,对Android 1.6及更低版本使用
onKeyDown()
。这是谷歌将支持的。谷歌可能支持也可能不支持您计划使用的
onKeyUp()
。酷。我明天会试试看,让你知道我进展如何。谢谢