四大组件之广播接收者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来对广播进行管理,并提供了发送广播和注册广播接收器的方法
上面只是简单介绍一下广播接收者,如果有什么问题可以在评论区留言,谢谢!