BroadCast小结

戏子无情 提交于 2020-01-24 05:20:43

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

 

 

     
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!