Android 悬而未决如何触发意图?

Android 悬而未决如何触发意图?,android,android-intent,android-pendingintent,Android,Android Intent,Android Pendingintent,例如,我们有 PendingIntent pi= PendingIntent.getActivity(context, requestCode, intent, FLAG); 当我们将pi对象传递给其他类或其他应用程序时,我们知道pi中包装的意图稍后将由该类或应用程序触发,对吗 我不明白它是怎么触发的 当我们使用intent手动/立即启动组件时,我们调用与确切组件类型对应的方法(startActivity(intent)、startService(intent),等等),我知道没有像start

例如,我们有

PendingIntent pi= PendingIntent.getActivity(context, requestCode, intent, FLAG);
当我们将
pi
对象传递给其他类或其他应用程序时,我们知道
pi
中包装的意图稍后将由该类或应用程序触发,对吗

我不明白它是怎么触发的

当我们使用intent手动/立即启动组件时,我们调用与确切组件类型对应的方法(
startActivity(intent)、startService(intent)
,等等),我知道没有像
startAnyComponent(intent)这样的方法。

谢谢你的帮助

p.S. 我想,当意图明确时,检查类对象可能是一种简单的方法

    Intent intent = new Intent(context, clazz):
在这种情况下,系统可以检查
clazz.isAssignableFrom(Service.class)
并调用
startService(intent)。


但是对于隐含的意图,我无法意识到发生了什么。

当你得到一个
pendingent
时,你要么调用
getActivity()
getBroadcast()
要么调用
getService()
。创建
pendingent
时,
Intent
的类型包括在
pendingent
中,以便它知道
Intent
是否用于
活动
广播接收器
服务

稍后,当使用
pendingent
时,会调用
pendingent
获取
IntentSender
。要实际发送
Intent
,将调用
IntentSender.sendIntent()
IntentSender
知道如何创建
pendingent
,因此知道是否应该使用
startActivity()
sendBroadcast()
startService()
来正确发送
Intent

注意:


关于您关于如何使用显式
Intent
s工作的假设:这不可行,因为通常实际发送
Intent
的应用程序无法访问您的应用程序代码,因此无法加载您的类,也无法使用
类。isAssignableFrom()
要确定
意图的类型

请让我重新表述一下。我肯定不清楚。你到底在问什么?你是在问最终的
意图
发送者如何知道它是哪种
未决内容
类型,从而知道使用哪种
开始*()
/
发送*()
方法?@MikeM。是的,我的问题是,当你调用一个特定的方法时,返回的
pendingent
是为这个特定的组件类型配置的。也就是说,它在内部设置了一个标志,在触发
Intent
之前进行检查。例如,调用
getActivity()
getBroadcast()
,等等,非常感谢您