broadccastreceiver

来源:互联网 发布:python实现二叉树反转 编辑:程序博客网 时间:2024/05/22 13:16

1.简介

(1)全局监听器,系统中不同组件之间通信(拥有自己进程,即便程序结束了,只要存在于之匹配的intent消息,就会被激发)

(2)启动步骤:1.创建需要启动broadcareceiver的intent 2.调用context的sendBroadcast或sendOrderedBroadcast()方法启动指定broadcastreceiver

实现方法:重写onReceive(Context, Intent)方法,onReceive方法执行完成后,broadcastReceive 会自行销毁 配置:代码中或者mainfest中,

注意:onReceive方法不能执行耗时操作,否则会出ANR(android no response)对话框 ,如果需要broadcast执行耗时操作,通过intent启动service完成,不考虑使用新线程去执行耗时操作。因为它本身生命周期端,如果它所在进程结束了,虽然进程内还有此线程,单该进程无任何活动组件,内存紧张时优先结束该进程,导致子线程任务不能完成。

(3)与activity不同,当系统通过intent指定activity组件时 ,若不存在,程序会异常终止,但找不到合适broadcastreceive组件,应用不会有任何问题

2.注册方式

静态注册:maifest中注册,拥有自己进程,即便程序结束了,只要存在于之匹配的intent消息,就会被激发

动态注册:通常在service或者activity中,如果他们结束ondestroy时broacast未解除绑定会报异常,这种方式生命周期会跟随程序生命周期

3.普通广播和有序广播(多个接收者注册了相同广播地址)

(1)普通广播:nomal broadvast

同一时刻被所有接收者接收到,传递效率高,缺点:接收者不能将消息传给下一个接收者,无法终止broadcastintent的传播,完全异步

(2)有序广播(ordered broadcast)

接收者按照预先声明的优先级依次接收broadcast,数越大级别越高,

a。接收者可终止,后续接收者无法收到

b。调用 setResultExtras(bundle);可以对消息进行处理 ,将数据传递给下一个接收者




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脸上有螨虫怎么办才能去除 老鼠被剪丁丁后怎么办 1楼下水道钻老鼠怎么办 月经来了奶水少了怎么办 孕37周霉菌严重怎么办 家里进了飞蚂蚁怎么办 家里进了大蜘蛛怎么办 衣服上有蟑螂卵怎么办 被子上有蟑螂卵怎么办 厨房里的小飞虫怎么办 水果生的小飞虫怎么办 家里的厕所有虫怎么办 人吃了蟑螂药怎么办 静电贴粘不住了怎么办 会飞的蚂蚁咬了怎么办 家里有白蚁怎么办能除根 华为畅享5s黑屏怎么办 家里有个蚂蚁窝怎么办 宿舍有老鼠爬床怎么办 楼上的狗叫扰民怎么办 楼下的狗一直叫怎么办 焊机通电没反应怎么办 输了3万块钱怎么办 行吊遥控器掉了怎么办 狗狗耳朵尖结痂怎么办 蚊帐里进了蚊子怎么办 孕妇用了点蚊香怎么办 孕妇用了电蚊香怎么办 房子里用蟑螂药怎么办 永恒之塔卡住了怎么办 银行口令卡丢了怎么办 面膜过敏脸肿了怎么办 洛奇英雄传fps低怎么办 开阴阳眼看到鬼怎么办 boss直聘爽约了怎么办 微信零钱未到账怎么办 微信因赌博封了怎么办 微信号不想要了怎么办 永恒战士2闪退怎么办 龙之谷转职错了怎么办 龙之谷忘记账号怎么办