单击通知时如何保留当前的后台堆栈(或任务)?

h.n*_*ehi 8 android android-notifications back-stack android-task

在我的应用程序中,我创建了一个启动Details Activity的通知.我想将此活动添加到当前任务(或后台堆栈)的顶部.例如,我希望应用程序任务(后台堆栈)的行为如下:

在此输入图像描述

但是我得到了这个:

在此输入图像描述

我没有使用FLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_NEW_TASK标志.我该怎么办?

编辑:第一张图片只是一个例子.我认为问题的标题是完全明确的.我想在当前堆栈的顶部添加Details Activity,而不是从新任务开始.

这就是我创建的方式PendingIntent:

    // Details activity intent
    Intent intent = new Intent(context, DetailsActivity.class);
    intent.putExtra(Com.KEY_ID, event.getId());
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
            intent, PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)

这是显而易见的:

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name_system"
        android:launchMode="singleTop"
        android:theme="@style/AppTheme.NoActionBar">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".NoteActivity"
        android:label="@string/app_name_system"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="stateHidden" />

    <activity
        android:name=".DetailsActivity"
        android:launchMode="singleTop"
        android:label="@string/app_name_system"
        android:theme="@style/AppTheme.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)

h.n*_*ehi 4

我找到了这个链接:启动活动时保留导航。虽然它没有为我的问题提供确切的解决方案,但它产生了预期的结果。

该链接描述了我们应该开始具有不同亲和力DetailsActivity的新任务。

显现:

    <activity
        android:name=".DetailsActivity"
        android:excludeFromRecents="true"
        android:label="@string/app_name_system"
        android:launchMode="singleTop"
        android:taskAffinity=""
        android:theme="@style/AppTheme.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)

PendingIntent创建:

    Intent intent = new Intent(context, DetailsActivity.class);
    intent.putExtra(Com.KEY_ID, event.getId());
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
            intent, PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)