BroadcastReceiver peekService()返回null

时间:2011-03-14 16:23:32

标签: android

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

我在Dianne和Mark看到了https://groups.google.com/forum/#!topic/android-developers/yiq_XIzFoS4的一些答案,他们建议使用startService,但我的服务有一个界面,我认为peekService应该可行,但它不会

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

1 个答案:

答案 0 :(得分:2)

如果通信是BroadcastReceiver - >服务...然后你将使用startService(),通过将数据添加到Intent的Bundle来传递数据。

我怀疑您的BroadcastReceiver需要向服务(或其IBinder)询问一个问题。在这种情况下,您使用peekService。与peekService擦除的是,如果服务未启动并绑定到它,则返回null。

答案是在收到广播之前确保服务已启动并已受到约束。您如何实现这一点将取决于您的具体应用程序。

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