2011-02-09 60 views
4

当我尝试从接收方的onReceive()绑定到本地服务时,我在驱动定制的API之前收到错误消息。从BroadcastReceiver驱动服务API

“IntentReceiver组件不能够结合服务”

什么是得到一个数据块从服务,同时在广播reciever的最佳途径。

非常感谢。

P.S.我需要同步获得答案,即我等待服务的答案,因此可能无法回拨。

回答

4

什么是在广播接收器中从服务获取数据的最佳方式。

如果BroadcastReceiver从其他的东西(例如,一个活动)创建并设置了registerReceiver(),那么“别的东西”是什么应该被绑定到服务,做的工作。

如果BroadcastReceiver是在清单中注册的组件,那么您需要重新考虑您尝试解决任何问题的方法。这些类型的BroadcastReceivers不能绑定到服务上,也不能花太多时间在工作上。如果BroadcastReceiver不能在小于10ms的时间内完成工作,它应该通过startService()将控制委托给服务。该服务可以在后台线程上完成该工作。

P.S.我需要同步得到答案,即我等待服务答案

请参阅上文。

+0

嗨,这是后者。疯狂的事情是,我只是将服务作为一种工具,用于长时间收听信号强度,并设置一个我希望通过(绑定)API访问的成员数据变量。我在应用程序中没有任何活动,因此没有其他任何事情可以将侦听器关闭。 – SCG

+0

@SCG:那么“BroadcastReceiver”有什么意义呢? – CommonsWare

+0

BroadcastReceiver基本上是整个应用程序 - 它嗅出呼入状态变化并拦截呼出请求。就在这些传出请求离开手机之前,我想检查信号强度“内联”。要做到这一点,我们已经确定,我需要一个服务来保存我需要记住最后一个信号强度值的监听器的生命周期。当我在onReceive()中执行传出调用中的代码时,我需要该值以供我使用。希望这是有道理的。 – SCG