转载请注明出处,谢谢: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)还能收到他值,直到你把它去掉,不能将处理结果传递给下一个接收者,无法终止广播
普通广播特点:
同级别接收先后是随机的(无序)
级别低的后收到广播
接收器不能截断广播的继续传递也不能处理广播
同级别动态注册高于静态注册
有序广播特点:
同级别接收顺序是随机的
能截断广播的继续传递,高级别的广播接收器收到该广播后,可以决定把该广播是否截断
接收器能截断广播的继续传播,也能处理广播
同级别动态注册高于静态注册
粘滞性滞留广播特点:
不能将处理结果传递给下一个接收者,无法终止广播