Android 服务中未接收广播的广播接收器

Android 服务中未接收广播的广播接收器,android,broadcastreceiver,android-service,Android,Broadcastreceiver,Android Service,我有一个应用程序,其中用户更新活动中的某些变量,该活动使用广播接收器将新变量传递给IntentService。但是,IntentService中的BroadcastReceiver似乎没有接收广播。这是服务中用于创建广播接收器的代码 protected class UpdateReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent){

我有一个应用程序,其中用户更新活动中的某些变量,该活动使用广播接收器将新变量传递给IntentService。但是,IntentService中的BroadcastReceiver似乎没有接收广播。这是服务中用于创建广播接收器的代码

protected class UpdateReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent){
        Log.d("receiver", "Got message: ");
        //state=3;
        //Toast.makeText(context, "got it", Toast.LENGTH_SHORT).show();
    }
};
下面是在onHandle()函数中注册接收器的代码

最后,这是从活动中发送广播的代码

Intent broadcastIntent = new Intent();
broadcastIntent.setAction("updates");
HomePageActivity.this.sendBroadcast(broadcastIntent);
Log.d("sender", "send msg");
当我把接收器放在与广播部分相同的活动中时,它就工作了,但当我把它放在IntentService中时就不工作了。救命啊

另一方面,我尝试在这个项目中使用LocalBroadcastManager,因为广播都是本地的,但是eclipse似乎无法导入兼容性类。我已经使用Android SDK管理器安装了它。我有什么地方做错了吗

protected class UpdateReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent){
        Log.d("receiver", "Got message: ");
        //state=3;
        //Toast.makeText(context, "got it", Toast.LENGTH_SHORT).show();
    }
};
在onCreate()方法中或相关的位置

mReceiver = new UpdateReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("<your receivers intent goes here>");
this.registerReceiver(mReceiver, filter);
mReceiver=newupdatereceiver();
IntentFilter=newintentfilter();
filter.addAction(“”);
此。注册表接收程序(mReceiver,过滤器);
现在,您应该能够发送一个广播并将其拾取

Intent intent = new Intent("<your receivers intent goes here>");
// Add what you want to add to the intent right here.
<context-handle>.sendBroadcast(intent);
Intent Intent=新的Intent(“”);
//在此处添加您想要添加到意图中的内容。
.发送广播(意图);
此活动使用BroadcastReceiver将新变量传递给IntentService

这毫无意义。使用
startService()
IntentService
发送命令。而
IntentService
不应具有
BroadcastReceiver
,因为
IntentService
将在
onhandleContent()
完成后立即销毁,因此将永远不会接收广播

我已经尝试在这个项目中使用LocalBroadcastManager,因为广播都是本地的,但是eclipse似乎无法导入兼容性类

::耸耸肩:


使用使用
LocalBroadcastManager
的Eclipse项目文件。在创建项目时,我没有遇到任何特定的Eclipse问题。

您是否在清单中声明了接收器?好的,当我将接收器与广播部分放在同一活动中并在清单中注册时,接收器接收到,但它也会使程序崩溃。这里的注释似乎暗示您要么在清单中注册,要么在e程序中注册,但不是两者都注册,android.content.IntentFilter)IntentService注册了一个sensorlistener,所以服务似乎从未停止过。@TanJingYuan:不,你只是在泄漏侦听器,这也很糟糕
IntentService
不适合与侦听器一起使用。请尝试,它不起作用。也许我应该实现为服务而不是意图服务。@TanJingYuan它应该工作,我经常使用它。您在清单中定义了什么?确保为接收器设置了android:enabled=“true”。你能发布你的清单吗?你是对的,它可能会起作用,但根据下面的另一个答案,问题似乎不在于接收者,而在于我将我的服务实现为一个IntentService,而不是一个服务。@TanJingYuan你是否尝试过在清单中声明接收者,系统也可以实例化它吗?
Intent intent = new Intent("<your receivers intent goes here>");
// Add what you want to add to the intent right here.
<context-handle>.sendBroadcast(intent);