您的位置:首页 > 其它

广播(BroadcastReceiver)---安卓中的"四大天王"之一

2016-08-15 23:08 399 查看
转载请声明:http://blog.csdn.net/u013519020/article/details/52215031

概述

1、广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态。

2、应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接收器均继承自BroadcastReceiver基类。

3、广播接收器没有用户界面。然而,它们可以启动一个activity来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

属性卡
姓名:BroadcastReceiver

身份:四大组(tian)件(wang)之一。

成员:广播的接受者和广播的发送者。
近亲:收音机

星级:远古神卡

限制:一个程序可以有任意多个。

详情:实际上是一种全局监听器,监听全局的广播消息。

广播的种类:

1.普通广播:所有的接收者都可以接收该广播。同级别接收顺序随机,级别低后收到,接收器不能截断或处理广播,同级别动态注册高于静态注册。

2.有序广播:可以设定接收的顺序,优先级在intent-filter中的priority中声明,范围:-1000到1000,值越大优先级越高,可以终止广播意图的继续传播,接收者可以修改内容。同级别接收是随机的,能截断修改广播,同级别动态注册高于静态注册。

3.异步广播:不能将处理的结果传给下一个接收者,不能终止广播。

使用步骤:

1.创建BroadcastReceiver对象(继承抽象类)------2.注册------3.发送广播消息
事件分类

1.系统的广播事件
2.自定义的广播事件,Intent intent = new Intent("触发器的监视字符串");

注册方式
1.XML文件里注册
2.在程序中以registerReceiver()注册

-------------------------代码实现------------------------------
创建对象:
//创建一个BroadcastReceiver 对象
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){
//接收到广播后要执行的内容
@Override
public void onReceive(Context context, Intent intent) {
System.exit(0);
}

};

注册:
IntentFilter intent = new IntentFilter();
//设置广播的频道,相当于过滤器名
intent.addAction("com.ambow.sendMessage");
//注册
this.registerReceiver(mBroadcastReceiver, intent);


广播:
//创建消息
Intent intent=new Intent("com.ambow.sendMessage");
//发出广播
sendBroadcast(intent);


注意:
     1、BroadcastReceiver的寿命只有五秒左右,五秒真男人!不要做耗时操作,不要超过五秒,后果就是程序出现无响应错误。
     2、不要用来创建子线程,或使用子线程做耗时操作,因为一旦子线程没有在BroadcastReceiver被销毁之前完成任务,就会失去对于子线程的操控,可能会造成内存泄漏。
     3.对于耗时任务多交于service来处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: