android - 我怎样才能只运行同一个应用程序的一个进程?
问题描述
我正在开发的 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>
顶部的流程显示活动 Z,底部的流程显示活动 Y。
解决方案
我设法通过meta-data
从该活动中删除标签然后手动实现向上按钮行为来解决我的问题,如下例所示:
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item?.itemId) {
...
android.R.id.home -> finish()
}
return super.onOptionsItemSelected(item)
}
推荐阅读
- python - 用于自动下载压缩文件夹的 Bash 命令 - Google Colab
- django - 如何隐藏自动生成的模式中的字段,或明确定义模式?
- javascript - 如何使用 javascript 获取原始单位的 CSS 值?
- python - Datawig:使用 SimpleImputer 导致的 KeyError
- c# - 我应该如何从 Span/ReadOnlySpan 创建 ImmutableArray?
- google-coral - 如何编写一个迭代一定次数的for循环:Coral
- python - LeetCode 问题的运行时差异原因(打开锁)
- r - 如何在 R 中计算简单数据的置信区间
- c# - 在 Android 中关闭应用程序后扫掉留下的通知时,Xamarin Forms 出现“应用程序已停止”错误
- python - 在图例旁边添加值并更改图例的位置