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()
,等等,非常感谢您