Manifest中Activity的intent-filter配置疑问:自定义广播为何能被接收?
问题解答
这种情况是完全正常的,核心原因是Activity的IntentFilter和广播接收器的IntentFilter是两套独立的机制,互不影响:
- Activity的
intent-filter只负责匹配启动Activity的Intent:你的MainActivity配置的android.intent.action.MAIN和android.intent.category.LAUNCHER,只限制了“只有桌面图标点击这类符合规则的Intent才能启动它”,和广播接收逻辑无关。 - 你在Fragment里注册的广播接收器,对应的
IntentFilter是用来匹配广播Intent的:只要广播的Action(也就是你设置的com.example.myapplication.myservice)和接收器的过滤规则一致,就能被正常接收,这套逻辑和Activity的启动规则没有任何关联。
你当前的流程完全符合Android组件交互逻辑:MyService收到消息后发送自定义Action的广播,Fragment里的接收器正好监听了这个Action,所以能成功接收,和MainActivity的配置不存在冲突。
内容的提问来源于stack exchange,提问作者andynewman
相关产品推荐
相关产品推荐

