详解广播机制,Broadcast Receiver,Android进阶必备知识。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解广播机制,Broadcast Receiver,Android进阶必备知识。相关的知识,希望对你有一定的参考价值。

  唉···昨天写的博客,被博客园管理组嫌弃了。。。伤心!

  昨天就谢了广播的基本用法,今天就往深里扒扒,明天继续写关于广播的博客。

  昨天说的多是关于系统广播的接收,也是系统广播的接收,现在说说自定义广播的用法。先说标准广播的,拿昨天静态注册那个例子来说。其他地方都一样知识把清单文件里面的action给替换为我们自己定义的action就行了。

<receiver android:name=".BootCompleteReceiver">
            <intent-filter>
                <action android:name="com.example.broadcasttest.MY_BROADCAST" />
            </intent-filter>
        </receiver>

昨天这个例子是监听启动广播,现在我们让他监听我们自己定义的一个广播,只有监听不行,还需要有发送才行,下面写下广播是如何发送的。

Intent it = new Intent("com.example.broadcasttest.MY_BROADCAST"); 
sendBroadcast(it);

OK,这就是一个完整的自定义的广播了,这边用Intent去发送,那边的接收器就会有反映。都知道广播除了标准广播外还有一个有序广播,但是他们区别在哪里呢?那就是发送的方式不一样,刚才发送是用的:

sendBroadcast(it);


而有序广播用的是:sendOrderdBroadcast(it,null);
这就是区别!在这个方法里面有两个参数,第一个参数自不必说,第二个是一个与权限相关的字符串。
既然是有序广播,那么有序广播的接受者们必须需要排个优先级别了,那么他们是怎么排序的呢?也很简单,就是在清单文件中注册的时候在intent-filter中使用 android:priority = "100"这个属性来排序,数值越大优先级越高。

当然既然了,有序广播是可以被截断的。使用abortBroadcast();方法,在你需要截断的时候调用就ixng了,不调用说明你不需要截断它,他会按照优先级一个一个的传递下去,知道没有人来接受它。


好了,就写这么多吧,不想用博客园了,用了不到一周,真难受。看来要转移阵地了。

以上是关于详解广播机制,Broadcast Receiver,Android进阶必备知识。的主要内容,如果未能解决你的问题,请参考以下文章

详解广播机制,Broadcast Receiver,Android进阶必备知识。(附使用广播实现一键强制下线功能)

Android面试收集录2 Broadcast Receiver详解

Android Broadcast Receiver (广播接收者)

品茗论道说广播(Broadcast内部机制讲解)(下)

Android中Intent具体解释之使用Intent广播事件及Broadcast Receiver简单介绍

广播——broadcast