如果我有一个名为MyService的服务,看起来像这样,服务的BroadcastReceiver会从“sendData”方法收到自己的广播吗?
我基本上要问的是,如果我使用与广播接收器相同的IntentFilter Constants.SERVICE
作为Intent Action来向我的活动发送广播,那么会出现问题吗?
MyService.java
public class PlayerService extends Service {
private FFmpegMediaPlayer mp;
private BroadcastReceiver receiver;
@Override
public void onCreate() {
super.onCreate();
...
registerReceiver(receiver, new IntentFilter(Constants.SERVICE));
...
}
...
public void sendData() {
Intent intent = new Intent(Constants.SERVICE);
sendBroadcast(intent);
}
}
答案 0 :(得分:1)
由于 Adil Soomro 和 rupesh jain 提到它显然不会有问题,因为该服务无法接收自己的广播。
实际上在尝试之后我发现如果BroadcastReceiver
与广播意图具有相同的IntentFilter
,该服务可以接收自己的广播。
答案 1 :(得分:0)
你当然可以试试这个,但似乎完全没必要。请记住,您提议的不是服务接收自己的广播(服务不接收任何广播),而是您在服务中定义广播接收,这是接收广播的内容。
如果您尝试在组件之间进行通信,最好使用LocalBroadcastManager或某种事件总线,因为您的广播将发送给所有可能正在收听的应用,而不仅仅是这个应用。