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

Android-BroadcastReceiver

2015-07-02 10:04 543 查看
Android-BroadcastReceiver

一 引入原因

1,在系统内通知和判定执行状态:开机了, TF卡插拔, 关机了

2,自定义执行状态:发消息提醒更新界面

二 接收哪些消息

1,常规消息

Normal broadcast,通过Content.sendBroadcast发送

2,排序消息

Ordered broadcast,通过Content.sendOlderedBroadcast发送

三 如何接收系统级的消息

1,继承BroadcastReceiver类重写一个类

2,重载onReceive回调方法,在主线程中实现,接收消息执行的时间必须小于10s(避免ANR),

如果接受操作比较复杂,就需要开启子线程

3,配置manifest文件权限,和

四 黏性的有序广播

广播是具有黏性的,与广播相关联的intent在广播完成后依然存在。

要发送具有黏性的有序广播,使用Content类的sendStickyOrderedBroadcast()方法

五 注册广播接收器

1,动态注册

在Activity中动态注册

在onResume()方法中调用registerReceiver()方法

在onPause()方法中调用unregisterReceiver()方法

2,静态注册

在manifest文件静态注册

<receiver android:name=".MyBroadcastReceiver">
<intent-filter android:priority="10">//优先级
<action android:name="com.chengzhi.action"/>
</intent-filter>
</receiver>


六 注意

1,在intent-filter中设置黏性广播的优先级android:priority=”10”,数值大的优先

系统消息是排序广播,优先级一般为负数

2,在onReceiver中可以退出广播abortBroadcast()

3,四大组件都需要需要在manifest文件中注册

4,系统启动的时候启动服务如何实现

接收系统消息,在回调onReceive方法中开启服务

5,同步与异步

同步,需要一步一步执行

异步,同时执行,发送消息

6,BroadcastReceiver宿主进程生命周期:

receiver到信息后会启动宿主进程,当返回后

如果没有其他交互,宿主进程状态变为空进程,因此如果要长期运行宿主进程

就startService

7,为何receiver接收到消息就会启动相应的进程:

在安装时放入系统哈希(根据intent排列)链表里面,

消息管理在分发的时候就在链表里面寻找所要分发的进程,然后启动它
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: