1

我不希望我的活动在按下后退按钮时被破坏。我的应用程序与 1.6 SDK 兼容。参考http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.htmlOverride back button to act like home button,我选择了以下代码:

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
                // For versions lower than 2.0     
    if (Utility.buildDet.getDeviceBuildAPI() <= Utility.buildDet.getBuildApi() 
            && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
        onBackPressed();
    return super.onKeyDown(keyCode, event);
}

      // In any version, this function will be called
public void onBackPressed() {
    // This will be called either automatically for you on 2.0    
    // or later, or by the code above on earlier versions of the platform.
    Log.i(TAG, "##### BACK KEY IS PRESSED");
    this.moveTaskToBack(true);  // on false, it shows moveTaskToBack: 11
    return;
}

当我按下后退按钮时,我会记录这些日志

: ##### BACK KEY IS PRESSED
 INFO/ActivityManager(51): moveTaskToBack: 10
: !!!!!!! Into onPause
: !!!!!!! Into onStop
: !!!!!!! Into DESTROY

我没有覆盖 moveTasToBack()。Anu clu 我该怎么做才能在按下后退按钮时不被破坏。也许我只想忽略按钮或隐藏活动。

任何线索,为什么它没有按预期工作。

谢谢

4

4 回答 4

10
public boolean onKeyDown(int keyCode, KeyEvent event)  
{

     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
     {

        this.moveTaskToBack(true);
           return true;
      }

    return super.onKeyDown(keyCode, event);
}
于 2011-05-30T08:47:56.830 回答
2

为什么要改变标准系统的行为?Android系统可以销毁Activity也可以不销毁。它应该只取决于系统。你可能想做一些可以用不同方式做的事情。也许您需要服务或实现活动的保存状态?

于 2011-05-30T08:51:50.480 回答
1
@Override
public void finish() {
    //super.finish();
    moveTaskToBack(true);
}
于 2013-08-05T12:01:37.537 回答
0

捕获返回键不能解决这个问题。android中的Activity生命周期最好留给系统。系统会随时终止您的活动。

于 2012-08-10T16:57:56.410 回答