我正在开发的Android应用程序存在问题,当我在一个特定活动中按下“向上”操作栏按钮时,该系统使系统运行同一应用程序的2个进程。
更具体地说,让我们将活动Z及其父级(如清单Y中所声明)称为。如果我从活动X启动活动Z并按向上操作栏按钮,则活动Y将被启动,那么我将运行2个进程:一个进程的活动为Y,另一个进程的活动为Z。
我已经尝试为该活动设置不同的启动标志,但是问题仍然存在。
有问题的活动与应用程序中的其他5个活动具有相同的任务相似性,但这是唯一导致此行为的活动。
这是清单的一小段,其活动与导致问题的活动具有相同的亲和力,并提供了截图以证明该应用程序有两个进程正在运行。
清单
<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>
顶部的过程显示活动Z,底部的过程显示Y。
答案 0 :(得分:0)
我设法通过从该活动中删除meta-data
标签来解决问题,然后手动实现向上按钮行为,如下例所示:
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item?.itemId) {
...
android.R.id.home -> finish()
}
return super.onOptionsItemSelected(item)
}