Android 无法将BroadcastReceiver与LocalBroadcastManager一起使用
我有1项活动和1项服务。服务将在活动进入后台时启动,在活动进入前台时停止。当服务停止时,我想通过意图将对象从它发送到活动。这是我的密码 MyActivity.javaAndroid 无法将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
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);
}