android中的广播 BroadcastReceiver的简单运用

android中的广播 BroadcastReceiver

广播(Broadcast)是一种广泛运用的在应用程序之间传输信息的机制
广播(Broadcast) - 用于发送广播;
广播接收器(BroadcastReceiver) - 用于接收广播;
意图(Intent)-用于保存广播相关信息的媒介。

1、静态注册系统广播和静态注册自定义广播

系统广播:
监听系统开机广播权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
//通过android:name来指定MyBroadcastReceive广播接收器接收系统开机广播
<receiver android:name=".MyBroadcastReceive">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter> </receiver>
使用:
定义MyBroadcastReceive类继承BroadcastReceiver并重写onReceive方法:
注册自定义广播:
<action android:name="zi.ding.yi" />

广播发送:

中:android:name可以自定义,只需要在发送广播时设置:
`Intent intent = new Intent();
intent.setAction(“zi.ding.yi”);
intent.putExtra(“name”, “dxy”);

//sendOrderedBroadcast(intent,null);//发送有序广播
//sendBroadcast(intent);//发送普通广播
LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intent);//发送本地广播
这样就可以被注册的广播接收器接收了

2、动态注册自定义广播:

1、创建广播接收器Receiver继承BroadcastReceiver,并实现onReceive方法,在onReceive方法中接收传入值。
2、创建意图过滤器,
IntentFilter filter = new IntentFilter("ip");

实例化广播接收器、:receiver = new Receiver();

并注册广播:LocalBroadcastManager.getInstance(this).registerReceiver(receiver,filter);//注册本地广播 //registerReceiver(receiver,filter);//注册普通广播
3、发送广播:
Intent intent = new Intent("ip");//构建出了一 个 Intent 对象,并把要发送的广播的值传入
intent.putExtra("data",ipBean);
LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intent);//本地广播
4、在广播接收器onReceive方法中:
intent.getSerializableExtra(“data”)获取数据
动态注册系统广播时也一样,只需在创建意图过滤器时传入的值更改为静态注册时“action android:name”的值即可,不必有发送广播过程,只需接收即可

注:动态注册的广播都需要取消,一般会在onDestroy方法中进行注销
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);

3、普通广播、有序广播、本地广播

普通广播:广播一经发送,即使在在组件中注销,别的注册了该广播的接收器依旧可以收到,不能截取和终止
有序广播:发送:sendOrderedBroadcast(intent,null);
在接收器onReceive()方法中调用abortBroadcast()后,广播就被结束,其他优先级在该接收器之后的将不能收到该广播priority优先级:数字越高优先级越高
本地广播:广播事件的发送和接收都在本应用,不影响其他应用也不受其他应用影响,只能被动态注册,不能静态注册,主要用法都在LocalBroadcastManager类中

发布了43 篇原创文章 · 获赞 22 · 访问量 5932

猜你喜欢

转载自blog.csdn.net/qq_41466437/article/details/103058600