码迷,mamicode.com
首页 > 其他好文 > 详细

广播 Broadcast Receiver

时间:2018-09-20 18:48:30      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:自己   逻辑   broadcast   标准   red   广播接收器   有一个   内部类   程序   

Android中的每个应用从程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己的所关心的的广播内容,这些广播可能是来自于系统,也可能来自于其他应用程序的。
android中的广播分为两种类型:标准广播和有序广播。
标准广播(Normal broadcasts):是一种完全异步执行的广播,在广播发出之后,所有的广播的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。
有序广播(Ordered broadcasts):则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播消息,当这个广播接收器的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先接收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。
 
接收系统广播:注册广播的方式一般分为两种,在代码中注册和在AndroidManifest.xml中注册,其中前者也被称为动态注册,后者被称为静态注册。
注册广播接收器:需要新建一个类,让它继承BroadcastReceiver,并重写父类的onReciver()方法就行了。
实现步骤:定义一个内部类,这个类是继承自BroadcastReceiver()的,并重写了onReceiver()方法,在这个类中写逻辑代码。在onCreate()方法,首先创建了一个IntentFilter的实例,并给它添加一个值为android.net.conn.CONNECTIVITY_CHANGE的action,每当网络发生变化时,系统发出的正是一条值为android.net.conn.CONNECTIVIITY_CHANGE的广播,也就是广播接收器想要监听什么样的广播,就在这里添加相应的action。接下来创建内部类实例,然后调用registerReceiver()方法进行注册,将实例和IntentFileter的实例都传了进去,这样实例就会收到android.net.conn.CONNECTIVIITY_CHANGE的广播,也就实现了监听网络的功能。最后,动态注册的广播接收器一定要取消注册才行,写一个onDestroy()方法,在里面调用unregisterReceiver()方法来实现。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

广播 Broadcast Receiver

标签:自己   逻辑   broadcast   标准   red   广播接收器   有一个   内部类   程序   

原文地址:https://www.cnblogs.com/xiaofeixx/p/9682530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!