当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. UVA 111 (复习dp, 14.07.09)

     History Grading  Background Many problems in Computer Science involve maximizing some measure accor ...

  2. Visual Prolog 的 Web 专家系统 (10)

    GENI的核心 -- 推理机(4)求证过程分析 1.GENI知识库结构 专家系统推理机的设计执行,与其知识库结构紧密相关. GENI知识库结构是一棵逻辑推理树. 根节点是animal,即求证的目标. ...

  3. javascript 模块引擎 (手写草稿)

    1.试题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  4. ["1", "2", "3"].map(parseInt) 结果

    // 下面的语句返回什么呢: ["1", "2", "3"].map(parseInt); // 你可能觉的会是[1, 2, 3] // 但 ...

  5. 读jQuery源码之整体框架分析

    读一个开源框架,大家最想学到的就是设计的思想和实现的技巧.最近读jQuery源码,记下我对大师作品的理解和心得,跟大家分享,权当抛砖引玉. 先附上jQuery的代码结构. (function(){ / ...

  6. iOS 原生二维码扫描和生成

    代码地址如下:http://www.demodashi.com/demo/12551.html 一.效果预览: 功能描述:WSLNativeScanTool是在利用原生API的条件下封装的二维码扫描工 ...

  7. JAVA静态导入(inport static)详解

    在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的.这种新的特性成为静态导入. 当你想使用static成员时,可以使用静态导入( ...

  8. MySQL优化时可以设置的几个参数

    back_log:back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中.也就是说,如果MySql的连接数据达到max_connections时,新来的请求将会被 ...

  9. TransactionScope的用法

    using (TransactionScope ts = new TransactionScope()) { Model.user_login_log model = new Model.user_l ...

  10. 【Java并发编程】并发编程大合集

    转载自:http://blog.csdn.net/ns_code/article/details/17539599 为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容按照由浅 ...