如何让一个活动从BACK键停止,而不是被销毁?

Rog*_*ger 16 android

现在,当按下BACK键时,活动会被破坏.我怎样才能让它停止(即保持所有变量等等),而不是被销毁?

谢谢!

the*_*enp 14

为什么需要保持变量存活?鉴于Android应用程序已建立的生命周期,我不确定阻止活动被破坏"只是为了保持变量"是有道理的.

  1. 即使您在不破坏应用程序的情况下停止应用程序,Android也有可能将其杀死以释放内存.无论如何,您必须在代码中考虑到这一点,因此防止应用程序被破坏并不会使您免于编写代码.

  2. 使用onPause()和onResume()方法中的SharedPreferences,可以相对轻松快速地保存和恢复变量.除非您存储大量数据,否则防止应用程序被破坏可能不会产生太大影响.

  3. 听起来您想将变量保留在内存中,因为您打算返回此活动.通常,您不使用后退按钮导航远离您打算返回的活动.相反,您将创建一个Intent并开始一个新的活动.当你这样做时,Android将当前活动放在Back Stack上,调用onPause()和onStop(),这看起来就像你正在寻找的那种行为.

因此,如果您仍然希望阻止您的活动被破坏(至少在Android决定使用太多内存并将其自身杀死之前),您可以始终使用Sagar的代码并在onBackPressed()中启动新活动.

@Override
public void onBackPressed()
{
    Intent intent = new Intent(this, Other.class);
    startActivity(intent);       
}
Run Code Online (Sandbox Code Playgroud)

请确保这是你真正想做的事情.


Ati*_*ood 11

简单的一行

@Override
public void onBackPressed() {
    mActivity.moveTaskToBack(true);
}
Run Code Online (Sandbox Code Playgroud)


Sag*_*kar 6

按BACK键会触发类的onBackPressed回调方法Activity.此回调的默认实现调用该finish()方法.

http://developer.android.com/reference/android/app/Activity.html#onBackPressed()

您可以覆盖此方法以将活动移至背景(模仿按HOME键的操作.

例如:


@Override
public void onBackPressed() {
    onKeyDown(KeyEvent.KEYCODE_HOME);        
}
Run Code Online (Sandbox Code Playgroud)

您也可以考虑moveTaskToBackground()在此提及:

覆盖后退按钮,就像主页按钮一样