初识广播


BroadCast即为广播,为安卓四大组件之一,用于在应用程序和Activity间传输信息。一条广播,分为发送和接收两部分,发送方通过Intent存储信息,并进行发送。接收方通过BroadCastReceiver来接收消息。如果要指定接受的消息类型,则可以通过过滤器intentfilter来过滤。BroadCastReceiver的生命周期很短,只有十秒左右,所以一些耗时操作不能在接收方进行,而需要接收方把相应信息传给Service,并在Service中进行。常用的广播方式有两种:普通广播和有序广播。这篇博文先介绍普通广播。

普通广播的特点


普通广播主要有如下几个特点:

1.同级别的接受顺序随机

2.级别低的后收到广播

3.接收器不能拦截广播也不能修改广播内容(若拦截或修改则会报错)

4.同级别动态注册高于静态注册

普通广播的发送


如文章开篇所言,发送广播,是通过Intent对象来发送的,这里以发送简单的字符串为例,代码如下:

Intent intent=new Intent();
intent.putExtra("test","普通广播");
intent.setAction("NORMAL"); //设定广播的Action,用于过滤
sendBroadcast(intent);

普通广播的接收


创建一个类继承BroadcastReceiver类,并实现onReceive方法即可:

public class BC1 extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
String text=intent.getStringExtra("test");
Toast.makeText(context,"BC1"+text,Toast.LENGTH_SHORT).show();
}
}

广播的静态和动态注册


静态注册是在Manifest文件中声明,代码如下:

<receiver android:name=".BC1">
<intent-filter
android:priority="100">
<action android:name="NORMAL"/>
</intent-filter>
</receiver>

其中,action即为过滤所用的关键字,priority为广播的级别,范围在-1000和1000之间,数字大的级别高。

动态注册实在Activity中注册,代码如下:

IntentFilter intentFilter = new IntentFilter("NORMAL");
BC2 bc2 = new BC2();
registerReceiver(bc2,intentFilter);

需要注意的是,由于是在Activity中注册的,当Activity停止时,广播也就无法接收了。

Android学习——BroadCast(一)的更多相关文章

  1. Android学习——BroadCast(二)

    这篇博文介绍有序广播的使用 有序广播的发送 和普通广播完全相同,只需要更换发送的方式即可 ordered.setOnClickListener(new View.OnClickListener() { ...

  2. 【Android学习】《Android开发视频教程》第一季笔记

    视频地址: http://study.163.com/course/courseMain.htm?courseId=207001 课时5    Activity基础概念 1.Android开发技术结构 ...

  3. Android学习之路——简易版微信为例(二)

    1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样, ...

  4. 我的Android学习之旅(转)

    去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...

  5. 《Android学习指南》目录

    源:<Android学习指南>目录 Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这 ...

  6. Android学习资料总结

    从事ASP.NET Web开发两年了,主要是做Web项目(ASP.NET WebForm和ASP.NET MVC),也做过C/S架构的企业内部系统,偶然接触Android,学艺不精,项目没做出什么,倒 ...

  7. 《Android学习指南》文件夹

    转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描写叙述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不 ...

  8. 【Android】完善Android学习(六:API 4.0)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  9. 【转】 Pro Android学习笔记(九七):BroadcastReceiver(1):基础小例子

    目录(?)[-] 基础小例子 发送Broadcast intent 运行情况 应用间的广播 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog ...

随机推荐

  1. epoll_wait 返回值学习以及epoll使用学习

    https://blog.csdn.net/analogous_love/article/details/88721574

  2. display和overflow

    一.display <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  3. 高并发和多线程——Java内存模型

    个人理解: 1.并发编程分为三个核心:分工.同步.互斥 2.CPU.内存.I/O存在速度差异问题. 3.线程切换导致原子性问题.编译优化导致有序性问题.缓存导致可见性问题. 4.Java内存模型规范了 ...

  4. btn按钮事件

    1.用Delegate 和 Event 来定义一个通用类来处理事件 (观察者模式) using System.Collections; using System.Collections.Generic ...

  5. (转)error while loading shared libraries:libmysqlclient.so.18 错误

    error while loading shared libraries:libmysqlclient.so.18错误 新手安装php的时候如果出现这种问题,解决办法很简单,就是查看你的mysql安装 ...

  6. (转)nginx location在配置中的优先级

    原文:https://www.bo56.com/nginx-location%E5%9C%A8%E9%85%8D%E7%BD%AE%E4%B8%AD%E7%9A%84%E4%BC%98%E5%85%8 ...

  7. 32位和64位系统内核函数调用从ZwProtectVirtualMemory到NtProtectVirtualMemory

    0x01 前言 我们知道R3层中,Zw系列函数和Nt系列函数函数是一样的,但是在内核Zw系列函数调用了Nt系列函数,但是为什么要在内核设置一个Zw系列函数而不是直接调用Nt函数呢?Zw系列函数又是怎么 ...

  8. Learning Linux Commands: awk--reference

    http://how-to.linuxcareer.com/learning-linux-commands-awk 1. Introduction In this case, the title mi ...

  9. gihub简单学习 步步操作(简单易学)

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  10. Array中对象的排序

    1.子母排序 NSArray *kArrSort = [_dic allKeys]; //这里是字母数组:,g,a,b.y,m…… NSArray *resultkArrSort = [kArrSor ...