Broadcast的类型

两种发送方法

1.无序广播

      对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的 接收动作。      

      消息同时到达,不能延迟

       主要代码:
      Intent intent = new Intent(“myBroadcastReceiver”);
      intent.putExtra(“msg”, “这是MainActivity页面发送的广播—-》》”);
      sendBroadcast(intent);

2. 有序广播

      有序广播比较特殊,它每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播。可以在广播注册时使用intent-filter里面的android: priority=”xxx”去解决或在java代码中用setPriority(xxx)来设置。消息按照优先级来传递,可以延迟,并且可以拦截

主要代码:
Intent intent = new Intent(“myBroadcastReceiver”);
intent.putExtra(“msg”, “这是MainActivity页面发送的广播—-》》”);

sendOrderedBroadcast(Intent,permission);// permission可以为null,表明不需要额外的权限,如果不为空,所有接收方必须有这个权限。如果是该自定义的广播接收者发送广播,第二个参数一般为null

 

       拦截方法 abortBroadcast();
       广播优先级,应该是有序广播才能有效果;
       广播最大的作用 Activity与Service进行通信 ,通知所有的界面。

 

对比有序广播和无序广播:
       发现他们的使用方式没什么不同,只是有序广播比无序广播要多一个参数;
       但是它们的作用是非常不同的,无序广播是不可被截断的,每一个广播接收者都可以收到这个无序广播发送的广播信息;而无序广播时候根据优先级数的大小来判断谁先接收到广播信息,并且可以选择是否截断这个广播信息,如果在某个广播接收者截断信息,在它的优先级之下的广播接收者都接收不到广播信息。有序广播才能拦截。

 

http://blog.csdn.net/wenzhi20102321/article/details/53127914

http://www.cnblogs.com/lwbqqyumidi/p/4168017.html

http://ju.outofmemory.cn/entry/106978

使用 package manager,可以在运行时 enable 或者 disable 一个静态注册的 receiver

ComponentName receiver = new ComponentName(context, myReceiver.class);

PackageManager pm = context.getPackageManager();

pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

posted @ 2017-05-10 14:51  庚拓天下  阅读(431)  评论(0编辑  收藏  举报