android中广播的理解

来源:互联网 发布:数控铣床编程100例图 编辑:程序博客网 时间:2024/06/05 06:36
广播(Broadcast)
一,简介
Broadcast是android中四大组件之一,它经常不用,在推送中会用到。它属于一种流氓组件,经常播报一些内容,会泄露用户的信息,所以在开发中尽量少用。
在完成一些操作之后,会发送广播,比如说发出一条短信或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。之所以叫广播,就是因为它只负责说,不管你听不听,也就是不管你接收方如何处理。
广播机制最大的特点就是发送方并不关心接收方是否收到数据,也不关心接收方是如何处理数据的。
其实广播在我们的身边时时存在,比如智能拦截骚扰短信和电话。
二,广播机制的三要素
1,广播(Broadcast):用于发送广播
2,广播接收器(BroadcasReceiver):用于接收广播
3,意图内容(Intent):用于保存广播相关信息的媒介
三,广播的生命周期
广播接收器仅在它执行这个方法时处于活跃状态,当onReceive()返回后,它即为失活状态。
四,广播的类型
广播被分为两种不同的类型,普通广播和有序广播
普通广播是完全异步的,可以在同一时刻被所有广播接收者收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播。
有序广播恰恰弥补了普通广播的这个缺陷,它是按照接收者声明的优先级别被广播接收者一级一级接受广播的。
 <receiver android:name="com.saiermeng.govandpeople.ShengGovReceiver" >
            <intent-filter android:priority="1000" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.ShiGovReceiver" >
            <intent-filter android:priority="800" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.XianGovReceiver" >
            <intent-filter android:priority="600" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.XiangGovReceiver" >
            <intent-filter android:priority="400" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.saiermeng.govandpeople.NongMinReceiver" >
            <intent-filter android:priority="-1000" >
                <action android:name="com.saiermeng.redheaddoc.BTNM" />
            </intent-filter>
        </receiver>
数越大优先级别越高,取值范围是-1000到1000

五,注册BroadcasReceiver
BroadcasReceiver用于监听被广播的事件(intent)为了达到这个目的,BroadcasReceiver必须在清单 文件中进行注册,
注册的方法有以下两种:
1,静态注册:
静态注册方式是在清单文件的application里面定义receiver并设置要接收的action
静态注册方式的特点:不管该应用程序是否处于活跃状态,都会进行监听。
 <receiver android:name="MyReceiver" >
  <intent-filter>
                <action android:name="MyReceiver_Action" />
            </intent-filter>
</receive>
2,动态注册:
动态注册方式在activity里面调用函数来注册,和静态的内容差不多。
动态注册方式特点:在代码中进行注册后,当应用程序关闭后,就不再进行监听。
MyReceiver receiver=new MyReceiver();
IntentFilter filter=new IntentFilter("MyReceiver_Action");
registerReceiver(receiver,filter);//注册广播接收器
与intent的显示意图和隐式意图一样。
注:
1,一般在onStart中注册BroadcasReceiver,在onStop中取消BroadcasReceiver。
2,一个BroadcasReceiver对象只有在被对象调用onReceive(Context,Intent)时才有效,当从该函数返回后,该对象就是无效的了,结束生命周期。

0 0
原创粉丝点击