优先化 Intent 标志 FLAG_ACTIVITY_SINGLE_TOP

Prioritize Intent flag FLAG_ACTIVITY_SINGLE_TOP

我有一个意图,如果 activity 当前不在返回堆栈的顶部(即 FLAG_ACTIVITY_SINGLE_TOP 实现的),我想启动一个 activity。但是,如果 activity 不在堆栈顶部,我想清除堆栈并在顶部创建给定 activity 的新历史记录。

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

现在的问题是,这总是会清除返回堆栈并将 activity 放在顶部,从而生成一个新的 activity。实际上 FLAG_ACTIVITY_SINGLE_TOP 没有做任何事情。是否有一种干净的方法来确定 FLAG_ACTIVITY_SINGLE_TOP 的优先级,以便在当前 activity 位于顶部时不会创建新的 activity?

谢谢。

对于任何想知道的人,FLAG_ACTIVITY_SINGLE_TOP 的等价物可以简单地在清单中的 activity 标记内定义:

android:launchMode="singleTop"