按下后退按钮时,我不希望我的活动被破坏。我的应用程序与1.6 SDK兼容。参考http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html和Override 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当按下后退按钮时,我该怎么办才能不被破坏。也许我想忽略按钮或隐藏活动。
任何线索,为什么它没有按预期工作。
由于
答案 0 :(得分:8)
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);
}
答案 1 :(得分:2)
您为什么要更改标准系统行为? Android系统可以破坏活动与否。它应该只取决于系统。您可能希望做一些可以采用不同方式完成的事情。也许您需要服务或实施保存活动状态?
答案 2 :(得分:0)
捕获后退键无法解决此问题。 android中的Activity生命周期最好留给系统。系统会随时终止您的活动。
答案 3 :(得分:0)
@Override
public void finish() {
//super.finish();
moveTaskToBack(true);
}