博客
关于我
android setflag找不到_android – 为什么FLAG_ACTIVITY_CLEAR_TOP不起作用...
阅读量:798 次
发布时间:2023-03-28

本文共 608 字,大约阅读时间需要 2 分钟。

从 FLAG_ACTIVITY_CLEAR_TOP 的文档可以看出,如果设置该标志并且正在启动的活动在当前任务中已经处于运行状态,那么它不会启动一个新的活动实例,而是会将当前任务堆栈中的所有活动关闭,并将这个意图传递给现在位于顶部的旧活动作为新的意图。

在实际应用中,如果活动 A 在启动活动 B 之前已经完成了任务,那么这种情况并不适用。这种情况下会启动一个新的活动 A 实例。

对于这个问题,有两种可行的解决方案:

  • 使用 Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK 这两个标志。这样会将活动 A 作为任务堆栈的根启动。这种方式在大多数情况下都能正常工作,但需要注意的是,CLEAR_TASK 标志需要 API 级别 11 及以上。这种方式适用于以下场景:活动 A 是任务堆栈的根或者你对堆栈中其他活动不感兴趣。

  • 另一种解决方案是通过在 B 活动完成后,直接启动 A 活动。具体来说,可以通过以下方式实现:

    • B 使用 startActivityForResult 启动 C 活动。
    • 在 C 完成后,B 将结果返回,表明需要启动 A 活动。
    • 在 B 的 afterActivityResult 方法中,完成 B 并启动 A 活动。
  • 这种方法的优势是避免了不必要的任务堆栈重建操作,但在实现时需要更仔细地处理活动状态和返回结果的逻辑。

    转载地址:http://odhfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现是否为 Pythagoreantriplet 毕氏三元数组算法(附完整源码)
    查看>>
    Objective-C实现显示响应算法(附完整源码)
    查看>>
    Objective-C实现晚捆绑测试实例(附完整源码)
    查看>>
    Objective-C实现普通矩阵A和B的乘积(附完整源码)
    查看>>
    Objective-C实现更新数字指定偏移量上的值updateBit算法(附完整源码)
    查看>>
    Objective-C实现最大和连续子序列算法(附完整源码)
    查看>>
    Objective-C实现最大的非常大的数字算法(附完整源码)
    查看>>
    Objective-C实现最大类间方差法OTSU算法(附完整源码)
    查看>>
    Objective-C实现最大非相邻和算法(附完整源码)
    查看>>
    Objective-C实现最小二乘多项式曲线拟合(附完整源码)
    查看>>
    Objective-C实现最小值滤波(附完整源码)
    查看>>
    Objective-C实现最小公倍数LCM算法(附完整源码)
    查看>>
    Objective-C实现最小路径和算法(附完整源码)
    查看>>
    Objective-C实现最快的归并排序算法(附完整源码)
    查看>>
    Objective-C实现最短路径Dijsktra算法(附完整源码)
    查看>>
    Objective-C实现最近点对问题(附完整源码)
    查看>>
    Objective-C实现最长公共子序列算法(附完整源码)
    查看>>
    Objective-C实现最长回文子串算法(附完整源码)
    查看>>
    Objective-C实现最长回文子序列算法(附完整源码)
    查看>>
    Objective-C实现最长子数组算法(附完整源码)
    查看>>