BroadcastReceiver peekService() 返回 null
Posted
技术标签:
【中文标题】BroadcastReceiver peekService() 返回 null【英文标题】:BroadcastReceiver peekService() returning null 【发布时间】:2011-03-14 16:23:31 【问题描述】:我正在尝试从Service
获取IBinder
,以便在收到系统通知时与服务通信。从我的onReceive()
方法我调用peekService()
,但我得到一个空引用。
我在这里阅读了来自 Dianne 和 Mark 的https://groups.google.com/forum/#!topic/android-developers/yiq_XIzFoS4 的一些答案,他们建议使用startService
,但我的服务有一个接口,我认为peekService
应该可以工作,但它没有。
我是否需要权限才能从 BroadcastReceiver
查看服务?我需要别的东西吗?我确定服务正在运行,但我无法从中获取活页夹。
【问题讨论】:
【参考方案1】:如果通信是 BroadcastReceiver -> Service...,那么您将使用 startService(),通过将数据添加到 Intent 的 Bundle 来传递数据。
我怀疑您的 BroadcastReceiver 需要向服务(或其 IBinder)提问。在这种情况下,您使用 peekService。 peekService 的问题在于,如果服务未启动且未绑定,则返回 null。
答案是在收到您的广播之前确保服务已启动并已绑定。您如何实现这一点会有所不同,具体取决于您的具体应用。
如果您正在查看的服务是您的应用程序的一部分(相同的 APK),那么您不需要特殊权限。
【讨论】:
以上是关于BroadcastReceiver peekService() 返回 null的主要内容,如果未能解决你的问题,请参考以下文章
为啥 BroadcastReceiver 需要一个默认构造函数?
Android中BroadcastReceiver组件具体解释