同一个应用程序如何只有一个进程 运行?

How can I have only one process of the same app running?

我正在开发的 Android 应用程序有问题,当我同时按下 "up" 操作栏按钮时,系统会 运行 2 个相同应用程序的进程特别是 activity.

更具体地说,我们将清单中声明的​​ activity Z 及其父级称为 Y。如果我从 activity X 开始 activity Z 并且按下向上操作栏按钮,activity Y 将启动,然后我将有 2 个进程 运行ning:一个带有 activity Y,另一个带有 Z.

我已经尝试为此设置不同的启动标志activity,但问题仍然存在。

有问题的 activity 与应用中的其他 5 个共享相同的任务亲和力,但它似乎是唯一导致此行为的任务。

这是我的清单的片段,其中的活动与导致问题的活动具有相同的亲和力,还有一张屏幕截图证明应用 运行ning 有 2 个进程。

清单

        <activity android:name=".feature.stations.X"
            android:taskAffinity="@string/affinity_petrol_stations"
            android:theme="@style/AppTheme.NoActionBar"/>

        <activity android:name=".feature.stations.Y"
            android:taskAffinity="@string/affinity_petrol_stations"
            android:theme="@style/AppTheme.NoActionBar">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".feature.stations.X"/>
        </activity>

        <!-- THIS IS THE ACTIVITY THAT CAUSES THE ISSUE -->
        <activity android:name=".feature.stations.Z"
            android:taskAffinity="@string/affinity_petrol_stations"
            android:theme="@style/AppTheme.NoActionBar">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".feature.stations.Y"/>
        </activity>

截图

顶部的过程显示activity Z,底部的过程显示Y。

我设法通过从 activity 中删除 meta-data 标记然后手动实现向上按钮行为来解决我的问题,如下例所示:

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
    when (item?.itemId) {
        ...
        android.R.id.home -> finish()
    }
    return super.onOptionsItemSelected(item)
}