Android BroadcastReceiver

  1. Broadcast Receiver:接听用户程序或系统程序所发出的broadcast intent,属于系统级别的监听器,拥有自己的进程,可以使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息,在应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。匹配Intent的BroadcastReceiver都可能被启动

  2. 事件广播要构建Intent然后调用sendBroadcast()方法将广播发出,事件的接收是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖起onReceiver(Context,Intent)方法,在该方法中响应事件,如果该方法10秒内没有完成,系统会认为程序无响应,该方法执行完BroadcastReceiver实例就会被销毁,Android系统中定义了很多标准的Broadcast Action来响应系统广播事件

  3. 广播接收器既可以在AndroidManifest中注册也可以通过代码方式来注册,一般我们是在Activity.onResume()方法中使用Context.registerReceiver(BroadcastReceiver,IntentFilter)方法来注册一个广播接收器(IntentFilter.setPriority可以设置receiver的优先级),在Activity.onPause中使用unregisterReceiver方法来注销一个广播接收器

  4. 两种注册广播方式的区别:
  • 动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低
  • 动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。
  • 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

由于BroadcastReceiver是一种全局监听器,因此可以利用来进行不同组件的通信,通过在组件中定义内部BroadcastReceiver类,接收其他组件的广播信息

发送广播:Context.sendBroadcast(Intent)会启动Intent参数对应的BroadcastReceiver Notification和NotificationManager用来实现可视化的信息显示

Broadcast被分为两种:
  • 普通广播:完全异步,可以再同一时刻(逻辑上)被所有接受者收到,传递效率高,但是接受者不能把处理结果返回给下一个接受者,而且无法终止Broadcast intent的传播。sendBoardcast()发送普通广播
  • 有序广播:接收者将按照预先声明的优先级依次调用onReceiver()方法接收Broadcast,优先级声明在<intent-filter>元素的android:priority属性中或者调用IntentFilter.setPriority进行设置,数值越大优先级越高,有序广播可以调用abortBroadcast()终止intent的传播,也可以把自己的数据通过setResultExtras(Bundle)方法传给下一个接受者,sendOrderedBroadcast()发送有序广播

AlarmManager:用来实现闹钟,提供了一种系统级的提示服务,允许安排在将来的某个时间执行一个服务

AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);  
 
 
posted on 2014-09-12 21:54 哨兵 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/phenixyu/p/3969151.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值