美文网首页
Broadcast Receiver

Broadcast Receiver

作者: _爱笑的eyes | 来源:发表于2019-06-04 21:37 被阅读0次

1.系统广播

答:就是手机中自带的广播,例如 手机快没电了、拍照、屏幕的开关等等手机系统发出的广播,根据特定的指令发出的广播

2.粘性广播

答:sticky广播通过Context.sendStickyBroadcast()函数来发送,用此函数发送的广播会一直滞留,当有匹配此广播的广播接收器被注册后,该广播接收器就会收到此条信息。

3.有序广播

答:就是根据广播发出的先后顺序(优先级)进行接收 通过Context.sendOrderedBroadcast()来发送,所有的广播接收器优先级依次执行,广播接收器的优先级通过receiver的intent-filter中的android:priority属性来设置,数值越大优先级越高。                                                                                                                                                                                                                   

4.无序广播

答:完全异步,逻辑上可以被任何广播接收者接收到。优点是效率较高。缺点是一个接收者不能将处理结果传递给下一个接收者,并无法终止广播 intent 的传播。

普通的广播是不在意顺序的,最简单的理解是同时可以收到这个广播。如果应用是动态注册这个广播的,且广播发送时这个进程还活着,那么当然可以并发的把广播尽快地传送出去是最好的。

但是,如果是通过AndroidManifest.xml静态注册的情况,也就是说这个广播首先要把一个进程启动起来,这时并发启动很多进程就是个问题了。Android目前的做法是,对这种静态的广播接收者,自动按有序广播的方式来串行处理。但是这对应用是透明的,应用不能假设系统已经把静态的无序广播当成有序广播来处理。

普通广播的发送

Context类提供两个方法可以用于发送普通广播:

* sendBroadcast(Intent intent);

* sendBroadcast(Intent intent, String receiverPermission);

差别是第二个设置权限。

发给特定的用户:

* sendBroadcastAsUser(Intent intent, UserHandle user);

* sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission);

有序广播的发送

有序广播因为要处理消息的处理结果,所以要复杂一些。

* sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);

如果只是想让广播可以按优先级来收取,并不在意处理的结果,可以用下面的版本:

* sendOrderedBroadcast(Intent intent, String receiverPermission);

同样,在多用户环境下,也可以选择给哪个用户发广播:

* sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);

过时的粘性广播

不管是普通的还是有序的广播都对应有粘性的版本:

* sendStickyBroadcast(Intent intent);

* sendStickyBroadcastAsUser(Intent intent, UserHandle user);

* sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);

* sendStickyOrderedBroadcastAsUser(Intent intent, UserHandle user, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);

相关文章

  • Android BroadcastReceiver详解

    Broadcast Receiver是什么 Broadcast Receiver是四大组件之一,是一种广泛运用在应...

  • Activity之生命周期

    Android四大组件有Activity,Service,Broadcast Receiver,Broadcast...

  • Broadcast Receiver

    一、广播 1.广播定义 Broadcast Receiver是一种广泛运用的在程序之间传输信息的机制,androi...

  • Broadcast Receiver

    广播的定义 四大组件之一,是安卓应用程序之间传递信息的机制。我们要发送的广播内容是一个Intent,这个Inten...

  • Broadcast Receiver

    广播广泛运用于应用程序之间传输信息(进程间通信)的机制,而BroadcastReceiver是对发送出来的广播进行...

  • Broadcast Receiver

    一.广播 1.在Android中,Broadcast在应用程序之间传输信息的机制,我们发送的广播内容是一个Inte...

  • Broadcast Receiver

    广播的两种类型 标准广播(Normal broadcasts) : 是一种完全异步执行的广播,在广播发出后,所有...

  • Broadcast Receiver

    1.请描述一下 BroadcastReceiver(★★) BroadCastReceiver 是 Android...

  • Broadcast Receiver

    1.系统广播 答:就是手机中自带的广播,例如 手机快没电了、拍照、屏幕的开关等等手机系统发出的广播,根据特定的指令...

  • android-服务Service

    #组件 * Activity * broadcast Receiver * Service : 服务 > wind...

网友评论

      本文标题:Broadcast Receiver

      本文链接:https://www.haomeiwen.com/subject/mmqrxctx.html