gpt4 book ai didi

android - 使用 Intent.FLAG_ACTIVITY_MULTIPLE_TASK 安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:42 28 4
gpt4 key购买 nike

背景

让我们来看看下一个场景:

  1. 用户使用具有多项 Activity 的应用 X(如 gmail 应用)。
  2. 在应用 X 上浏览了一下之后,他转到了您的应用。
  3. 在您的应用中,您需要使用 Intent 启动此 X 应用,以转到其中的特定 Activity 。
  4. 现在用户在应用 X 上转到此特定 Activity 。
  5. 用户按下后退按钮,希望返回到您的应用,而不是停留在应用 X 上。

另一个类似的场景:

  1. 用户在 Activity 之间浏览您的应用。
  2. 您的应用进入后台(例如使用主页按钮)。
  3. 您的应用会显示一条通知,一旦点击,它将打开您应用的特定 Activity 。
  4. 用户点击通知并转到您应用的特定 Activity 。
  5. 用户按下后退按钮,希望返回到在点击通知之前显示的应用,而不是转到上次离开时​​显示的上一个应用 Activity 。

这两种情况的最后一步似乎都不是默认行为。

这就是为什么我为此目的搜索了最好的标志组合。

问题

似乎唯一可以实现我所描述的行为的标志是Intent.FLAG_ACTIVITY_MULTIPLE_TASK (连同 Intent.FLAG_ACTIVITY_NEW_TASK )。

但是,根据 android API,不建议将此标志用于正常使用:

Do not use this flag unless you are implementing your own top-level application launcher. ...

Because the default system does not include graphical task management, you should not use this flag unless you provide some way for a user to return back to the tasks you have launched.

此信息似乎与其余有关 Intent 的描述一样令人困惑。

我还看到了其他 Intent 标志,例如 Intent.FLAG_ACTIVITY_CLEAR_TASK实现了类似的结果,但它们有奇怪的行为和/或它们使用高 API

问题

使用这个标志安全吗?有什么好的替代品吗?

使用这个标志有什么危险,使用它的API上的描述是什么意思?

最佳答案

在您的第一个场景中,如果您的应用需要启动另一个应用的 Activity,它可以在与您的应用相同的任务中启动此 Activity。没有理由为此使用任何特殊的 Intent 标志(您不需要 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK)。在场景的第 5 步中,用户将返回到您的应用程序(因为 BACK 只是将他带到当前任务中的上一个 Activity )。这是标准的默认行为。

在您的第二种情况下,我的第一 react 是“这不是标准行为”。这意味着用户可能不会期望能够返回到他们在点击通知之前正在执行的任务。但是,如果你真的想实现这个,那么我建议你创建一个从通知启动的特殊 Activity ,这个特殊 Activity 应该有一个不同于你的其他 Activity 的 taskAffinity应用。在这种情况下,当从通知启动特殊 Activity 时,它不会将应用程序的任务带到前台。它只会创建一个仅包含特殊 Activity 的新任务。当显示特殊 Activity 时,用户可以按 BACK 键,这将使他返回到他在点击您的通知之前正在处理的任务。

一般来说,您不应使用 FLAG_ACTIVITY_MULTIPLE_TASK。主要原因是,如果您有多个任务包含您的应用程序(或其中的一部分),用户几乎不可能返回到特定任务。没有办法提供不同的启动图标或不同的应用程序名称(针对不同的任务)(,这样用户将在“最近的任务”列表中看到多个任务,但无法分辨哪个是哪个。你将很难清理你正在做的事情,你只会制造比你能处理的更多的问题。使用这个标志有大约一百万个副作用,对于一般的应用程序,根本没有必要这样做。

关于android - 使用 Intent.FLAG_ACTIVITY_MULTIPLE_TASK 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19771051/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com