不要在onBackPressed上调用onDestroy

问题描述

| 我不希望按下“后退”按钮时主动性被破坏。我的应用程序与1.6 SDK兼容。参考http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html和“覆盖后退”按钮以充当主页按钮的方式,我选择了以下代码
    @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我该怎么办,不要在按下后退按钮时被破坏。也许我只想忽略按钮或隐藏活动。 任何线索,为什么它没有按预期工作。 谢谢     

解决方法

        
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);
}
    ,        为什么要更改标准系统行为? Android系统能否破坏活动。它应该仅取决于系统。您可能想做一些可以做的不同的事情。也许您需要服务或实现活动的保存状态?     ,        捕获返回键将无法解决此问题。 android中的活动生命周期最好留给系统。系统会随时终止您的活动。     ,        
@Override
public void finish() {
    //super.finish();
    moveTaskToBack(true);
}
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...