android成长日记 10.关于BroadcastReceiver的详细说明

广播看完了,然后回过头写一下,其实就是分为几种广播,

广播分为动态注册和静态注册,,,广播又分为系统广播和自定义广播, ....发送方式又分为,有序广播和无序广播....发送广播又分为直接send和利用localBroadcast.send两种,所有这里面的变化就有2*2*2*2种方式,我擦看着很简单的事情,一下出来这么多方式,

动态注册:就是你在Activity中注册,你需要一个BroadcastReceiver类的子类的实例 和 一个intentFilter中添加了action(你想要的系统广播或者自定义广播字符.)  这俩就是要作为参数  传给registerReceiver(BroadcastReceiver , intentfilter);  记住重写ondestroy函数啊.调用unregisterReceiver(BroadcastReceiver)函数,参数主要那个BroadcastReceiver的子类.

特点:Activity不启动这个广播就不会被接手,这就是动态的意思

 

静态注册: 就是在manifest文件中进行注册,添加一个Receiver,在里面添加Intentfilter,然后添加Action,然后定义name(选系统的就是系统广播,自己设计就是自定义广播

    静态注册的程序不用运行,在后台就会监听广播,

系统广播和自定义广播就不多说了.唯一需要点明的事情就是:系统广播你是不用写触发逻辑的,因为系统在特定情况下就会发出,,,你只是一个接受者的姿态,(你只需要选择是静态注册还是动态注册就行了),但是自定义广播,你必须自己发送广播才行,因为是自定义,嘿嘿.说道发送广播.就 引入下面的这一段

发送广播方式:有序广播和无序广播

无序广播:就是默认的发送形式,你只需声明初始化一个intent("你的广播特征值");然后要使用sendBroadcast(intent);来发送就好了.

有序广播:就是程序在接受广播时候,是有优先级的,优先级高的程序先接受,你只需要在发送的时候调用sendOrderedBroadcast(intent)就行了,如果你想阻断广播咋办,只要在你想要的程序的Manifest文件中声明Intentfilter中设置Android:priority= 100(越高越早);就会优先到你的程序

.你在receive方法中最后调用abordBroadcast();方法广播就被阻断了.

针对自定义广播:在发送的时候可以选择广播类型

全局广播:就是默认的广播,所有程序都可以收到.发送的时候直接sendBroadcast();

本地广播:就是只有本程序自己可以收到广播,比较安全.需要使用LocalBroadcastManager.getinstance()获得LocalBroadcastManager()的实例然后调用.sendBroadcast();来发送:但是你注册的时候必须使用动态形式来注册,至于为啥你还用我跟你解释,代表你还不懂,因为只是你自定义本地广播,只能使用localBroadcastManager.registerBroadcast();才行;unregisterBroadcast来取消注册....

 

这就算全部基础内容了下边写个例子:

 

例子不写了郁闷啊,我发现了.静态注册自定义广播,不能设置弹窗,否则就只能弄一个透明的activity假装弹窗.动态注册时没啥异常,就这样吧贴出连接吧

http://www.zhihu.com/question/37849134

 

 

 

 

 

 

 

 

你可能感兴趣的:(android成长日记 10.关于BroadcastReceiver的详细说明)