概述:BroadcastReceiver用于接收并处理广播通知(broadcastannouncements)。
多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers来 响应它觉得重要的通知。broadcast receiver可以通过多种方式通知用户:启动activity、使用 NotificationManager、开启背景灯、振动设备、播放声音等,最典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。通常 我们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个Intent出去,我们可以利用注册一个 Broadcast Receiver来监听到这些Intent并获取Intent中的数据。
注册广播的几种方以及这些方式有何优缺点?
首先写一个类要继承BroadcastReceiver
第一种:在清单文件中声明,添加
<receive android:name=".IncomingSMSReceiver " >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED")
<intent-filter>
<receiver>
第二种使用代码进行注册如:
IntentFilter filter = new
IntentFilter("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = new IncomgSMSReceiver();
registerReceiver(receiver.filter);
两种注册类型的区别是:
1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。
2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。