BroadcastReceiver

来源:互联网 发布:菜鸟阎王网络剧百度云 编辑:程序博客网 时间:2024/06/08 06:31

转载请注明出处,谢谢:http://write.blog.csdn.net/postlist

今天来更深入的了解一下广播

使用广播需要注意:

1.BroadcastReceiver的生命周期只有十秒左右:

所以,不能再BroadcastReceiver中做比较耗时的操作,而且也不能使用子线程做耗时操作,因为有可能你还没做完它的生命周期已经到了,主线程被杀死了,当然子线程也会被终结,如果需要执行耗时操作,可以通过发送Intent给Service,由Service来完成

2.如果是动态注册的广播,一定要在不需要的时候销毁掉

,比如Activity的onDestroy()方法中销毁unregisterReceiver(receiver);

广播的种类:

普通广播(Normal broadcasts)

 所有监听该广播的广播接收者都可以监听到该广播。

有序广播(Ordered broadcasts)

 按照接收者的优先级接收广播,优先级别在intent-filter中的priority中声明,-1000-1000之间,值越大,优先级越高,可以终止广播意图的继续,接收者可以篡改内容

异步广播(粘滞性滞留广播)

当处理完之后的Intent,依然存在,这时候registerReceiver(BroadcastReceiver,IntentFilter)还能收到他值,直到你把它去掉,不能将处理结果传递给下一个接收者,无法终止广播

普通广播特点:

同级别接收先后是随机的(无序)

级别低的后收到广播

接收器不能截断广播的继续传递也不能处理广播

同级别动态注册高于静态注册

有序广播特点:

同级别接收顺序是随机的

能截断广播的继续传递,高级别的广播接收器收到该广播后,可以决定把该广播是否截断

接收器能截断广播的继续传播,也能处理广播

同级别动态注册高于静态注册

粘滞性滞留广播特点:

   不能将处理结果传递给下一个接收者,无法终止广播







0 0
原创粉丝点击