【问题标题】:When to use IntentSender vs. PendingIntent?何时使用 IntentSender 与 PendingIntent?
【发布时间】:2014-09-23 19:24:37
【问题描述】:

Android 文档描述了 PendingIntentIntentSender 类,但不清楚何时或为什么使用 IntentSender 而不是 PendingIntent - 事实上,大部分描述似乎对两者相同。

PendingIntent 文档:

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

IntentSender 文档:

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

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

既然您需要现有的PendingIntent 来创建IntentSender,那么在什么情况下您会想要创建IntentSender 而不仅仅是使用您的PendingIntent

【问题讨论】:

  • 你找到答案了吗?我面临同样的问题,但这个问题的唯一答案并没有给出有意义的解释。

标签: android android-pendingintent


【解决方案1】:

我注意到的不同之处在于,如果我使用 IntentSender,而不是在同一任务中启动 Activity,而 PendingIntent 创建新任务。

例如:- 假设我有一个包含活动 MyActivity 的应用 MyApp 并且还有另一个应用 SomeApp 并且有一个功能可以单击按钮以某种方式打开 MyActivity SomeApp 的活动。

现在,当我使用 IntentSender 传递 MyActivity 时,单击一个按钮 MyActivity 在 SomeApp 上方启动,单击主页按钮后,我检查后台只有一个任务即SomeApp 任务。但是,如果我在 PendingIntent 中传递 MyActivity 并单击设备的主页按钮,那么后台会有两个任务,一个是 SomeApp 任务,另一个是 MyApp 任务。 所以当你不想在其他任务中执行操作时使用 IntentSender。

【讨论】:

    【解决方案2】:

    确实有很好的例子和解释here

    这里是一个简短的总结:

    IntentSender

    IntentSender 是android.content.IntentSender 的一个实例

    IntentSender 的实例不能直接构造,但可以从带有PendingIntent.getIntentSender()android.app.PendingIntent 实例中获得,因为PendingIntent 封装了IntentSender

    IntentSender Documentation

    PendingIntent

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

    基本上,接收PendingIntent 的外部应用程序不知道PendingIntent 包装的 Intent 的内容,但是当满足某些条件时,外部应用程序应该将 Intent 发送回主应用程序。

    PendingIntent Documentation

    【讨论】:

    • 您的答案似乎只是文档的某些部分。因此没有多大用处。你能再澄清一点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 2012-04-01
    • 2012-09-04
    • 2015-03-31
    相关资源
    最近更新 更多