android - BroadcastReceiver peekService() 返回 null

标签 android

我正在尝试从 Service 获取 IBinder,以便在收到来自系统的通知时与该服务进行通信。从我的 onReceive() 方法我正在调用 peekService() 但我得到一个空引用。

我在这里阅读了一些答案 https://groups.google.com/forum/#!topic/android-developers/yiq_XIzFoS4来自 Dianne 和 Mark,他们推荐使用 startService 但我的服务有一个接口(interface),我认为 peekService 应该可以工作,但它没有。

我是否需要权限才能从 BroadcastReceiver 查看服务?我还需要其他东西吗?我确定该服务正在运行,但我无法从中获取 Binder 。

最佳答案

如果通信是 BroadcastReceiver -> Service... 那么您将使用 startService(),通过将数据添加到 Intent 的 Bundle 来传递数据。

我怀疑您的 BroadcastReceiver 需要向服务(或其 IBinder)提问。在这种情况下,您使用 peekService。 peekService 的问题在于,如果服务未启动且未绑定(bind),它会返回 null。

答案是确保在收到您的广播之前服务已启动并已绑定(bind)。实现方式会有所不同,具体取决于您的具体应用。

如果您正在查看的服务是您应用程序的一部分(同一个 APK),那么您不需要特殊权限。

关于android - BroadcastReceiver peekService() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5301405/

相关文章:

java - 动画淡入淡出不起作用

javascript - android webview以编程方式点击html链接

java - Java 的 REST 和 HTTP API 客户端,如 RestSharp(http ://restsharp. org/)

Java Lang 空指针异常,但我不明白为什么?

android - 显示质量图像 - 位图大小超出 VM 预算错误

Android:高级渐变样式

android - 为什么在构建APK后我的EXPO应用程序崩溃

android - 从编辑文本字符串中删除空格

android - 以编程方式创建有光泽的 3d 按钮

java - 在 onActivityResult 中设置的列表,数据不粘