Android -- 发送Broadcast、有序无序
普通广播
- 优缺点:和有序广播的优缺点相反!
- 发送广播的方法:sendBroadcast()
有序广播
- 优缺点
优点:1,按优先级的不同,优先Receiver可对数据进行处理,并传给下一个Receiver
2,通过abortBroadcast可终止广播的传播
缺点:效率低
- 发送广播的方法:sendOrderedBroadcast()
- 优先接收到Broadcast的Receiver可通过setResultExtras(Bundle)方法将处理结果存入Broadcast中,下一个Receiver 通过 Bundle bundle=getResultExtras(true)方法获取上一个 Receiver传来的数据。
工程
MainActivity.java是程序住进口。
MyBroadcastReceiver.java等都是广播接收者,只是等级不一样。
FinalRecevier.java是有序广播的时候,即使广播被拦截了,这个还是可以接收到广播的。
<receiver android:name=".MyBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="com.yydcdut.nima"/>
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReceiver2">
<intent-filter android:priority="100">
<action android:name="com.yydcdut.nima"/>
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReceiver3">
<intent-filter android:priority="10">
<action android:name="com.yydcdut.nima"/>
</intent-filter>
</receiver>
<receiver android:name=".FinalRecevier">
<intent-filter>
<action android:name="com.yydcdut.nima"/>
</intent-filter>
</receiver>
在MyBroadcastReceiver.java中,代码都差不多:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("MyBroadcastReceiver1111111接受到的广播");
Toast.makeText(context, "MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
}
}
在MainActivity.java中:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view)
{
Intent intent = new Intent();
intent.setAction("com.yydcdut.nima");
//无序广播
sendBroadcast(intent);
//有序广播
//sendOrderedBroadcast(intent, null);
//sendOrderedBroadcast(intent, null, new FinalRecevier(), null, 0, null, null);
}
}
在某个广播接收的类中加入
abortBroadcast();
这是去拦截广播,但是FinalRecevier还是接收到了的,无论怎么拦截广播。
我是天王盖地虎的分割线
源代码:http://pan.baidu.com/s/1dD1Qx01
广播发送.zip
转载请注明出处:http://www.cnblogs.com/yydcdut
Android -- 发送Broadcast、有序无序的更多相关文章
- android发送与接收超长短信
android发送与接收超长短信 android接收发送短信,支持的最大字符数是70个,实际是67个字符,如果发送的短信超过了该数目,那就需要用到sendMultipartTextMessage()方 ...
- android 发送短信的两种方式,以及接收报告和发送报告
android发送短信,以及接收报告和发送报告 android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下: 一.调起系统发短信功能 ...
- android发送/接收json数据
客户端向服务器端发送数据,这里用到了两种,一种是在url中带参数,一种是json数据发送方式: url带参数的写法: url+/?r=m/calendar/contact_list&uid=3 ...
- 关于通过adb启动Activity、activity、service以及发送broadcast的命令
一.启动activity: $ adb shell$ am start -n {包名}/{包名}.{活动名称} 如:启动一个名叫MainActivity的活动 # am start -n com.ex ...
- android发送/接收Json包含中文的处理
转自:http://wiki.neal365.com/2013/02/25/android%E5%8F%91%E9%80%81%E6%8E%A5%E6%94%B6json%E5%8C%85%E5%90 ...
- android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信
android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到例如以下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int ...
- Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件(二)
Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件第二版 上次粗略的写了相同功能的代码,这次整理修复了之前的一些BUG,结构也大量修改 ...
- Android 启动Service服务和发送Broadcast广播的常用方法
一.先说Service服务. 1.利用setAction()方法来指定启动的Service服务 Intent intent = new Intent(); intent.setAction(" ...
- android的Broadcast receiver
broadcast receiver是用来监听intent的. android大量使用了broadcast receiver,比如:开机.电话打进来.发送消息,手机电量过低 有两种方式注册broadc ...
随机推荐
- 【C#】Unicode的流言终结者和编码大揭秘
如果你是一个生活在2003年的程序员,却不了解字符.字符集.编码和Unicode这些基础知识.那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩罚你. 这个邪恶的恐吓是Joel Spo ...
- VS code配置docker的shell环境
今天尝试了下使用docker来做虚拟机,几番折腾后终于搞定可以用了,但是想着每次都要在命令行敲半天也太恶心了,所以就找了一下可视化的管理工具 首先说下,我的docker主机环境是windows10,用 ...
- ref:JAVA代码审计的一些Tips(附脚本)
ref:https://xz.aliyun.com/t/1633/ JAVA代码审计的一些Tips(附脚本) 概述 本文重点介绍JAVA安全编码与代码审计基础知识,会以漏洞及安全编码示例的方式介绍JA ...
- Scrapy实战篇(五)爬取京东商城文胸信息
创建scrapy项目 scrapy startproject jingdong 填充 item.py文件 在这里定义想要存储的字段信息 import scrapy class JingdongItem ...
- SPOJ375 Query on a tree 【倍增,在线】
题目链接[http://www.spoj.com/problems/QTREE/] 题意:给出一个包含N(N<=10000)节点的无根树,有多次询问,询问的方式有两种1.DIST a b 求a ...
- 【BZOJ 3144】 3144: [Hnoi2013]切糕 (最小割模型)
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1764 Solved: 965 Description Inp ...
- poj 1984 并查集
题目意思是一个图中,只有上下左右四个方向的边.给出这样的一些边, 求任意指定的2个节点之间的距离. 就是看不懂,怎么破 /* POJ 1984 并查集 */ #include <stdio.h& ...
- 20172333 2017-2018-2 《Java程序设计》第11周学习总结
20172333 2017-2018-2 <Java程序设计>第11周学习总结 教材学习内容 对于Android Studio的安装以及对安卓的一些基本组成,比如说四大组件Acticity ...
- fork新建进程——父进程等待子进程结束
#include <sys/types.h>#include<sys/wait.h>#include<unistd.h>#include<stdio.h> ...
- Ehcache缓存时间设置
timeToLiveSeconds和timeToIdleSecondstimeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x:timeToIdleSeconds=y:缓存创建以后 ...