Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法将BroadcastReceiver与LocalBroadcastManager一起使用_Android_Broadcastreceiver_Intentfilter_Intentservice_Localbroadcastmanager - Fatal编程技术网

Android 无法将BroadcastReceiver与LocalBroadcastManager一起使用

Android 无法将BroadcastReceiver与LocalBroadcastManager一起使用,android,broadcastreceiver,intentfilter,intentservice,localbroadcastmanager,Android,Broadcastreceiver,Intentfilter,Intentservice,Localbroadcastmanager,我有1项活动和1项服务。服务将在活动进入后台时启动,在活动进入前台时停止。当服务停止时,我想通过意图将对象从它发送到活动。这是我的密码 MyActivity.java private BroadcastReceiver=new BroadcastReceiver(){ @凌驾 公共void onReceive(上下文、意图){ 如果(intent.getAction().equals(ACTION_WITH_RLM)){ //我将在这里获取服务接收的对象 } } }; @凌驾 创建时受保护的vo

我有1项活动1项服务服务将在活动进入后台时启动,在活动进入前台时停止。当服务停止时,我想通过意图将对象从它发送到活动。这是我的密码

MyActivity.java

private BroadcastReceiver=new BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
如果(intent.getAction().equals(ACTION_WITH_RLM)){
//我将在这里获取服务接收的对象
}
}
};
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u record\u lesson\u ins);
localBroadcastManager=localBroadcastManager.getInstance(this);
IntentFilter IntentFilter=新的IntentFilter();
intentFilter.addAction(带有RLM的操作);
localBroadcastManager.registerReceiver(broadcastReceiver,intentFilter);
}
@凌驾
受保护的void onResume(){
super.onResume();
if(intent!=null){
停止服务(意向);
}
}
@凌驾
受保护的void onPause(){
super.onPause();
if(intent!=null){
startService(意向);
}
}
@凌驾
受保护的void onStop(){
super.onStop();
localBroadcastManager.unregisterReceiver(broadcastReceiver);
}
MyService.java

这里的问题是
MyActivity
中的我的
broadcastReceiver
在我的活动出现在前台时无法接收服务意图。我不知道为什么


谢谢。

< P>你应该考虑将你的广播接收器注册表为<代码> OnDeSturyYes()/Cube >而不是<代码> OnStutter()< <代码> < /P> 因为当活动转到后台时,BrodCasterReceiver将被注销


有关详细信息,请查看您的
onReceive()
是否被调用?请尝试从任何其他方法发送广播,而不是
onestroy
:@向导:否,我的onReceive()尚未被调用yet@g4s8:我只想在我的服务停止时发送广播,那么我可以使用哪些方法?P/s:我试图通过startCommand()方法发送广播,但仍然不起作用:(请在回答时提供一些详细信息,这样看起来就不像是评论了,谢谢。提供了解释。
private RecordLessonModel recordLessonModel;

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    //I code sth for handle recordLessonModel object
    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
    Intent intent = new Intent(MyActivity.ACTION_WITH_RLM);
    intent.putExtra(MyActivity.RECORD_MODEL_NAME, Parcels.wrap(recordLessonModel));
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}