Android广播机制包含三个基本要素:
广播发送者(调用sendBroadcast方法) - 用于发送广播;
广播接收器(BroadcastReceiver) - 用于接收广播;
意图内容(Intent)-用于保存广播相关信息的媒介。
Broadcast是Android中一种广泛运用的在应用程序之间或应用程序内个组件直接传输信息的机制。而BroadcastReceiver是对发送出来的广播Intent进行过滤接受并响应的一类组件。

BroadcastReceiver广播接收者用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收。

每次广播Intent发出后,系统就会创建对应的BroadcastReceiver的实例,并自动触发它的onReceiver()方法,onReceiver()方法执行完后,BroadcastReveiver的实例就会被销毁。

通常一个BroadcastReceiver对象的生命周期不超过5秒,所以在BroadcastReceiver里不能做一些比较耗时的操作。如果需要根据Broadcast来完成一项比较耗时的操作,则可以考虑通过Intent启动一个Service来完成该操作。

实例:BroadcastDemo
运行效果:

代码清单:
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.rainsong.broadcastdemo"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="11"android:targetSdkVersion="19" /><application android:label="@string/app_name" android:icon="@drawable/ic_launcher"><activity android:name="MainActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name="MyReceiver"><intent-filter><action android:name="com.rainsong.action.NEW_BROADCAST" /> </intent-filter></receiver></application>
</manifest>

布局文件:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="发送广播" />
</LinearLayout>

Java源代码文件:MainActivity.java

package com.rainsong.broadcastdemo;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends Activity
{public final String ACTION = "com.rainsong.action.NEW_BROADCAST";Button btn1;OnClickListener listener1;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);btn1 = (Button)findViewById(R.id.button1);listener1 = new OnClickListener() {public void onClick(View v) {Intent intent = new Intent(ACTION);sendBroadcast(intent);}};btn1.setOnClickListener(listener1);}
}

Java源代码文件:MyReceiver.java

package com.rainsong.broadcastdemo;import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;public class MyReceiver extends BroadcastReceiver {public static int NOTIFICATION_ID = 12345;@Overridepublic void onReceive(Context context, Intent intent) {NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);Notification notification = new Notification(android.R.drawable.stat_notify_chat, "MyReceiver onReceive", System.currentTimeMillis());Intent intent1 = new Intent(context, MainActivity.class);PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent1, 0);notification.setLatestEventInfo(context, "MyReceiver onReceive", null, pendingIntent);nm.notify(NOTIFICATION_ID, notification);  }
}

代码逻辑:
单击“发送广播”按钮,我们的程序开始发送广播Intent,这个广播Intent被MyReceiver所截获,然后就开始执行MyReceiver里的onReceive方法,在onReceive里边将一个Notification显示在状态栏中。

Android之BroadcastReceiver相关推荐

  1. android 增加一条广播,Android中BroadcastReceiver广播使用及注意点

    Android中的广播用途很广,是四大组件之一.在android中可以看到它的各种应用,从系统发出的广播,用户自定义的广播等. 这里详细记录下广播的分类以及使用方法. 广播,是由两方面组成一个流程:广 ...

  2. Android中BroadcastReceiver组件详解

    Android系统的4个组件终于还剩一种组件了BroadcastReceiver,这个组件是全局监听器,可以监听系统全局的广播消息,可以方便的实现系统中不同组件之间的通信 BroadcastRecei ...

  3. Android中BroadCastReceiver使用(整理)

    BroadcastReceiver 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制.而BroadcastReceiver是对发送出来的 Broadcast进行过滤接 ...

  4. Android之BroadcastReceiver 监听系统广播

    绑定广播有两种方式 一.配置文件绑定,在程序未启动也能监听 二.代码方式绑定,在程序启动后才能监听 1.绑定和取消绑定广播 public class MainActivity extends Acti ...

  5. android之broadcastreceiver 耳机按键,Android 实时监听耳机按钮事件

    写作背景:最近在做视频播放器,客户提出两项新需求: 插耳机看视频,拔出耳机,视频需要暂停.(Android 实时监听耳机拔出事件) 视频播放时,按耳机按钮,视频暂停播放:再按耳机按钮,视频暂停. 如何 ...

  6. NullPointerException:method 'android.content.BroadcastReceiver.onReceive' on a null object reference

    最近在使用广播的时候遇到了这个问题,项目里面使用了极光推送,然后项目里有几个地方都需要写广播接收者去接收,所以我只在一个地方写了,然后其他的地方就是copy过去的,然后就报了这个错误,总的来说,这个错 ...

  7. android receiver 通知,android – 来自BroadcastReceiver的呼叫通知

    我有代码: public void AlarmStart() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MINUTE, 5); ...

  8. android广播intent原理,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  9. Android的BroadcastReceiver 广播 短信拦截

    如何去理解BroadcastReceiver(广播)?其实可以这样想,首先我们要有一个发送广播的"媒体",在这个例子中,我们暂且用activity组件作为这个媒体,当然以后会用到s ...

最新文章

  1. 显示ip的img的url
  2. VISP视觉库框架结构与使用入门
  3. java开源写字板_简单的写字板 - 努力喵的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. redis-集群分片
  5. tomcat启动完成执行 某个方法 定时任务(Spring)
  6. 分隔单词和标点符号示例
  7. 误删除了_msdcs.domain.com
  8. php手机接口购物车怎么实现,php购物车的实现原理
  9. javaFx--TableView、combobox的注意事项
  10. python memory-management
  11. 利用jmeter做一个简单的性能测试并进行参数化设置
  12. java web 局部刷新页面_如何实现页面局部刷新(Java)
  13. 2021年1月13日以后,如何用Flash Player打开swf文件
  14. FreeSwitch SIP基本原理和流程
  15. 华三交换机如何进入配置_h3c交换机配置telnet配置教程
  16. imazing iOS设备管理软件
  17. Epson推AR眼镜:最大亮点就是可接Android手机
  18. 深入理解Spring两大特性:IoC和AOP
  19. INDEMIND带你玩转OpenCV4.0(一):DIS光流算法解析
  20. 功率谱(PS)和功率谱密度(PSD)是否一样、谱估计谱图纵轴数值为什么为负

热门文章

  1. linux如何重新分区
  2. 国外计算机科学英语演讲,华工学子英语演讲共庆祖国华诞
  3. Grib数据转NC数据
  4. GRIB2 资料处理
  5. Java中String 字符串与List<String>互转
  6. @Validated和@Valid校验参数、级联属性、List
  7. @Validated和@Valid 解决list校验问题
  8. SpringAop篇 (2) Spring中的切面编程技术 AspectJ
  9. Java 异常(Exceptions)
  10. 基于卷积神经网络的句子分类模型【经典卷积分类附源码链接】