您的位置:首页 > 其它

如何在应用中发送自己定义的广播Broadcast

2015-06-12 16:05 162 查看
广播是一种可以跨进程的通信方式。

1、对广播的理解可以类比上学时听到的校园大喇叭。只要喇叭一响,在校园中的我们就能接受到喇叭传来的信息。

2、android中广播可以大致分为两类:标准广播和有序广播

首先,广播都是通过Intent来发送的,且应该有相应的***来执行接收后的动作。为了将广播和***做到一一对应,需要定义具有唯一性的action字符串。

标准广播的发送:

这种广播最简单的发送方式就是定义一个Intent,传入相应的动作,再发送出去就可以了。

例如:Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");

sendBroadcast(intent);

另外,我们还可以在Intent中携带一些数据传递给广播***。

有序广播的发送:

只要把上面的sendBroadcast()函数改为sendOrderedBroadcast(Intent, String)发送的就是有序广播了(String是一个与权限相关的字符串,一般使用方法是sendOrderedBroadcast(Intent,
null))。

有序体现在哪儿呢?

体现在注册是广播***的Priority属性。

priority范围:Integer.MIN~Integer.MAX,
系统注册Receiver的IntentFIlter的priority的范围-1000~1000。

也就是说***的优先级决定了他们接受到这个广播的先后顺序。数值越大优先级就越高。

而且,***在其对应的onReceive()函数中可以使用abortBroadcast();函数来截断广播的传递。使得其后的广播***无法获取到这个广播。

本地广播的发送:

来源:

说到本地广播,它的出现主要是为了解决广播的安全性问题。普通的广播,不仅自己的应用能接受,其它的应用也能接受。这就会有安全问题。比如,其它应用窃取我们广播发出的数据信息,或者不断的向我们的程序中注册的某个广播***发送广播。

为了解决上述问题,android引入了一套本地广播机制,这种广播只能在本应用内部传递。而且对应方式注册的***也只能接受来自本应用发出的广播。

方法:

只要在上述广播的基础上增加一个LocalBroadcastManager就可以了。

实例获取方法:LocalBroadcastManager localBroadcastManager=LocaBroadcastManager.getInstance(this);

然后,注册和注销广播***的时候用:localBroadcastManager.registerReceiver(); localBroadcastManager.unregisterReceiver();

发送广播的时候调用:localBroadcastManager.sendBroadcast();

注意:本地广播无法通过静态注册的方式来接收。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: