Android四大组件之广播接收者

首先定义java类继承BroadcastReceiver,然后在清单文件中定义receiver类,定义name属性,指定广播接收者java类的全类名。

在intent-filter的节点中,指定action子节点,action的值必须跟要接受的广播中的action匹配。只有当action匹配了我们才能接受这条广播,

即便广播接收者所在进程已经被关闭,当系统发出的广播中的action跟该广播接收者的action匹配时,系统会启动该广播接收者所在的进程,
并把广播发给该广播接收者。

事例代码如下:

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {

    }
<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter android:priority="1000">
        <action android:name="" />
    </intent-filter>
</receiver>
android:priority="1000"代表接收者的优先级。值为-1000到1000。

BroadcastReceiver中有一些方法来供我们操纵。

abortBroadcast();//阻止其他广播接收者收到这条广播
你也可以通过intent.getAction()来获取接受到的广播action。

发送自定义广播
我们需要自定义一个action在intent上,然后通过
sendBroadcast()发送。代码如下:
Intent intent = new Intent();
intent.setAction("com.test.one");
sendBroadcast(intent);
记得在AndroidManifest.xml中的receiver配置action
广播的分类分为无序广播和有序广播。
无序广播:所有与广播中的action匹配的广播接收者,都可以收到这条广播,并且是没有先后顺序的,视为同时收到。
有序广播:所有与广播中的action匹配的广播接收者,都可以收到这条广播,但是有先后顺序,按照广播接收者的优先级排序。
如果要发送有序广播,则使用sendOrderedBroadcast();方法来发送。
android四大组件中除了广播接收者,其他组件必须在Manifest配置文件中
配置,而广播接收者可以在Manifest中配置,也可以在代码中注册配置。
android中有一些特殊的广播接收者必须在代码中配置,在清单文件中注册是无效的。比如:屏幕锁屏和解锁,电量改变,
代码中注册广播接收者代码如下:
MyReceiver myReceiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("action");
//注册
registerReceiver(myReceiver, filter);
//解除注册
unregisterReceiver(myReceiver);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值