BroadCast小结

时间:2023-03-09 06:55:52
BroadCast小结

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,所以只能接受现实了。。。。。。。。