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. 转发:Chrome 控制台console的用法

    大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方.可能大家对co ...

  2. [Javascript]利用当前时间生成yyyymmddhhmmss这样的字符串

    function pad2(n) { return n < 10 ? '0' + n : n } function generateTimeReqestNumber() { var date = ...

  3. Android app被系统kill的场景

    何时发生 当我们的app被切到后台的时候,比如用户按下了home键或者切换到了别的应用,总之是我们的app不再和用户交互了,这个时候对于我们的app来说就是什么事情都可能发生的时候了,因为系统会认为你 ...

  4. IOS开发之Bug--关于UIImageView的使用

    这里是遇到的一个关于使用UIImageView的小bug,bug就是加载不出来图片. 原因:如果图片资源是jpg文件,如果代码没有加后缀.jpg就会出现不加载出来的情况: 添加上.jpg就能加载出来了 ...

  5. python-list tuple dict set

    1:删除一个列表末尾的元素 pop方法 >>> a [1, 'Jack', 2, 3, 2] >>> a.pop() >>> a [1, 'Jac ...

  6. Play Framework 完整实现一个APP(十一)

    添加权限控制 1.导入Secure module,该模块提供了一个controllers.Secure控制器. /conf/application.conf # Import the secure m ...

  7. ORACLE DELETE数据慢的案例

    今天遇到一个有意思的案例,一开发同事告诉我他删除一个表的记录非常慢,已经快1个多小时了还没有完成.而且删除的记录只有1百多条.真是大跌眼镜的一件事情.最后发现该表与多个表有外键关联关系(这个表即是主表 ...

  8. SQL SERVER 2005删除维护作业报错:The DELETE statement conflicted with the REFERENCE constraint "FK_subplan_job_id"

    案例环境: 数据库版本: Microsoft SQL Server 2005 (Microsoft SQL Server 2005 - 9.00.5000.00 (X64) ) 案例介绍: 对一个数据 ...

  9. Database 'xxxx' is being recovered. Waiting until recovery is finished.

    巡检发现一个SQL SERVER Express 2005数据库备份时出现下面错误: Database 'xxxx' is being recovered. Waiting until recover ...

  10. IntelliJ IDEA 配置运行程序

    IntelliJ IDEA 对于Javaer开发来说还是很nice的,就是第一次用可能配置项有点生疏,这里就记录一下IntelliJ IDEA 配置运行程序. 1. 点击Edit Config... ...