android广播机制
【1】动态注册广播
所谓的动态注册广播其实就是在onCreate方法中注册广播,其相对于静态注册广播的优点就是能够自由的控制注册与注销,还有就是动态注册的广播和activity是绑定的,activity关闭后,注册的广播也就失效了
~注册广播的步骤:
根据api可以看到registerReceiver方法接收两个参数:
所以就先去获取BroadcastReceiver和IntentFilter的实例,然后传入即可。
~1.获取BroadcastReceiver实例
MyReceiver receiver = new MyReceiver();//class MyReceiver extends BroadcastReceiver
~2.获取IntentFilter实例
IntentFilter filter = new IntentFilter();
filter.addAction("广播的值(根据自己的需求写入相应的值)");
~3.将获取到的实例传入registerReceiver方法中
registerReceiver(receiver,filter);
~4.最后别忘记动态注册的广播需要注销才行
@Override
protected void onDestroy() {
unregisterReceiver(receiver);
super.onDestroy();
}
【2】静态注册广播
~1.新建一个广播接收器(当前项目的包名—>New—>Other—>Broadcast Receiver)
public class MySecondReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
/*
* 根据需求写入相应的逻辑
* */
}
~2.在AndroidMainfest.xml中注册之后就可以使用了
<receiver
android:name=".MySecondReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="要接收的广播的值"/>
</intent-filter>
</receiver>
【3】自己发送广播
~发送广播很简单,有一点类似于使用intent 给其他activity传递数据。只不过intent传递数据使用的是putExtra()等一系列的方法,而发送广播可以把它当成传递了一个action参数
Intent intent = new Intent();
intent.setAction("xxxxxx");
sendBroadcast(intent);