BroadcastReceiver笔记

         起因:Android系统的四大组件还有一种BroadcastReceiver ,其是全局的监听器,用于监听系统全局的广播消息。由于它是全局监听器,因此可以非常方便地实现系统中不同组件之间的通信。

        BroadcastReceiver用于接收程序所发出的Brooadcast  Intent,启动步骤相同,两步:

       1.创建需要启动的 BroadcastReceiver的Intent 。

       2.调用Context的sendBroadcast()或者 sendOrderedBroadcast()方法来启动指定的BroadcastReceiver。注意,当应用程序发出一个Broadcast·后,所有匹配该Intent的BroadcastReceiver都有可能被启动,此时需要sendOrderedBroadcast()方法发送广播,并在实现广播基础之上,配置Intent的时候,设置其优先级。

       3.Broadcast属于系统级的监听器,它拥有自己的进程,只要存在与之匹配的Intent被广播出来,Broadcast总会被激活。

       4.实现BroadcastReceiver很简单,定义一个类继承BroadcastReceiver,只要实现 onReceive()方法即可  ,一旦实现了BroadcastReceiver,接下来指定BroadcastReceiver能匹配的Intent两种方式 

      @1、在AndroidManifest.xml文件中配置

            <receiver android:name=”.IncomingSmsReceiver”>

               <intent-filter>

                        <action android:name=”android.provider.Telephony.SMS_RECEIVED”/>

              <intent-filter>

        @2、IntentFilter filter=new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”)

                  IncomingSMSReceiver receiver =new IncomingSmsReceiver();           //此类继承BroadcastReceiver,并实现onReceive()方法

                  registerReceiver(receiver,filter)

      5.BroadReceiver生命周期很短,耗时的操作绝不能在BroadcastReceiver内部完成,因为其执行10秒后如果无法完成任务,Android会认为该程序无响应,如果是耗时的操作,一般通过Intent启动一个Sercice来完成该操作,不应考虑新线程去完成耗时的操作。

      6、sendBroadcast()  和  sendOrderedBroadcast() 的区别  

                    @1、NormalBroadcast普通广播是完全异步的,可以在同一时刻被所有的接受者接收到,消息传递效率比较高,但缺点是接受者不能将处理结果传递给下一个接受者,并且无法终止Broadcast的传播。

                    @2、 Ordered Broadcast ,其是按预先声明的预先优先级依次接收Broadcast,如A的级别高于B,B的级别高于C,那么,Broadcast先传给A,再传给B,最后传给C 。优先级别声明在   《Intent-filter》元素的android:prority 属性中,数越大,优先级别越高,范围-1000~1000,Ordered Broadcast接收者可以终止Broadcast  Intent的传播,一旦使用abortBroadcast () 终止,则后面的Broadcast无法接收到Broadcast  , 还有此Broadcast 可以传递数据,其可以将数据经过处理后传递给下一个接收者,如:A得到Broadcast后,可以往它的结果对象中存入数据 ,当Broadcast传给B时,B可以从A的结果对象中得到A存入的数据。

        7、接收系统的广播消息,除了接收用户发送的广播之外,BroadcastReceiver还有一个重要的用途:接收系统广播,如果应用需要在系统特定时刻执行某些操作,就可以通过监听系统广播来实现。

    原文作者:ye1714505125
    原文地址: https://blog.csdn.net/ye1714505125/article/details/50240603
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞