如何解决待处理意图中的所有标志是什么
我知道未决意图的概念,但标志令人困惑。
即使是安卓文档也很难理解
有人可以通过示例解释待处理的意图标志,特别是 FLAG_ONE_SHOT
和 FLAG_NO_CREATE
吗?
解决方法
PendingIntent
由 Android 框架管理。当您调用 PendingIntent.getXXX()
方法之一时,框架会尝试查找与您传递给 PendingIntent
方法的参数匹配的现有 getXXX()
。如果它找到匹配的 PendingIntent
,它只会将其返回给调用者。如果它没有找到匹配的 PendingIntent
,它会(通常)创建一个新的 PendingIntent
并将其返回给调用者。您可以使用以下标志更改此标准行为:
-
FLAG_NO_CREATE
用于获取现有的PendingIntent
。如果存在匹配的PendingIntent
,它将返回给调用者。如果不存在匹配的PendingIntent
,则什么也不会发生。框架不会创建新的PendingIntent
,并且该方法将null
返回给调用者。您可以使用此方法来确定特定的PendingIntent
是否存在。您还可以使用此方法获取现有的PendingIntent
,以便您可以取消它。 -
FLAG_ONE_SHOT
很奇怪。根据文档,此标志应导致PendingIntent
在使用(发送)后被删除。但是,此标志还有其他副作用。例如,如果您使用此标志创建一个PendingIntent
,然后尝试通过使用PendingIntent
调用PendingIntent.getXXX()
来获取此FLAG_NO_CREATE
(或测试它的存在),则框架将始终返回null
。出于这个原因,我从不使用它,我也建议永远不要使用它。 -
FLAG_CANCEL_CURRENT
用于删除现有的PendingIntent
并创建一个新的PendingIntent
。框架首先尝试找到匹配的PendingIntent
。如果找到,则取消(删除)此PendingIntent
。这意味着持有此PendingIntent
的任何应用程序将无法触发(发送)它。然后框架使用提供的参数创建一个新的FLAG_UPDATE_CURRENT
并将其返回给调用者。 -
PendingIntent
用于更新现有的PendingIntent
。框架首先尝试找到匹配的PendingIntent
。如果找到,现有Intent
中的“额外”将被提供的PendingIntent
参数中的“额外”覆盖。如果未找到匹配的PendingIntent
,则使用提供的参数创建一个新的。找到的(或新创建的)PendingIntent
返回给调用者。
注意:有关 Android 框架如何尝试查找“匹配”<a onclick="PostBack('FollowLink','2');return false;" href="#">Continue</a>
的信息,请参阅此答案:https://stackoverflow.com/a/29590084/769265
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。