java - 为什么要同时使用 Intent.FLAG_ACTIVITY_NEW_TASK 和 Intent.FLAG_ACTIVITY_SINGLE_TOP?

标签 java android android-intent

当推送通知被点击时,我使用类似的东西来启动我想要的 Intent :

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
ctx.startActivity(intent);

这是我从教程中获取的部分代码,但我并不真正理解 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_SINGLE_TOP 的用法。

来自文档:

FLAG_ACTIVITY_NEW_TASK(在 API 级别 1 中添加):

When using this flag, if a task is already running for the activity you are now starting, then a new activity will not be started; instead, the current task will simply be brought to the front of the screen with the state it was last in.

FLAG_ACTIVITY_SINGLE_TOP(在 API 级别 4 中添加):

If set, the activity will not be launched if it is already running at the top of the history stack.

两者对我来说听起来很相似,我的意思是这听起来像是 NEW_TASK 确保如果您的 Activity 已经存在于任务中,则不会创建新任务但会出现旧任务(据我所知,可以在顶部出现不同的 Activity ),SINGLE_TOP 将仅在 Activity 不在堆栈顶部时启动该 Activity (这是否意味着将有 2 个或更多实例相同的 Activity )?

我的问题:它们之间是否存在需要同时使用两者的区别?

最佳答案

据我所知

FLAG_ACTIVITY_SINGLE_TOP 不会创建新任务来启动自身。它总是依赖于前一个 Activity 的任务来启动自己(与此同时,它会检查堆栈中是否已经有一个实例并显示该实例是否可用。无论哪种方式,它都不会创建新任务)

在哪里

FLAG_ACTIVITY_NEW_TASK 会创建一个新任务,除非有一个任务具有相同的 Activity 。

我知道感觉有点相同,但这里的主要区别在于,当 Activity 在 FIRST TIME 时使用 FLAG_ACTIVITY_SINGLE_TOP 启动时,它依赖于现有任务和 FLAG_ACTIVITY_NEW_TASK 创建一个新任务

关于java - 为什么要同时使用 Intent.FLAG_ACTIVITY_NEW_TASK 和 Intent.FLAG_ACTIVITY_SINGLE_TOP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38766279/

相关文章:

java - 如何从 tmdb json feed 加载电影图像

android - 用于检查在线连接的动态 BroadcastReceiver

安卓 : Not able to share photos on Instagram using Intent

java - 为什么我需要显式地进行通用调用?

java - 将行保持在同一位置的 View 中

java - 为什么同一目录中的一个java类无法找到资源,而其他类却可以?

android - 我是否需要每个子项目的 gradle 包装器?

java - Java 小程序中的 drawImage 在 Safari 中闪烁

android - 从 Android 应用程序调用 Java EE Web 服务

android - 您如何调用 Android 应用程序并从 Chrome 中的网页返回结果?