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

Can a service receive its own broadcasts?

如果我有一个名为 MyService 的服务,它看起来像这样,该服务的 BroadcastReceiver 是否会从 "sendData" 方法接收自己的广播??

我主要想问的是,如果我使用广播接收器的相同 IntentFilter Constants.SERVICE 作为 Intent Action 向我的 activity 发送广播,是否会出现问题?

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);
    }
}

正如 Adil Soomrorupesh jain 提到的那样,这显然不会成为问题,因为该服务无法接收自己的广播。

编辑

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

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

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