Android文档介绍了PendingIntent
和IntentSender
类,但不清楚何时或为何使用IntentSender
而不是PendingIntent
- 事实上,大部分描述似乎都是相同的。
PendingIntent
文档:
要对其执行的Intent和目标操作的说明。使用(...)创建此类的实例;返回的对象可以交给其他应用程序,以便他们可以在以后代表您执行您所描述的操作。
IntentSender
文档:
要对其执行的Intent和目标操作的说明。返回的对象可以交给其他应用程序,以便他们可以在以后代表您执行您所描述的操作。
这两个类都是Parcelable
,两个类都允许接收者使用send
或sendIntent
(具有几乎相同的签名)来调用操作。
由于您需要现有PendingIntent
来创建IntentSender
,您希望在什么情况下创建IntentSender
而不是仅仅使用PendingIntent
?
答案 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
。
<强>的PendingIntent 强>
PendingIntent
是您提供给外国应用程序的令牌(例如AlarmManager
或AppWidgetManager
),允许外地应用程序使用您的应用程序的权限来执行预定义的代码片段。
基本上,收到PendingIntent
的外国应用程序,不知道被PendingIntent
包装的Intent的内容,但外国应用程序应该将意图发送回主应用程序符合条件。