BroadcastReceiver记录
2019-11-04 本文已影响0人
陽光亽活力
一、什么是BroadcastReceiver
BroadcastReceiver翻译过来为“广播接收器”,顾名思义它的作用就是用来发送广播和接受广播的,在Android 中可以理解为发送消息,接受消息。
二、BroadcastReceiver的用途
Android四大组件之一,用于不同组件或者多线程之间的通信
三、BroadcastReceiver的分类
- 有序广播:
按照优先级,一级一级的向下传递,接收者可以修改广播数据,也可以终止广播事件。 - 无序广播
所有的接收者都会接收事件,不可以被拦截,不可以被修改。
四、BroadcastReceiver的使用
- 定义一个广播接收器
public class myreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//在这里写上相关的处理代码,一般来说,不要此添加过多的逻辑或者是进行任何的耗时操作
//因为广播接收器中是不允许开启多线程的,过久的操作就会出现报错
//因此广播接收器更多的是扮演一种打开程序其他组件的角色,比如创建一条状态栏通知,或者启动某个服务
}
}
- 对广播进行注册
注册的方式有两种,一种是动态注册(使用java代码),另外一种则是静态注册(在AndroidMainFest文件中定义)
动态注册的步骤:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recevier = new myreceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
//当网络发生变化的时候,系统广播会发出值为android.net.conn.CONNECTIVITY_CHANGE这样的一条广播
registerReceiver(recevier,intentFilter);
}
静态注册步骤
<receiver android:name=".myreceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
//开机完成后系统广播发出的一条值为android.intent.action.BOOT_COMPLETED的广播
</intent-filter>
</receiver>
- 发送广播
Intent intent = new Intent();
intent.setAction("com.example.mymessage");
//Intent intent = new Intent("com,example.mymessage");
//也可以像注释这样写
//sendBroadcast(intent);//发送标准广播
sendOrderedBroadcast(intent,null);//发送有序广播