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 是不是只监听变化?

为啥 BroadcastReceiver 需要一个默认构造函数?

Android中BroadcastReceiver组件具体解释

Android_组件_BroadcastReceiver基础

转Android BroadcastReceiver介绍

赵雅智_BroadcastReceiver