四大组件之广播接收者BroadcastReceiver

新建广播接收器

需要新建一个类继承类BroadcastReceiver,并且重写其中的方法onReceive(),不要在这个方法中添加过多的逻辑或者进行任何耗时的操作,因为在广播接收者中是不允许开启线程的。

当接收到指定的广播时就会执行onReceive()方法中的内容。

注册广播接收器可以动态也可以静态。

这里简单介绍一下静态:

在AndroidManifest.xml的<application></application>中间写入<receiver></receiver>,在这个标签中写入你要注册的接收器和要接收的广播

<receiver android:name=".MyBroadcastReceiver">
                <intent-filter >
                    <action android:name="你要接收的广播" />
                </intent-filter>
            </receiver>

MyBroadcastReceiver为接收器,也就是创建的类。action中的name中写的是要接收的广播,可以是系统广播,也可以是自定义的广播。

有时接收广播是需要权限的,这个需要注意。

新建广播

广播有两种:标准广播和有序广播

标准广播就是任何注册接收此广播的程序都可以接收到,有序广播就是按照优先级进行接收,并且优先级高的可以通过abortBroadcast(),截断广播,后面的接收器将会收不到广播。

广播也是用Intent来写的比如

 Intent intent=new Intent("广播名");
 sentBroadcast(intent);

上面的广播是sentBroadcast()发出,这个发出的就是标准广播。使用sentOrderedBroadcast()发出的是有序广播。

当发出的是有序广播时,注册的内容就需要添加优先级priority

 <receiver android:name=".MyBroadcastReceiver">
                 <intent-filter  android:priority="100" >
                     <action android:name="你要接收的广播" />
                 </intent-filter>
             </receiver>

本地广播

上面发出的广播都是系统全局广播,很容易出现安全性问题。使用本地广播可以简单解决安全性问题

主要使用一个LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播接收器的方法

上面只是简单介绍一下广播接收者,如果有什么问题可以在评论区留言,谢谢!

04-15 11:06