如何在应用中发送自己定义的广播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();
注意:本地广播无法通过静态注册的方式来接收。
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();
注意:本地广播无法通过静态注册的方式来接收。
相关文章推荐
- LeetCode63:Unique Paths II
- 不错的在线印章生成器网站
- ssh的hibernate配置方法
- 【XML】—刘伟视频学习总结
- Gauss-Newton algorithm
- 论文提要“Improving Object Detection with DCN via Bayesian Optimization and Structured Prediction”
- MyEclipse2014 下载、安装、优化启动项.
- 删除事件查看器中多余的日志分类
- Android优化问题。。。
- C# 利用xml生成控件
- [leetcode]Contains Duplicate II
- android studio创建一个工程时候报错
- Median of Two Sorted Arrays
- 优先队列的使用
- 多线程编程基础知识(windows)
- jQuery.Validate验证库
- qDebug记录
- service详解
- Spring mvc进行Excel导出
- 学习笔记: 享元模式和值对象