广播类型

广播类型:

普通广播通过Context.sendBroadcast(Intent myIntent)发送的

有序广播通过Context.sendOrderedBroadcast(intent, receiverPermission)发送的,该方法第2个参数决定该广播的级别,级别数值是在 -1000 到 1000 之间 , 值越大 , 发送的优先级越高;广播接收者接收广播时的级别级别(可通过intentfilter中的priority进行设置设为2147483647时优先级最高),同级别接收的先后是随机的, 再到级别低的收到广播,高级别的或同级别先接收到广播的可以通过abortBroadcast()方法截断广播使其他的接收者无法收到该广播,还有其他构造函数

异步广播通过Context.sendStickyBroadcast(Intent myIntent)发送的,还有sendStickyOrderedBroadcast(intent, resultReceiver, scheduler,  initialCode, initialData, initialExtras)方法,该方法具有有序广播的特性也有异步广播的特性;发送异步广播要: <uses-permission android:name="android.permission.BROADCAST_STICKY" />权限,接收并处理完Intent后,广播依然存在,直到你调用removeStickyBroadcast(intent)主动把它去掉

eg:
//广播接收器的实现类里边
onReceive(){


if (isInitialStickyBroadcast()) {
                removeStickyBroadcast(intent);
            }

}

注意:发送广播时的intent参数与Contex.startActivity()启动起来的Intent不同,前者可以被多个订阅它的广播接收器调用,后者只能被一个(Activity或service)调用

例子:使用sendStickyBroadcast发送广播,当你的接收器还未注册时,他会自己保留最后一个intent,当注册后,他就会发出

而用普通的发出后不管接收器有没有注册,不会再有下次的广播了,接收不到,就没了

posted @ 2013-03-12 20:58  隐没  阅读(1092)  评论(0)    收藏  举报