BroadcastReceiver又名广播接收者。既然它用于接收广播,那一定就有人负责发送。

Android系统中的广播:

在现实生活中,我们都知道广播是什么,用来做什么。例如公园里的广播,主要通知游客什么事情发生了,应该做什么,

不应该做什么。Android系统中的广播跟现实生活中的基本一样,主要用于消息的传递。

广播接收者可在java代码中动态注册,也可以在AndroidManifest文件中注册

有序广播和无序广播

先来说一下无序广播。还是用公园里的广播作为例子,只要广播一发送出去,所有人基本上都同时听到。

它是异步传输的,这就是无序广播。它的特点是传输速度快。但无序广播不能被拦截和被终止。

无序广播使用sendBroadcast方法发送。

有序广播按照一定的顺序发送出去,权限高的接收者先接收到广播信息,该接收者可修改广播中的信息,

然后再将广播向下级传播;也可以终止广播的传播。

BroadcastReceiver类的创建

通过简单的继承BroadcastReceive类并实现onReceive方法就可以创建自己的广播接收者类

private class NormalBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
String data = intent.getStringExtra("data");
Toast.makeText(getBaseContext(), data, Toast.LENGTH_SHORT).show();
}
}

完整代码:

在下面的代码段中,我们通过onResume方法注册广播接收者,在onPause方法中取消广播接收者的注册

当然了,也可以在AndroidManifest文件中注册,这样的广播接收者一旦注册就不能取消。

package com.whathecode.broadcastreceiverdemo;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast; public class MainActivity extends Activity
{ //实例化广播接收者
NormalBroadcastReceiver nbr = new NormalBroadcastReceiver(); @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
protected void onResume()
{
super.onResume();
//注册广播接收者
registerReceiver(nbr, new IntentFilter("com.whathecode.broadcastreceiverdemo"));
} @Override
protected void onPause()
{
super.onPause();
//取消注册广播接收者
unregisterReceiver(nbr);
} public void sendOrder(View view)
{
Intent orderBroadcast = new Intent();
orderBroadcast.setAction("com.whathecode.broadcastreceiverdemo");
orderBroadcast.putExtra("data", "我是有序广播");
//发送有序广播
sendOrderedBroadcast(orderBroadcast, null);
} public void sendDisorder(View view)
{
Intent intent = new Intent();
intent.setAction("com.whathecode.broadcastreceiverdemo");
intent.putExtra("data", "我是无序广播");
//发送无序广播
sendBroadcast(intent);
} //继承BroadcastReceiver类,实现onReceive方法
private class NormalBroadcastReceiver extends BroadcastReceiver
{ /**
* 当广播被接收的时候这个方法被调用
*/
@Override
public void onReceive(Context context, Intent intent)
{
//获取广播中的信息并用Toast打印出来
String data = intent.getStringExtra("data"); Toast.makeText(getBaseContext(), data, Toast.LENGTH_SHORT).show();
} }
}

运行效果:

Android四大组件之—— BroadcastReceiver的使用的更多相关文章

  1. [置顶] Android四大组件之BroadcastReceiver

    Android四大组件之BroadcastReceiver Broadcast Receiver 广播接收器,是一种负责接收广播消息并对消息做出响应的组件,和Service一样并不提供与用户交互的UI ...

  2. Android 四大组件之“ BroadcastReceiver ”

    前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...

  3. Android四大组件:BroadcastReceiver 介绍

    介绍 BroadcastReceiver 即广播组件,是 Android 的四大组件之一.用于监听和接收广播消息,并做出响应.有以下一些应用: 不同组件之间的通信(应用内或不同应用之间). 多线程之间 ...

  4. Android四大组件之BroadcastReceiver

    什么是BroadcastReceiver? BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面, ...

  5. Android 四大组件之 BroadcastReceiver

    0  简介        BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的 广播.        在Android系统中,广播体现在方方面面,例 ...

  6. Android四大组件之一“广播”

    前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...

  7. Android 四大组件之" ContentProvider "

    前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...

  8. 【Android开发日记】之入门篇(六)——Android四大组件之Broadcast Receiver

    广播接受者是作为系统的监听者存在着的,它可以监听系统或系统中其他应用发生的事件来做出响应.如设备开机时,应用要检查数据的变化状况,此时就可以通过广播来把消息通知给用户.又如网络状态改变时,电量变化时都 ...

  9. Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听

    Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...

随机推荐

  1. Google C++单元测试框架GoogleTest---Extending Google Test by Handling Test Events

    Google TestExtending Google Test by Handling Test Events Google测试提供了一个事件侦听器API,让您接收有关测试程序进度和测试失败的通知. ...

  2. IOS开发之Bug--使用xib的自动布局和代码中修改遇到的bug

    首先,在xib中约束了宽高22,但是需要代码动态重设,所以一开始如下设置,但是实际显示的仍然是22,而不是重设的值: 然后直接拿xib的将布局约束对象拖线重新通过代码重设约束值,虽然打印的结果宽高值是 ...

  3. php面向对象编程 设计模式

    面向对象编程的基本原则: 单一职责:一个类,只需要做好一件事 开放封闭:一个类,应该是可扩展的,而不是可修改的 依赖倒置:一个类,不应该强依赖另一个类.每个类对应另外一个类都是可替换的 配置化:尽可能 ...

  4. 转载文章-----Rational Rose2007(v7.0)下载地址、安装及激活详解教程(图)

    转载地址:http://www.cnblogs.com/leaven/p/3718361.html 最近需要画uml图,之前用的是Rose 2003版的,由于好久没进去了,结果发现原来的激活又失效了, ...

  5. 在虚拟机中安装红旗桌面7.0 Linux操作系统的详细图文教程

    本文作者:souvc 本文出处:http://www.cnblogs.com/liuhongfeng/p/5343087.html 以下是详细的内容: 一.安装虚拟机. 安装虚拟机可以参考:在Wind ...

  6. js 输出二维数组的最大值

    function num(arr){ max=a[0][0]; for (var i = 0; i < a.length; i++) { for (var j = 0; j< a[i].l ...

  7. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台发表于 2015-08-19   |   分类于 Linux/Unix   |  ELK简介ELKStack即Elasticsearch + Logstas ...

  8. linux中inode、软链接、硬链接

    1 软链接 linux中软链接理解成window中的快捷方式.创建软链接的命令 ln -s 源文文件或目录 目标文件或目录 2 硬链接 创建硬链接的命令如下 ln  源文文件或目录 目标文件或目录 3 ...

  9. Fiddler进行模拟Post提交数据,总为null解决方式

    Fiddler模拟post提交时总是为空,解决办法 如果是表单提交则要在header加上 ContentType:application/x-www-form-urlencoded 如果是要post提 ...

  10. 【转】【51CTO 网+】怎样做一款让用户来电的产品

    [51CTO 网+]怎样做一款让用户来电的产品 据相关调查显示,目前全球移动用户平均每人安装应用约95个,每天使用的应用约35个.可见面对众多的移动应用,用户拥有非常大的选择空间.如果由于交互设计欠佳 ...