码迷,mamicode.com
首页 > 移动开发 > 详细

Android开发之BroadCastReceiver

时间:2016-07-16 00:03:12      阅读:341      评论:0      收藏:0      [点我收藏+]

标签:

创建广播接收者:只需新建一个类继承自BroadcastReceiver,然后重写onReceive方法

注册广播的方式有两种:

1.静态注册:即在清单文件中注册,例如下面监听打电话的广播:

<receiver android:name=".MyBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
</receiver>

 

1.动态注册:即在代码中注册,例如:

MyBroadcastReceiver receiver = new MyBroadcastReceiver();
String action = "android.intent.action.NEW_OUTGOING_CALL";
IntentFilter intentFilter = new IntentFilter(action);
registerReceiver(receiver,intentFilter);

动态注册的广播需要在onDestroy方法中解除注册

unregisterReceiver(receiver);

note:动态注册的广播依赖于注册广播的组件的生命周期

而静态注册的广播一旦注册,就一直存在

广播的类型与广播接收者在清单文件中配置的类型要一致,否则无法接收到广播

 

广播分为有序广播和无序广播

无序广播:通过sendBroadcast(intent)发送,不能被拦截,所有的广播接收器都可以几乎同时收到,没有先后顺序可言

有序广播:通过sendOrderedBroadcast(intent,null)发送,在广播发出后,同一时刻只有一个广播接收器可以收到,执行完毕,广播才可以继续传递

高优先级的广播接收器先接收到广播,还可以使用abortBroadcast()终止广播,


优先级可以通过android:priority=""参数来设置,范围是-1000~1000

如果两个广播接收者的优先级相同,则先注册的组件优先接收到广播

如果两个应用程序监听了同一个广播事件并设置了优先级,则先安装的应用优先接收到广播


小技巧:如果需要广播接收者无论如何都要接收到广播,不管它的优先级是最低,或者被优先级高的终止

可以调用sendOrderedBroadcast(intent,null,receiver,null,0,null,null);

第一个参数是intent,第三个参数是指定接收的广播接收者对象

Android开发之BroadCastReceiver

标签:

原文地址:http://www.cnblogs.com/cxsy/p/5674634.html

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