• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

android - 清除整个历史堆栈并在 Android 上启动一个新 Activity

[复制链接]
菜鸟教程小白 发表于 2022-8-1 01:19:26 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

是否可以在堆栈上启动一个 Activity ,清除它之前的整个历史记录?

情况

我有一个 Activity 堆栈,可以是 A->B->C 或 B->C(屏幕 A 选择用户 token ,但许多用户只有一个 token )。

在屏幕 C 中,用户可能会采取使屏幕 B 无效的操作,因此应用程序希望将他们带到屏幕 A,而不管它是否已经在堆栈中。然后,屏幕 A 应该是我的应用程序堆栈中的唯一项目。

备注

还有许多其他类似的问题,但我还没有找到任何可以回答这个确切问题的东西。我试过调用getParent().finish() - 这总是导致空指针异常。 FLAG_ACTIVITY_CLEAR_TOP仅当 Activity 已经在堆栈上时才有效。



Best Answer-推荐答案


在 API 级别 11 中,为此添加了一个新的 Intent 标志:Intent.FLAG_ACTIVITY_CLEAR_TASK
只是为了澄清,使用这个:
java

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

Kotlin
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK

不幸的是,对于 API lvl <= 10,我还没有找到一个干净的解决方案。
"DontHackAndroidLikeThis" solution确实是纯粹的hackery。你不应该那样做。
编辑:
根据@Ben Pearson的评论,对于 API <=10,现在可以使用 IntentCompat相同的类(class)。可以使用IntentCompat.FLAG_ACTIVITY_CLEAR_TASK清除任务的标志。所以你也可以支持 pre API level 11。

关于android - 清除整个历史堆栈并在 Android 上启动一个新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3473168/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap