0

我正在开发的 Android 应用程序存在问题,当我在一个特定活动中按下“向上”操作栏按钮时,系统会运行同一应用程序的 2 个进程。

更具体地说,让我们调用该活动 Z 及其父项,如清单中所声明的那样,Y。如果我从活动 X 启动活动 Z 并按下向上操作栏按钮,活动 Y 将启动,然后 I'将有 2 个进程在运行:一个带有活动 Y,另一个带有 Z。

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

这个有问题的活动与应用程序中的其他 5 个活动具有相同的任务相似性,但它似乎是唯一导致这种行为的活动。

这是我的清单的一个片段,其中的活动与导致问题的活动具有相同的亲和力,还有一个截图证明有 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>

截屏 2个进程运行

顶部的流程显示活动 Z,底部的流程显示活动 Y。

4

1 回答 1

0

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

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
    when (item?.itemId) {
        ...
        android.R.id.home -> finish()
    }
    return super.onOptionsItemSelected(item)
}
于 2018-10-01T17:54:44.307 回答