广播接收者(BroadcastReceiver)

1,什么是BroadcastReceiver?

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

2,Context.startActivity()Context.sendBroadcast()方法发送意图的区别?

Context.startActivity()发送的意图只能被一个组件接收,当然这个组件可以是activityService;

Context.sendBroadcast()发送的意图可以被订阅了此Intent的多个广播接收者所接收.只能是广播收都接收.

3,如何实现一个广播接收者?

要实现一个广播接收者方法如下:

第一步:继承BroadcastReceiver,并重写onReceive()方法。

public class IncomingSMSReceiver extends BroadcastReceiver {

@Override public void onReceive(Context context, Intent intent) {

}

}

第二步:订阅感兴趣的广播Intent,订阅方法有两种:

第一种:使用代码进行订阅

IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");

IncomingSMSReceiver receiver = new IncomingSMSReceiver();

registerReceiver(receiver, filter);

第二种:在AndroidManifest.xml文件中的<application>节点里进行订阅:

<receiver android:name=".IncomingSMSReceiver">

<intent-filter>

<action android:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

</receiver>

当系统中发送出来一个意图后,系统会根据该意图的action自动去匹配系统中现有各个意图过滤intent-filter,一旦发现有匹配的广播收接者,则系统会自动调用该广播接收者的onReceive方法.那么我们就可以在这个方法做事了.

例如:当系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称“pdus”即可从Intent中获取短信内容。我们就可以写一个自已的广播接收者并且action定义为android.provider.Telephony.SMS_RECEIVED,那么当有短信收到后我们就可以在onReceive方法里面去获取短信的内容了.

在广播接收者做的事情不宜太复杂,耗时太长.大约在系统中BroadcastReceive的生命周期约5.超时后将会被回收,所以如果需要在onReceive方法做复杂的业务处理进最好开起一个线程来完成工作.

更多相关文章

  1. Android(安卓)ActionBar与ViewPager合用
  2. android Gridview生成程序快捷键的复杂方法
  3. 简叙 Activity 生命周期及android 返回按钮扑捉
  4. 在android下获取有线和无线IP地址的方法,经测试可用
  5. Android中在fragment A里面点击button跳转到fragment B实现方法
  6. framework——应用进程启动流程
  7. Android(安卓)几种图像特效处理的集锦
  8. Android(安卓)选择文件并加载数据到界面
  9. Android中几种图片特效的处理的实现方法

随机推荐

  1. Google官方提供的有用的Android范例程序,
  2. Android(安卓)Weekly Notes Issue #232
  3. 用kotlin打印出漂亮的android日志(三)—
  4. 如何申请Android(安卓)MapView的apiKey
  5. Android内存泄漏分析及调试
  6. 实现Android简单动画旋转案例源码
  7. Android(安卓)Test 基础知识
  8. Android侧滑控件之DrawerLayout的使用
  9. 使用TextView/EditText应该注意的地方
  10. android通过chmod命令实现文件权限修改