Broadcast Receiver

Broadcast receiver和activity、service组件一样都是接收intent的组件。一收到匹配的broadcast intent,broadcast receiver的onReceive(Context,Intent)方法立即运行,然后broadcast receiver就会被销毁;onReceive方法同样运行在主线程上,所以不能在此方法中进行耗时的重度任务,如网络连接或者数据的永久存储等。

作为Android四大组件之一,Broadcast receiver同样需要在系统中登记才能使用。登记有两种方式:在manifest配置文件中登记使用registerReceiverunregisterReceiver方法。


一、在manifest配置文件中登记

假如你的应用需要开机自启动,那么你就需要一个能监听BOOT_COMPLETED操作的broadcast intent的broadcast receiver。首先创建一个StartupReceiver新类:

public class StartupReceiver extends BroadcastReceiver {private static final String TAG = "StartupReceiver";@Overridepublic void onReceive(Context context, Intent intent) {// 对intent消息进行处理}}


然后再往manifest配置文件中加入登记代码并包含相应的intent-filter:

 <receiver android:name=".StartupReceiver" >            <intent-filter>                <action android:name="android.intent.action.BOOT_COMPLETED" />                <!-- 系统启动时,为匹配Android的Broadcast Intent -->            </intent-filter>        </receiver>
然后再添上可以接收BOOT_COMPLETED广播的权限就大功告成了:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


二、动态Broadcast receiver

通过Context.registerReceiver和Context.unregisterReceiver,动态的将触发器组件与所需要监听的事件进行绑定。通常会在Activity.onResume中进行触发器组件的注册,而在Activity.onPause中注销对应的触发组件。


广播事件的发送


一、无序广播

通过Context.sendBroadcast方法进行发送。所有注册了该广播事件的触发器组件都会获得事件通知,并不会按一定的顺序运行。


二、有序广播

通过Context.sendOrderedBroadcast方法进行发送。明显所有监听该事件的触发器组件,都会按照相应的优先级排序,从高到低依次处理该事件,下面是一个优先级最低的触发器组件的注册代码:

<receiver            android:name="NotificationReceiver"            android:exported="false" >            <intent-filter android:priority="-999" >                <action android:name="com.example.photogallery.SHOW_NOTIFICATION" />            </intent-filter>        </receiver>
同时,优先级高的broadcast receiver可以通过BroadcastReceiver.setResultCode(Activity.RESULT_CANCELED)来终止这个广播事件的传播,这样优先级低的broadcast receiver就不会在有机会处理该事件了。





更多相关文章

  1. android基础知识05:四大组件之Broadcast Receiver
  2. Android(安卓)View的onTouch和onClick和onLongClick事件
  3. android textview 如何实现像新浪微博@用户的点击事件
  4. 【边做项目边学Android】手机安全卫士05_2:程序主界面,为每个条目
  5. android的各种动作事件
  6. 【Android(安卓)View事件(二)】详解事件分发机制
  7. Android(安卓)RILD运行机制详解
  8. android ListView的item侧滑删除
  9. Android(安卓)getevent/senevent

随机推荐

  1. Android四大组件完全解析(一)---Activity
  2. android dialog小结
  3. Android(安卓)ListView 去除边缘阴影、选
  4. Android(安卓)TextView中的文字自动生成
  5. 相对布局常用属性介绍(RelativeLayout)
  6. android中的帧动画
  7. [Android]ListView美化:去阴影、底色、选
  8. 安卓开发,版本号管理总结android:versionC
  9. android:EditText属性
  10. 系出名门Android(9) - 数据库支持(SQLite