- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
让我们来看看下一个场景:
另一个类似的场景:
这两种情况的最后一步似乎都不是默认行为。
这就是为什么我为此目的搜索了最好的标志组合。
似乎唯一可以实现我所描述的行为的标志是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_TASK
或 FLAG_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/
背景 让我们来看看下一个场景: 用户使用具有多项 Activity 的应用 X(如 gmail 应用)。 在应用 X 上浏览了一下之后,他转到了您的应用。 在您的应用中,您需要使用 Intent 启动
我是一名优秀的程序员,十分优秀!