同一个应用程序如何只有一个进程 运行?
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)
}
我正在开发的 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)
}