目录
标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没有先后顺序。效率比较高,但是不能被截断。
BriadCast Receiver(广播接收者)
BriadCastReceiver是什么?
BriadCastReceiver是Android四大组件之一,必须在清单文件(androidManifest.xml)文件中进行注册
是组件之间传播数据(intent)的一种机制
APP哪些地方用到了广播
电话
短信
电量
WIFI是否连接
消息弹窗
重点:Android中出现的第一个错误
在广播组件中进行耗时操作,就会报 :application no reponse(ANR)
广播接收者一共有两种,分别是:标准广播和有序广播
标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没有先后顺序。效率比较高,但是不能被截断。
标准广播又分为静态注册和动态注册
静态注册
创建广播接收器(可以使用快捷方式)
注册广播:静态注册需要在清单文件中注册由于是快捷方式创建的广播接收器,注册会自动完成。所有的静态广播都是在application标签内的receiver标签里注册的
<receiver
android:name=".MyBroadReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
//添加需要监听的广播值
<action android:name="com.example.broadcasttest.MY_BROADCAST" />
</intent-filter>
</receiver>
发送信息给静态注册的广播接受者
动态注册
创建广播接收器,继承BroadcastReceiver,重写父类的onReceive()方法
创建IntentFilter的实例,添加值为想要监听的广播的action
创建广播接收器的实例,调用registerReceiver()方法进行注册
取消注册,动态注册的广播接收器需要取消注册
声明权限:在AndroidManifest.xml文件中加入权限
myDynamicReceiver=new MyDynamicReceiver();
//注册动态广播接收者
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("shy");
registerReceiver(myDynamicReceiver,intentFilter);
class MyDynamicReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i("动态广播接收者", "onReceive: "+intent.getStringExtra("shy"));
}
}
为防止内存泄漏需要在onDestory中进行反注册
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myDynamicReceiver);
}
发送信息给动态注册的广播接受者