当Android系统发生某种状况,必须通知所有程序进行处理时,例如电量不足等,可利用Broadcast Intent对象的功能来进行信息广播。

运行机制包括两部:送出Intent对象的程序;监听广播信息的程序(Broadcast Receiver),其本省是一个类,必须继承BroadcastReceiver类,必须向系统注册,并指定要监听的广播信息。当该监听的广播消息被送出时,系统会启动所有监听该广播消息的Broadcast Receiver程序,并运行onReceive()方法。

Broadcast Receiver程序只有在Android系统运行其onReceive()方法是才处于有效状态,一旦运行完毕就有可能被移除,直到下次监听的广播消息出现才再次运行,所以类似比较耗时的thread的异步工作不适合在onReceive()中运行。

1、建立Intent对象,并指定要广播的消息。

   Intent it = new Intent("tw.android.MY_BROADCAST");
it.putExtra("sender","Broadcast Receive~");//附带数据,数据放入Intent对象中
//利用bundle对象存入Intent对象
Bundle bundle = new Bundle();
bundle.putString("sender","Broadcast Receive~");
it.putExtras(bundle);

2、调用sendBroadcast()方法广播Intent对象。

  sendBroadcast(it);

3、新建一个继承Broadcast Receiver类的新类,需要实现onReceive()方法。

public class myBroadcast extends BroadcastReceiver {

	@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//实现当监听的广播消息出现时要运行的方法,其中Intent对象是onReceive()的自变量,无需调用getIntent()来取得
String sender = intent.getExtras().getString("sender");
} }

4、在主程序中向Android系统注册上步中建立的Broadcast Receiver,以及要监听的广播消息。

在程序项目中的AndroidManifest.xml中注册:

    <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<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=".myBroadcast"
android:label="@string/app_name">
<intent-filter >
<action android:name="tw.android.MY_BROADCAST"/>
</intent-filter>
</receiver>
</application>

  在程序中注册和取消注册:

	      IntentFilter itFilter = new IntentFilter("tw.android.MY_BROADCAST");
myBroadcast mybroadcast = new myBroadcast();
registerReceiver(mybroadcast,itFilter);
...
unregisterReceiver(mybroadcast);//取消注册

  只有在程序中注册下能取消。

Broadcast Intent & Broadcast Receiver的更多相关文章

  1. 安卓权威编程指南-笔记(第27章 broadcast intent)

    本章需求:首先,让应用轮询新结果并在有所发现时及时通知用户,即使用户重启设备后还没有打开过应用.其次,保证用户在使用应用时不出现新结果通知. 1. 一般intent和broadcast intent ...

  2. 阅读《Android 从入门到精通》(33)——Intent 分类

    Intent 分类 显式 Intent:Intent("android.intent.action.CALL", Uri.parse("tel:" + stri ...

  3. Android中Intent具体解释(二)之使用Intent广播事件及Broadcast Receiver简单介绍

    通过第一篇的解说,我们已经看到了怎样使用Intent来启动新的应用程序组件,可是实际上他们也能够使用sendBroadcast方法来在组件间匿名的广播消息. 作为一个系统级别的消息传递机制,Inten ...

  4. BroadCast Receiver的使用

    定义 广播接收器分为标准广播和有序广播,标准广播是异步执行的广播,有序广播是同步执行的,同一时刻只有一个广播接收器会收到广播,执行结束后,广播才会继续传递. 静态注册 在Androidmanifest ...

  5. android 四大组件Broadcast Receiver

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

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

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

  7. 我的Android 4 学习系列之Intent 和 Broadcast Reciever

    目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending ...

  8. android基础(二)Broadcast Receiver知识

    1.广播的注册 (1)动态广播注册: 优点:可以灵活控制广播的注册与撤销 缺点:必须在程序启动时才能接收广播 IntentFilter :当Intent在组建之间传递时,组件想告诉android系统自 ...

  9. Broadcast Receviewer

    使用Braodcast Receiver 一.新建一个空的工程,命名为LearnBroadcastReceiver 二.为主界面添加一个按钮 三.新建一个broadcast receiver,命名为M ...

随机推荐

  1. Win10系统如何关闭"启用病毒防护""启用Windows防火墙"提示?

    Win10系统如何关闭"启用病毒防护""启用Windows防火墙"提示?   目前已经有不少有用户升级到了win10正式版系统,不过有一些原win7/win8. ...

  2. Windows下创建.gitgnore文件

    相信使用过git的朋友可能遇到过,直接在windows下创建.gitgnore文件失败.类似截图那样 上网查了一下,有两种方法. 方法1: 此方法较为简单,前提是安装了git bash. 用git b ...

  3. 优化MyDb

    import pymysqlclass MyDb(object): #新式类 def __del__(self):#析构函数 self.cur.close() self.coon.close() pr ...

  4. 用unity3d实现简单的主server连接

    用unity3d实现简单的主server连接 參考自鹰大的网络实例 -------------------------------------------------华丽的切割线----------- ...

  5. visual studio 2010 LNK1123解决方式

    ------------------------------------------------------------Lysen----------------------------------- ...

  6. java消息中间件之ActiveMQ初识

    目录 消息中间件简介 解耦合和异步 可靠性和高效性 JMS P2P Pub/Sub AMQP JMS和AMQP对比 常见消息中间件 ActiveMQ RabbitMQ Kafka 综合比较 标签(空格 ...

  7. URL检测脚本

    #!/bin/bash# filename : 8_5_1.sh function usage(){ echo "usage:$0 url" exit 1} function ch ...

  8. 基于 ZooKeeper 搭建 Hadoop 高可用集群

    一.高可用简介 二.集群规划 三.前置条件 四.集群配置 五.启动集群 六.查看集群 七.集群的二次启动 一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS ...

  9. 篇章一:[AngularJS] 使用AngularAMD動態載入Controller

    前言 使用AngularJS來開發Single Page Application(SPA)的時候,可以選用AngularUI Router來提供頁面內容切換的功能.但是在UI Router的使用情景裡 ...

  10. 机器学习13—PCA学习笔记

     主成分分析PCA 机器学习实战之PCA test13.py #-*- coding:utf-8 import sys sys.path.append("pca.py") impo ...