我正在尝试从 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/