繁体   English   中英

活动未销毁

[英]Activity not destroyed

我有一个应用程序,当用户按下“后退”按钮时,该应用程序会进入后台

 @Override
 public void onBackPressed() {
    Intent setIntent = new Intent(Intent.ACTION_MAIN);
    setIntent.addCategory(Intent.CATEGORY_HOME);
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(setIntent);
 }

因此,用户关闭应用程序的唯一方法是使用task manager并手动将其停止。

现在,我正在尝试通过使用Android设备中的task manager关闭我的应用程序来测试onDestroy ,但是,在Android Studio该应用程序似乎还活着,它显示Session: '<app_name>' : runningonDestroy正在Session: '<app_name>' : running不叫。

为什么会这样,我该如何解决?

**我想看到在我使用task manager停止应用程序并手动停止它时调用了onDestroy ,因为用户要关闭我的应用程序就必须这样做,而不是通过按后退按钮来完成。 通过按“后退”按钮,该应用程序将继续运行并且运行良好,这就是我想要的。

为什么要重新启动背面的活动? 什么都不做

 @Override
 public void onBackPressed() {
 }

调用finish()销毁一个Activity。

@Override
 public void onBackPressed() {
    Intent setIntent = new Intent(Intent.ACTION_MAIN);
    setIntent.addCategory(Intent.CATEGORY_HOME);
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(setIntent);
    finish();
 }

“设置” →“ 开发人员选项”下 ,转到“应用程序”部分,然后启用“ 不保留活动 ”选项。 然后,每当您按下后退按钮时,该应用程序将被销毁。 我想覆盖“后退按钮”操作以销毁应用,可以覆盖“活动”中的onKeyDown

  @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        finish();
    }
    return super.onKeyDown(keyCode, event);
}

您可以调用finish(); ,例如,在startActivity(setIntent);之后startActivity(setIntent);

或者,您可以调用super.onBackPressed(); ,也最后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM