何时使用IntentSender与PendingIntent?

时间:2014-09-23 19:24:37

标签: android android-pendingintent

Android文档介绍了PendingIntentIntentSender类,但不清楚何时或为何使用IntentSender而不是PendingIntent - 事实上,大部分描述似乎都是相同的。

PendingIntent文档:

  

要对其执行的Intent和目标操作的说明。使用(...)创建此类的实例;返回的对象可以交给其他应用程序,以便他们可以在以后代表您执行您所描述的操作。

IntentSender文档:

  

要对其执行的Intent和目标操作的说明。返回的对象可以交给其他应用程序,以便他们可以在以后代表您执行您所描述的操作。

这两个类都是Parcelable,两个类都允许接收者使用sendsendIntent(具有几乎相同的签名)来调用操作。

由于您需要现有PendingIntent来创建IntentSender,您希望在什么情况下创建IntentSender而不是仅仅使用PendingIntent

2 个答案:

答案 0 :(得分:0)

我注意到的区别是,如果我使用 IntentSender ,而不是在同一任务中启动活动启动,而 PendingIntent 创建新任务。

例如:-假设我有一个包含活动MyActivity的应用程序 MyApp ,还有另一个应用程序 SomeApp ,并且有一个功能可以单击MyActivity上方的按钮< strong> SomeApp 的活动。

现在,当我使用 IntentSender 传递MyActivity时,单击一个按钮MyActivity在 SomeApp 上方启动,然后单击“主页”按钮后,我检查后台仅执行一项任务即 SomeApp任务。但是,如果我在 PendingIntent 中通过MyActivity并单击设备的主页按钮,则后台有两个任务,一个是 SomeApp任务,另一个是 MyApp任务。因此,当您不想在其他任务中执行操作时,请使用IntentSender。

答案 1 :(得分:-2)

有很好的例子和解释here

以下是快速摘要:

<强> IntentSender

IntentSender是android.content.IntentSender

的一个实例

IntentSender的实例无法直接构建,但可以从android.app.PendingIntent实例获取PendingIntent.getIntentSender()实例,因为PendingIntent封装了IntentSender

IntentSender Documentation

<强>的PendingIntent

PendingIntent是您提供给外国应用程序的令牌(例如AlarmManagerAppWidgetManager),允许外地应用程序使用您的应用程序的权限来执行预定义的代码片段。

基本上,收到PendingIntent的外国应用程序,不知道被PendingIntent包装的Intent的内容,但外国应用程序应该将意图发送回主应用程序符合条件。

PendingIntent Documentation