Android四大组件之—— BroadcastReceiver的使用
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的使用的更多相关文章
- [置顶] Android四大组件之BroadcastReceiver
Android四大组件之BroadcastReceiver Broadcast Receiver 广播接收器,是一种负责接收广播消息并对消息做出响应的组件,和Service一样并不提供与用户交互的UI ...
- Android 四大组件之“ BroadcastReceiver ”
前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...
- Android四大组件:BroadcastReceiver 介绍
介绍 BroadcastReceiver 即广播组件,是 Android 的四大组件之一.用于监听和接收广播消息,并做出响应.有以下一些应用: 不同组件之间的通信(应用内或不同应用之间). 多线程之间 ...
- Android四大组件之BroadcastReceiver
什么是BroadcastReceiver? BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面, ...
- Android 四大组件之 BroadcastReceiver
0 简介 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的 广播. 在Android系统中,广播体现在方方面面,例 ...
- Android四大组件之一“广播”
前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...
- Android 四大组件之" ContentProvider "
前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...
- 【Android开发日记】之入门篇(六)——Android四大组件之Broadcast Receiver
广播接受者是作为系统的监听者存在着的,它可以监听系统或系统中其他应用发生的事件来做出响应.如设备开机时,应用要检查数据的变化状况,此时就可以通过广播来把消息通知给用户.又如网络状态改变时,电量变化时都 ...
- Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听
Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...
随机推荐
- 使用 Arduino 和 LM35 温度传感器监测温度
上一篇玩儿了一下Arduino入门,这次再进一步,用一下LM35温度传感器来监测当前温度.LM35温度传感器已经在Arduino入门套件里包含了,就是那个有三个脚的小黑块儿. 我们先把这些东西连起来. ...
- 开发培训及技术研讨会PPT下载链接
8月到9月,我们做了一圈巡回演出,脚步踏遍祖国大江南北,包括沈阳.武汉.深圳.香港.上海和北京等几个城市,给大家带来Autodesk最新的云技术和桌面产品技术动态,得到了大家的热烈响应.感谢各位合作伙 ...
- iOS之数组的排序(升序、降序及乱序)
#pragma mark -- 数组排序方法(升序) - (void)arraySortASC{ //数组排序 //定义一个数字数组 NSArray *array = @[@(3),@(4),@(2) ...
- 【代码笔记】iOS-可以向左(右)滑动
一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...
- IOS开发之Bug--View是懒加载导致出误以为是UI加载的bug
虽然分类为bug,但也算的上是一个问题,一个很简单的问题.先来看看问题的重现,就写了简单的Demo验证效果: 问题:点击ViewController跳转到TwoViewController,发现会延迟 ...
- C#和ASP.NET之事件
事件是一种用于类和类之间传递消息或触发新的行为的编程方式.通过提供事件的句柄,能够把控件和可执行的代码联系在一起, 如用户单击Button控件触发Click事件后就执行相应的事件处理代码. 事件的声明 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- spark streaming 与 kafka 结合使用的一些概念理解
1. createStream会使用 Receiver:而createDirectStream不会,数据会通过driver接收. 2.createStream使用 Receiver 源源不断的接收数据 ...
- (转)Div和Table的区别
原文:http://www.cnblogs.com/lovebear/archive/2012/04/18/2456081.html Div与table的区别 1:速度和加载方式方面的区别 div 和 ...
- 足球游戏论坛数据分析--简单粗暴的K均值聚类
在<<足球游戏论坛数据分析--简单粗暴的贝叶斯>>中尝试了贴标签后,一直觉得结果无法接受, 慢慢回想, 其实选择的算法是错误的,原因有 论坛帖子分类并非就是PC/PS/XBOX ...