android - 如何清除活动堆栈并仅启动一项活动?
问题描述
我使用这些标志启动了下一个活动以清除后台堆栈。
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
并尝试过
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
这个我也加了。
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
但是所有的结果都是这样的。
D/activity-stack: idx: 0
num: 1, base-name: com.example.ui.result.ResultActivity, top-name: com.example.ui.result.ResultActivity
D/activity-stack: idx: 1
num: 1, base-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity, top-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity
D/activity-stack: idx: 0
num: 1, base-name: com.example.ui.result.OrderActivity, top-name: com.example.ui.result.OrderActivity
D/activity-stack: idx: 1
num: 1, base-name: com.example.ui.result.ResultActivity, top-name: com.example.ui.result.ResultActivity
D/activity-stack: idx: 2
num: 1, base-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity, top-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity
D/activity-stack: idx: 0
num: 1, base-name: com.example.ui.result.PaymentActivity, top-name: com.example.ui.result.PaymentActivity
D/activity-stack: idx: 1
num: 1, base-name: com.example.ui.result.OrderActivity, top-name: com.example.ui.result.OrderActivity
D/activity-stack: idx: 2
num: 1, base-name: com.example.ui.result.ResultActivity, top-name: com.example.ui.result.ResultActivity
D/activity-stack: idx: 3
num: 1, base-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity, top-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity
D/activity-stack: idx: 0
num: 1, base-name: com.example.ui.result.CompleteActivity, top-name: com.example.ui.result.CompleteActivity
D/activity-stack: idx: 1
num: 1, base-name: com.example.ui.result.OrderActivity, top-name: com.example.ui.result.OrderActivity
D/activity-stack: idx: 2
num: 1, base-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity, top-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity
如您所见,它只清除了最旧的一个。我怎样才能清楚地清除backstack?
我期望的是:
D/activity-stack: idx: 0
num: 1, base-name: com.example.ui.result.Completectivity, top-name: com.example.ui.result.CompleteActivity
D/activity-stack: idx: 1
num: 1, base-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity, top-name: com.google.android.apps.nexuslauncher.NexusLauncherActivity
解决方案
实际上,我的代码没有任何问题。但是我设置singleInstance
了那个活动,所以它没有用。
因为 singleInstance 似乎优先级更高,所以它不会被 singleTask(NEW_TASK+CLEAR_TASK or CLEAR_TOP) 覆盖
推荐阅读
- python - 具有可变数量参数的 Python 函数
- spring-boot - 如何使用 Spring Data DynamoDB 在应用程序启动时自动创建 DynamoDB 表?
- .htaccess - 请求您的用户名和密码的 .htaccess 错误。该网站说:“受保护的目录”
- ios - Xcode 返回链接器错误“找不到 -lFirebaseAuth 的库”
- wordpress - 如何在一个域上设置多个 wordpress 安装?
- tree - MS VSTS 如何在树中查看需求
- python - Pandas:如何正确执行 df2 = df1 中的列?
- angular - Angular HttpRequest 无法将类字段设置为我的数据值
- sapui5 - 加载图像有问题
- video - 使用 DirectShow 写入文件时的帧丢失