服务可以接收自己的广播吗?

时间:2016-02-08 18:27:16

标签: android android-intent broadcastreceiver

如果我有一个名为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);
    }
}

2 个答案:

答案 0 :(得分:1)

由于 Adil Soomro rupesh jain 提到它显然不会有问题,因为该服务无法接收自己的广播。

修改

实际上在尝试之后我发现如果BroadcastReceiver与广播意图具有相同的IntentFilter,该服务可以接收自己的广播。

答案 1 :(得分:0)

你当然可以试试这个,但似乎完全没必要。请记住,您提议的不是服务接收自己的广播(服务不接收任何广播),而是您在服务中定义广播接收,这是接收广播的内容。

如果您尝试在组件之间进行通信,最好使用LocalBroadcastManager或某种事件总线,因为您的广播将发送给所有可能正在收听的应用,而不仅仅是这个应用。