分享好友 移动开发首页 频道列表

广播Broadcast Receiver

Android开发  2016-11-16 09:270

广播的类型:

1、标准广播(Normal broadcat)

完全异步执行的广播,所有广播接收器同一时间接收广播消息。

效率高,但无法被截断。

2、有序广播

同步执行的广播,同一时刻只能有一个广播接收器接收广播消息,当执行完毕后才会继续传递。

优先级高的先收到广播,并且可以截断广播。

接收系统广播:

注册:动态注册(代码)和静态注册(AndroidaManifest.xml)

动态广播:

1、继承Broadcastreceiver

2、重写onReceive()方法

3、注册registerReceiver()

4、动态注册的广播接收器一定要取消注册,unregisterReceiver()

5、声明权限在AndroidManifest.xml中

静态广播接收器在AndroidManifest.xml中通过<receiver>标签进行注册,

<receiver android:name=".BootCompleteReceiver ">
  <intetn-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED">   //开机广播
  </intent-filter>
</recevier>

广播接收器中不允许开启线程,不要添加过多逻辑或进行任何耗时操作。

自定义广播:

1、标准广播:

(1)定义一个广播接收器

(2)在事件里加入自定义广播的逻辑

(3)构建Intent对象,传入要发送的广播的值

(4)调用sendBroadcast()方法,发送广播

(5)在AndroidManifest.xml中<receiver>注册

2、有序广播:

基本与标准广播一样,发送调用sendOrderedBroadcast()方法。

在AndroidManifest.xml中设置优先级<intent-filter android:priority="100">

截断广播调用abortBroadcast()方法

本地广播:(解决安全性问题)

使用LocalBroadcastManager对广播进行管理。

(1)通过LocalBroadcastManager.getInstance(this)获取他的实例

(2)构建LocalReceiver类

(3)通过LocalBroadcastManager的registerReceiver()方法进行动态注册。方法中包含2个参数localReceiver和intentfilter

(4)调用LocalBroadcastManager的sendBroadcast()方法进行发送广播

(5)在onDestroy()方法中取消注册

本地广播无法使用静态注册的方式来接收。

查看更多关于【Android开发】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Supporting Multiple Screens
术语和概念Screen size 屏幕尺寸又称「屏幕大小」,是屏幕对角线的物理尺寸。单位英寸 inch,比如 Samsung Note4 是 5.7 英寸。Resolution 屏幕分辨率屏幕纵横方向上物理像素的总数,比如 Samsung Note4 是 2560x1440,表示纵向有 2560 个像素,横向有 1440

0评论2017-02-05363

Android插件化(4):OpenAtlasの插件的卸载与更新
如果看过我的前两篇博客Android插件化(2):OpenAtlas插件安装过程分析和Android插件化(3):OpenAtlas的插件重建以及使用时安装,就知道在插件的安装过程中OpenAtlas做了哪些事,那么插件的卸载就只需要把持久化和内存中的内容移除即可。1.插件的卸载插件卸载的

0评论2017-02-05229

个人简历
吴朝晖/男/1993.1本科/南京师范大学中北学院信息系工作年限:1年以内技术博客:wuzhaohui026.github.ioGitHub:https://github.com/wuzhaohui026期望职位:Android开发(初级Android工程师)期望薪资:税前月薪5.5k~7k期望城市:常州工作经历常州慧展信息科技有

0评论2017-02-05126

Android插件化(五):OpenAtlasの四大组件的Hack
引言到目前为止,我们已经分析了OpenAtlas中插件的安装,卸载,更新,以及安装好插件之后组件类的加载过程,但是对于这些是如何引发的还不知道,比如,在宿主的一个Activit中调用startActivity()跳转到插件中的一个Activity,如何判断这个Activity在的插件是否

0评论2017-02-0598

更多推荐