标准广播与有序广播

    标准广播:一种完全异步执行的广播,在广播发出去之后,所有的接收器几乎都会在同一时刻接受到这条广播消息,因此它们之间没有任何顺序可言。优点:效率高。缺点:无法截断。

    有序广播:一种同步执行的广播,在广播发出之后,同一时刻只有会有一个广播接收器能够接受到这条消息广播,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。优点,可以截断。缺点:效率低。

    标准广播的使用:

//直接创建Intent实例,在实例中添加action,然后发送广播即可
//xxxx代表需要添加的action
Intent intent = new Intent("xxxx");
sendBroadcast(intent);

   

    有序广播的使用:

//直接创建Intent实例,在实例中添加action,然后发送广播即可
//xxxx代表需要添加的action
Intent intent = new Intent("xxxx");
sendOrderedBroadcast(intent);

    那么如何截断有序广播呢?只需要在处理广播的onReveive函数中加入abortBroadcast()方法即可

     既然有顺序,那么一定有优先级,那么如何设定广播接收器的先后顺序呢?只需要将AndroidManifest.xml注册的广播接收器的<intent-fliter>标签中添加android:priority属性,如下<intent-fliter android:priority = "100">,就完成了设置这个广播接收器的优先级为100。

     那么如何实现广播接收器呢?广播接收器分为两种,动态注册静态注册

     动态注册的广播可以自由的控制注册与注销,在activity中定义内部类还可以实现更改ui。但是必须在启动程序之后才能接收到广播。如果要想实现在程序未启动的情况下就能接收广播,需要使用静态注册。

发布了113 篇原创文章 · 获赞 33 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_38367681/article/details/105675840
今日推荐