活动未正确关闭

时间:2012-11-18 14:37:32

标签: android android-intent onpause activity-finish

我在点击状态栏通知时调用了一个活动,该通知具有完整按钮。点击btn。我有以下代码 -

public void completeTask(){
        taskDBAdapter.deleteReminder(rowId);
        taskDBAdapter.close();
        Intent intent = new Intent(this, TaskManagerActivity.class);
        startActivity(intent);
        finish();

    }

当我点击完成btn新活动(TaskManagerActivity)正确打开。但是如果我重新打开我的应用程序,它仍然会尝试打开此活动而不是我的默认登陆活动。对此有任何帮助。??

编辑 -

我尝试重新定位我的finish()语句。仍然没有用。

编辑1.1 - 好的,我会在这里提供一些细节。假设我的应用程序有两个活动

  1. 主要活动
  2. 通知活动
  3. 我的应用会创建一些通知,以显示在状态栏上。因此,只要我点击状态栏,通知就会打开。现在有一个名为Complete的按钮,点击该按钮将触发给定的代码,主要活动(在代码TaskManagerActivity.class中)将打开。但是在我按下我的应用程序中的后退按钮并再次重新打开它之后,它会在应该触发主要活动时打开通知活动(因为它是启动活动)。

    谢谢, 射线

2 个答案:

答案 0 :(得分:2)

这是android功能的默认方式。如果您按下主页按钮然后再次打开您的应用程序,它将恢复应用程序以前的状态(除非由于内存限制它已杀死应用程序进程和活动)。所以你实际上并没有重新启动你的应用程序而只是恢复它。

如果您想退出应用程序,请按后退按钮。现在,当您重新打开应用程序时,将启动原始活动。

请勿修改此行为。这是默认的系统行为,用户希望它以这种方式工作。你的应用很好: - )

答案 1 :(得分:0)

- 首先,您遇到的行为是Android的运行方式,而且当用户在此应用程序打开时接到电话,完成应用后他肯定会想要回到他离开申请的状态。

如果你想这样,那么这就是......

- 使用android:launchMode="singleTask" android:launchMode="singleInstance"

确保您的应用只有一个实例正在运行

- 然后finish()您的onPause()活动。

@Override
void onPause()
    {
    super.onPause();
    finish();
    }