您的位置:首页 > 移动开发 > Android开发

浅谈 Android广播 BroadcastReceiver的使用

2013-05-24 09:55 274 查看
广播接受者接收从sendBroadcast()这种类型的方法中发送过来的意图。首先要先写一个类去继承BroadCastReceiver,然后重写 receive()方法GOOGLE API中建议,如果广播不在进程间通信的话,建议使用LocalBroadcastManager,因为普通的广播可以跨进程。LocalBroadcastManager 通过 getInstance(Context context) 返回一个实例通过 registerReciver(Broadcastreceiver receiver, IntentFilter filter) 来注册广播通过 sendBroadcast(Intent intent)方法发送广播通过 unRegisterReceiver(BroadcastReceiver receiver)来注销一个广播广义上的广播分以下几个步骤:1.发送广播 广播的发送有以下几种方式:1.1 发送一个普通的广播(Normal Broadcasts) sendBroadCast(Intent intent),发送一个无序的广播,通过new Intent(String action)中的action来表示一个广播的特定行为,这样任何与之相匹配的广播接受者都能接受到这个广播,这种广播无法被截断。1.2 发送一个有序的广播(Ordered Broadcasts) sendOrderedBroadCast(),发送一个有序的广播,广播按照优先级的顺序依次发送给接受者,一个接受者收到广播后,可以选择截断这个广播,让这个广播不再传输下去,或给这个广播追加结果并将追加的结果通过广播传输给下一个接受者。接受者的优先级是通过(android:priority)这个来规定的,数值越大,优先级越高2.注册广播两种注册方式:2.1 在清单文件中注册:<receiver android:name="com.broadtest.MyReceiver3" android:exported="false"> <intent-filter android:priority="9"> <action android:name="orderSend"/> </intent-filter> </receiver> <receiver android:name="com.broadtest.MyReceiver4" android:exported="false"> <intent-filter android:priority="8"> <action android:name="orderSend"/> </intent-filter> </receiver>2.2 在代码中动态注册:3.注销广播注意,在activity中注册和注销广播的时候,其生命周期要一一对应,例如:如果在Activity 中的 oncreate()中注册,就要在onDestory()中注销,在onResume()中注册,就要在onPause()方法中注销,API建议在onResume()和onPause()中注册和注销,因为这样可以节省Android资源的开销在使用广义广播的时候需要注意的问题:1.安全问题:1.1 注册接受者的时候,一定要 android:exported=”false”,否则这个接受者会接收任何符合 intentFilter规则的广播1.2 要通过权限(清单文件---<user-permission>)来限制发送广播给任何程序的接受者,或者使用SDK14以上的版本中的 Intent.setPackage2.广播的生命周期广播只在receive(Context Intent)方法中有效,一旦出了这个方法,广播的生命周期就结束,大概的时间好像是10秒,所以不能在里面进行任何异步或者耗时的操作。3.广播所在进程的生命周期广播在生命周期的有效期内时,它只能在前台进程中运行,一旦广播结束,这个进程可能被杀掉,所以不能在这个进程中进行异步操作。本文出自 “我家的小狗会唱歌” 博客,请务必保留此出处http://plutus168.blog.51cto.com/1897638/1208583
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: