活动没有被破坏

时间:2014-10-20 17:21:21

标签: android

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

 @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设备中的onDestroy关闭我的应用来测试task manager, 然而,在Android Studio上该应用似乎仍然存在,它表示Session: '<app_name>' : running并且onDestroy未被调用。

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

**我想看到onDestroy在我使用task manager停止我的应用并通过手动停止它时被调用,因为用户必须这样做,如果他想要关闭我的应用程序,而不是按后退按钮。通过按下后退按钮,应用程序将存活并且很好,这就是我想要的。

4 个答案:

答案 0 :(得分:2)

为什么重新启动后退活动?什么都不做。

 @Override
 public void onBackPressed() {
 }

答案 1 :(得分:0)

致电 finish() 以销毁活动。

@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();
 }

答案 2 :(得分:0)

设置开发人员选项下,转到应用部分并启用&#34; 不要保留活动&# 34;选项。 然后,每次按下后退按钮,应用程序都将被销毁。 我想覆盖后退按钮操作以销毁您可以覆盖活动

中的onKeyDown的应用程序
  @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        finish();
    }
    return super.onKeyDown(keyCode, event);
}

答案 3 :(得分:0)

您可以在finish();

之后拨打startActivity(setIntent);

或者,您也可以在最后致电super.onBackPressed();