可能重复:
What is Pending Intent?
我对 意图 和 待定意图 感到困惑。
任何人都可以解释两者之间究竟有什么区别?我搜索了SO,我找到了这个链接,但它不符合我的需要:https://stackoverflow.com/questions/5633810/what-is-difference-between-an-intent-and-a-pending-intent。
我知道待定意图是一个意图,将在稍后开始。正常意图在传递到startActivity(intent)
或StartService(intent)
时开始。
答案 0 :(得分:15)
<强>的PendingIntent 强>
要对其执行的Intent和目标操作的说明。使用getActivity(Context,int,Intent,int),getBroadcast(Context,int,Intent,int),getService(Context,int,Intent,int)创建此类的实例;返回的对象可以交给其他应用程序,以便他们可以在以后代表您执行您所描述的操作。
通过向另一个应用程序提供PendingIntent,您授予它执行您指定的操作的权利,就好像另一个应用程序是您自己(具有相同的权限和标识)。因此,您应该注意如何构建PendingIntent:例如,通常,您提供的基本Intent将组件名称显式设置为您自己的组件之一,以确保它最终发送到那里,而不是其他任何地方。
PendingIntent本身只是对系统维护的令牌的引用,该令牌描述了用于检索它的原始数据。这意味着,即使其拥有的应用程序的进程被终止,PendingIntent本身也将保持可用于已经给出它的其他进程。如果创建应用程序稍后重新检索相同类型的PendingIntent(相同的操作,相同的Intent操作,数据,类别和组件以及相同的标志),它将接收表示同一令牌的PendingIntent,如果它仍然有效,并且可以因此调用cancel()将其删除
意图
intent是要执行的操作的抽象描述。它可以与startActivity一起使用来启动Activity,broadcastIntent可以将它发送到任何感兴趣的BroadcastReceiver组件,startService(Intent)或bindService(Intent,ServiceConnection,int)可以与后台服务进行通信。
Intent提供了一种工具,用于在不同应用程序中的代码之间执行延迟运行时绑定。它最重要的用途是发起活动,它可以被认为是活动之间的粘合剂。它基本上是一个被动数据结构,包含要执行的动作的抽象描述。意图中的主要信息是:
action - 要执行的一般操作,例如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等。 data - 要操作的数据,例如联系人数据库中的人员记录,表示为Uri。