一、Broadcast简介

Broadcast是Android的四大组件之一。可分为:

1、普通广播  发送一个广播,所有监听该广播的广播接收者都可以监听到改广播。

2、异步广播  当处理完之后的Intent,依然存在,这时候registerReceiver(BroadcastReceiver,IntentFilter) 还能收到他的值,直到你把它去掉,不能将处理结果传给下一个接收者,无法终止广播。

3、有序广播  按照接收者的优先级顺序接收广播,优先级别在intent-filter中的priority中声明,-1000到1000之间,值越大,优先级越高.可以终止广播意图的继续传播.接收者可以篡改内容.

二、广播Broadcast实现过程

1、注册

a、配置文件注册

 <!-- 注册自定义静态广播接收器 -->
<receiver android:name="com.example.androidtest.broadcast.MyReceiver">
  <intent-filter >
  <action android:name="MyAction"/>
</intent-filter>
</receiver>

b、代码注册

 MyReceiver myReceiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("MyAction");
registerReceiver(myReceiver,filter);

2、发送广播

 Intent intent = new Intent();
intent.setAction("MyAction");
intent.putExtra("msg", "这是广播发送的消息");
sendBroadcast(intent);

3、接收类的实现

继承BroadcastReceiver并重写onReceive方法。

 public class MyReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "广播消息是:" + intent.getStringExtra("msg"), Toast.LENGTH_SHORT).show();
} }

三、若内部类作为广播接收类如何实现

1、注册

a、配置文件注册

1 <!-- 注册自定义静态广播接收器 -->
2 <receiver android:name="com.example.androidtest.broadcast.BroadcastTest$MyReceiver"> <!-- 注意内部类写法:普通类$内部类 -->
3   <intent-filter >
4   <action android:name="MyAction"/>
5 </intent-filter>
6</receiver>

b、代码注册

1 MyReceiver myReceiver = new MyReceiver();
2 IntentFilter filter = new IntentFilter();
3 filter.addAction("MyAction");
4 registerReceiver(myReceiver,filter);

2、发送广播

1 Intent intent = new Intent();
2 intent.setAction("MyAction");
3 intent.putExtra("msg", "这是广播发送的消息");
4 sendBroadcast(intent);

3、接收类的实现

注意:若在配置文件中注册则该类必须声明为static,否则找不到,若在代码中注册可省略static修饰

1 public static class MyReceiver extends BroadcastReceiver
2 {
3 public void onReceive(Context context, Intent intent)
4 {
5 Toast.makeText(context, "广播消息是:" + intent.getStringExtra("msg"), Toast.LENGTH_SHORT).show();
6 }
7
8 }

四、用途

开机、锁屏、电量低……

五、注意

生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报错 。

每次广播到来时 , 会重新创建 BroadcastReceiver 对象 , 并且调用 onReceive() 方法 , 执行完以后 , 该对象即被销毁 . 当 onReceive() 方法在 10 秒内没有执行完毕, Android 会认为该程序无响应 . 所以在BroadcastReceiver 里不能做一些比较耗时的操作 , 否侧会弹出 ANR(Application NoResponse) 的对话框

部分内容取自:http://yangguangfu.iteye.com/blog/1063732

Android常用组件Broadcast介绍的更多相关文章

  1. Android常用组件【转】

    UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...

  2. Android常用组件

    UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...

  3. Android新组件RecyclerView介绍,其效率更好

    今天我们首先来说为什么要介绍这个新组件RecyclerView,因为前几天我发布了一个常用面试题ListView的复用及如何优化的文章,介绍给一些开发者,但是我看到有关的反馈说:现在都不再用listv ...

  4. android 四大组件Broadcast Receiver

    本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...

  5. Android四大组件--Broadcast Receiver具体解释

    本文主要讲述了: 一.BroadcastReceiver概述: 二.BroadcastReceiver事件分类 三.BroadcastReceiver事件的编程流程 四.两类BroadcastRece ...

  6. android常用http框架介绍

    测试数据 1.HttpURLConnection:在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择.而在Android 2.3版本及以后,HttpURLC ...

  7. Android四大组件-Broadcast Receiver

    http://www.jianshu.com/p/1013a366cc72 http://www.jianshu.com/p/ca3d87a4cdf3 前言 基础知识. 1.Android广播分为两个 ...

  8. Android 架构组件 Room 介绍及使用

    关于Room Room是Google官方提供的数据库ORM框架,使用起来非常方便.Room在SQLite上提供了一个抽象层,以便在利用SQLite的全部功能的同时能更加流畅的访问数据库. Room中三 ...

  9. Android常用组件之AutoCompleteTextView

    安卓组件中,凡是需要配置数据的组件,一般都是用Adapter配置. AutoCompleteTextView的使用方法与ListView类似,也是用setAdapter来设置数据. MultiAuto ...

随机推荐

  1. AJAX 控件集之TextBoxWatermark(水印文本框)控件

    功能:       可以让TextBox控件初始化的时候拥有水印文字.属性:    TargetControlID :要使用具有水印效果的TextBox控件ID.    WatermarkCssCla ...

  2. T4模板_根据DB生成实体类

    为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下 1.首先创建一个项目,并添加文本模板: 2.添加 文本模板: 3.向T4文本模板文件添加代码: <#@ tem ...

  3. setInterval && setTimeout || 定时器

    来自w3school的解释 定时器setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterva ...

  4. 如何让EcStore和微博同步来推广网站

    EcStore是创建B2C商城的首选PHP系统,它功能强大.操作方便,安装后马上就能建立起一个自己的B2C商城,但建好后如何推广运营商城却不是件容易的事. 新浪微博用户数量大.传播速度快,互联网上拥有 ...

  5. URL锚点定位

    我们都知道<a>标签中的url属性有三种值: 绝对 URL - 指向另一个站点(比如 href="http://www.example.com/index.htm") ...

  6. docker镜像与容器存储结构分析

    注意:转载请注明出处:http://www.programfish.com/blog/?p=9 Docker是一个开源的应用容器引擎,主要利用linux内核namespace实现沙盒隔离,用cgrou ...

  7. 负载均衡集群之LVS持久链接

    原理--> 通过构建一个hash表,利用CIP与RS的对应关系,来保持来自一个CIP的各种服务都走同一个RS 目的--> 保持持久链接的同时,将多个服务合并起来,例如http和https ...

  8. 在Git中一定要关注的crlf自动转换

    GitHub 第一坑:换行符自动转换 如果你已经做出了错误的选择,也不需要重新安装,可以直接使用命令行来修改设置.很简单,直接打开这货自带的命令行工具 Git Bash,输入以下命令,再敲回车即可: ...

  9. 折腾gnome3.4

    1.平埔式窗口管理器shellshape 刚开始用都是登录时默认为gnome classic,主要是希望有任务栏,但是为了在这种模式,gnome扩展都没有用了. 而我又在使用shellshape -- ...

  10. HTML实体符号

    http://www.php100.com/html/program/html/2013/0903/1052.html