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

android BroadcastReceiver广播机制详解

2016-11-03 01:50 120 查看
Context 
     sendBroadcast(Intent intent)                 发送一般广播 
     sendOrderedBoardcast(Intent intent)        发送有序广播
     registerReceiver(receiver,intentFilter)     注册广播接收器
     unResisterReceiver(receiver)                 解注册广播接收器
BroadcastReceiver
     onReceiver(Context context,Intent intent)     接收到广播的回调
     abortBroadcast()                              中断广播的继续传播
     boolean isOrderedBroadcast()                  判断是否是有序广播
系统常见的广播:     
     开机完成广播:     android.provider.Telephony.SMS_RECEIVED
     收到短信广播:     Intent.ACTION_BOOT_COMPLETED
     应用被卸载广播     Intent.ACTION_PACKAGE_REMOVED
     手机锁屏          Intent.ACTION_SCREEN_OFF
     手机开锁          Intent.ACTION_SCREEN_ON
注册广播接收器
     静态注册(配置清单文件)
     <receiver android:name="BroadcastReceiver全类名"
          <!--指定当前receiver的优先级,范围1-1000,越大优先级越高-->
     <intent-filter android:priority="1000"/>
          <action android name="......">
     </intent-filter>
     </receiver>
动态注册(纯代码)
     XxxBroadcastReceiver receiver = new XxxBroadcastReceiver();
     IntentFilter filter = new IntentFilter(action);
     registReceiver(receiver,filter);
静态注册和动态注册的比较
 静态注册动态注册
注册方式配置清单文件java代码
注册的时间应用安装成功 手机开机完成 注册时不会创建对象, 接收到广播才创建执行registerReceiver(receiver ,intentFilter) 注册就创建对象
生命结束的时间 (解注册)应用卸载 对象执行onReceiver()后就回收了执行unregisterReceiver() (activity退出必须解注册) 解注册后对象被回收
应用情景需要监听的时间为 应用的整个生命过程只服务于某个Activity/service
无序广播与有序广播
 无序广播有序广播
方式context.sendBroadcast(Intent intent)context.sendOrderedBroadcast(Intent intent)
多人接收时是否有序无序,都会同时执行有序,根据优先级和注册先后依次执行
是否可以中断不可以可以,通过br.abortBroadcast() 中断后,后面的接收器不能接收到此广播


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息