1、BroadCast注册方式
静态注册:即在AndroidManifest.xml 文件中定义
<receiver android:name=".BroadCastB"> <intent-filter> <action android:name="android.intent.action.AIRPLANE_MODE"></action> </intent-filter> </receiver>
动态注册:
IntentFilter filter=new IntentFilter("com.lyy.broadcast"); filter.setPriority(1); registerReceiver(new BroadCastC(),filter);
2、广播的发送方式
普通广播:sendBroadCast();
有序广播:sendOrderBroadCast(); 根据IntentFilter定义的优先级发送,优先级越高,越先收到广播
传递数据:在广播的传递过程中,可以使用 setResultData() 设置要传递的数据,并在下一个广播中使用 getResultData()获取值。。
本地广播:LocalBroadCast,应用内广播。为此,Android v4兼容包中给出了封装好的LocalBroadcastManager类,用于统一处理App应用内的广播问题,使用方式上与通常的全局广播几乎相同,只是注册/取消注册广播接收器和发送广播时将主调context变成了 LocalBroadcastManager的单一实例。通过这种方式发送的广播,只能通过LocalBroadcastManager动态注册的的接收器才能接收得到。
3、接收系统广播
当接收飞行模式的广播是,发现用动态注册无法接收到,应尽量使用静态注册。但是自从3.1之后,针对那些没有启动的应用,或者被强制停止的应用,就无法接受到广播,但是可以设置flag
FLAG_EXCLUDE_STOPPED_PACKAGES :排除已经停止的应用(默认)
FLAG_INCLUDE_STOPPED_PACKAGES :包括已经停止的应用
由于系统广播无法修改其Intent,所以只能接受现实了。。。。。。。。
来源:https://www.cnblogs.com/lyysz/p/6038416.html