广播接收器,它和事件处理机制类似,只不过事件的处理机制是程序组件级别的,而广播处理机制是系统级别的。

BroadcastReceiver如操作系统启动完毕,发出广播信号;低电量提示广播,应用中耗电量大的部分功能关闭;侦听短信;

用于接收并处理广播通知(broadcastannouncements)。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers来响应它觉得重要的通知。broadcast receiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。

通常我们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个Intent出去,我们可以利用注册一个Broadcast Receiver来监听到这些Intent并获取Intent中的数据。

使用场合:通信过程传递过来的数据量不大,频度也不高

主要功能

事件的广播比价简单,构建Intent对象,调用sendBroadcast()方法将广播发出

直接定义事件接收器进行接收,重写onReceiver

注册\注销Receiver ,registerReceiver(r,filter), unregisterReceiver(r);

案例:

创建新工程

新建一个广播接收器,类: MyBroadcast扩展自BroadcastReceiver,一旦收到消息,会执行抽象方法onReceive,如下:

publicvoid onReceive(Context arg0, Intent arg1) {

// TODO Auto-generatedmethod stub

System.out.println("我收到了你的信息:"+arg1.getStringExtra("MyTxt"));

}

3) AndroidManifest.xml,注册广播接收器,类: MyBroadcast。

4)MainActivity加进一按钮,发送消息

<Button

android:id="@+id/butSendBroad"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/textView1"

android:layout_below="@+id/textView1"

android:layout_marginTop="29dp"

android:text="SendBroad" />

5)实现发送

butSendBroad.setOnClickListener(new View.OnClickListener() {

@Override

publicvoid onClick(View v) {

Intent i=newIntent(MainActivity.this,MyBroadcast.class);

i.putExtra("MyTxt", "HelloBroad");

sendBroadcast(i);

}

}

);

6)可先运行,logcat可看到消息

7)动态的注册和注销广播接受器, AndroidManifest中去除广播接收器类的注册

<!--<receiverandroid:name="MyBroadcast"></receiver>-->

8)MainActivity中,添加注册和注销两按钮

<Button

android:id="@+id/btnReg"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/butSendBroad"

android:layout_below="@+id/butSendBroad"

android:layout_marginTop="45dp"

android:text="Regist"/>

<Button

android:id="@+id/btnUnReg"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/btnReg"

android:layout_centerVertical="true"

android:text="Unreg" />

9) MyBroadcast指定一地址变量:

public static final String ACTION="10-1.intenet.action.mybroad";

10) 定义MyBroadcast实例

private final MyBroadcast MyBRecive=newMyBroadcast();

11)实现注册

btnReg.setOnClickListener(newView.OnClickListener() {

@Override

publicvoid onClick(View v) {

// TODO Auto-generatedmethod stub

registerReceiver(MyBRecive,new IntentFilter(MyBroadcast.ACTION));

}

});

12)取消注册

btnUnReg.setOnClickListener(new View.OnClickListener() {

@Override

publicvoid onClick(View v) {

// TODO Auto-generatedmethod stub

unregisterReceiver(MyBRecive);

}

});

13)发送广播更改:

butSendBroad.setOnClickListener(new View.OnClickListener() {

@Override

publicvoid onClick(View v) {

//Intent i=newIntent(MainActivity.this,MyBroadcast.class);

Intent i=newIntent(MyBroadcast.ACTION);

i.putExtra("MyTxt", "HelloBroad");

sendBroadcast(i);

}

}

);

参考:

http://www.cnblogs.com/linzheng/archive/2011/01/22/1942053.html

×××:

http://down.51cto.com/data/1964492