浅谈 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
相关文章推荐
- 【Android成长之路】全局大喇叭——广播机制的浅谈(使用本地广播)
- Android内存管理试验——浅谈ImageView的Bitmap的使用
- 浅谈Android系统中drawable的使用
- android四大组件之Broadcast(广播)使用详解
- 浅谈Android 的线程和线程池的使用
- android 使用广播监听网络状态
- 浅谈 Android服务的使用
- android系统广播使用经验
- 使用Android广播碰到的问题
- Android广播的使用
- android 广播的使用
- Android中BroadcastReceiver(异步接收广播Intent)的使用
- 浅谈android本地数据库(SQLite)使用
- android 使用广播监听网络状态
- android 使用广播 接收和拦截 android系统短信
- 浅谈android中仅仅使用一个TextView实现高仿京东,淘宝各种倒计时
- android 使用广播监听网络状态
- 浅谈Android中关于静态变量(static)的使用问题
- android广播(内部类)使用
- Android中使用广播机制退出多个Activity