gpt4 book ai didi

android - 未决 Intent 中的所有标志是什么

转载 作者:行者123 更新时间:2023-12-05 03:42:07 26 4
gpt4 key购买 nike

我知道未决 Intent 的概念,但标志令人困惑。

连android文档都很难看懂

有人可以通过示例提供未决 Intent 标志的解释,特别是 FLAG_ONE_SHOTFLAG_NO_CREATE 吗?

最佳答案

PendingIntent 由 Android 框架管理。当您调用其中一个 PendingIntent.getXXX() 方法时,框架会尝试查找与您传递给 getXXX()< 的参数相匹配的现有 PendingIntent/ 方法。如果它找到一个匹配的 PendingIntent,它就会将其返回给调用者。如果它没有找到匹配的 PendingIntent,它将(通常)创建一个新的 PendingIntent 并将其返回给调用者。您可以使用标志更改此标准行为:

  • FLAG_NO_CREATE 用于获取现有的 PendingIntent。如果存在匹配的 PendingIntent,它将返回给调用者。如果不存在匹配的 PendingIntent,则什么也不会发生。框架不会创建新的 PendingIntent 并且该方法会向调用方返回 null。您可以使用此方法来确定特定的 PendingIntent 是否存在。您还可以使用此方法获取现有的 PendingIntent,以便您可以取消它。

  • FLAG_ONE_SHOT 很奇怪。根据文档,此标志应导致 PendingIntent 在使用(发送)后被删除。但是,此标志还有其他副作用。例如,如果您使用此标志创建一个 PendingIntent,然后尝试通过调用 PendingIntent.getXXX( )FLAG_NO_CREATE,框架将始终返回 null。出于这个原因,我从不使用它,我也建议永远不要使用它。

  • FLAG_CANCEL_CURRENT 用于删除现有的 PendingIntent 并创建一个新的。该框架首先尝试找到匹配的 PendingIntent。如果它找到一个,它会取消(删除)这个 PendingIntent。这意味着持有此 PendingIntent 的任何应用程序将无法触发(发送)它。然后,框架使用提供的参数创建一个新的 PendingIntent 并将其返回给调用者。

  • FLAG_UPDATE_CURRENT 用于更新现有的 PendingIntent。该框架首先尝试找到匹配的 PendingIntent。如果找到一个,则现有 PendingIntent 中的“extras”将被提供的 Intent 参数中的“extras”覆盖。如果未找到匹配的 PendingIntent,则会使用提供的参数创建一个新的。找到的(或新创建的)PendingIntent 返回给调用者。


注意:有关 Android 框架如何尝试找到“匹配的”PendingIntent 的信息,请参阅此答案:https://stackoverflow.com/a/29590084/769265

关于android - 未决 Intent 中的所有标志是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67398727/

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