Android中Broadcast Receiver的两种注册方法和区别

broadcast receiver: 用以监听系统或用户程序broadcastIntent,它本质上是系统的一种全局监听器(与onXxxxListener相似但不同),只要存在与之匹配的Intent被广播出来,BroadcastReceiver就会被激活,所以BroadcastReceiver与具有完整生命周期的ActivityService不同(广播接收者只有一个生命周期回调函数onReceive)。BroadcastReceiver的工作流程是这样的:系统程序或用户程序广播了某Intent之后,就会被与该Intent匹配的广播就收者(这个广播接收者可以是用户自己通过扩展BroadcastReceiver得到的Receiver)所接收,接着就会执行onReceive(Context  context, Intent intent)方法中的代码,在这里可以完成自己要实现的功能。

所以,为使Receiver与广播的某Intent相匹配,则需要注册该Receiver,注册一个广播接收者Receiver方法有两种。

第一种是在android的manifest中静态注册:

<receiver android: name =“包名.自己扩展的广播接收者名”>

                <intent-filter>

                            <!----和Intent中的action对应--->

                            <actionandroid:name=“com.forrest.action.mybroadcast”/>

                </intent-filter>

</receiver>

第二种是在代码中动态注册:

IntentFilter filter = new IntentFilter(“com.forrest.action.mybroadcast”);//和广播中Intent的action对应;

MyBroadcastReceiver br= newMyBroadcastReceiver();

registerReceiver(br, filter);  // registerReceiver(BroadcastReceiver receiver, IntentFilter filter);

但此方法需要解除所注册的广播:

在onStop()或onDestroy()方法中添加unRegisterReceiver(br);

两种注册类型的区别是:

     1)第一种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

     2)第二种不是常驻型广播,也就是说广播跟随程序的生命周期。

注:除了用于过滤广播的IntentFilter可以在代码中动态创建外,其他组件的IntentFilter必须在AndroidManifest.xml中注册,如:ActivityService

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值