Android-BroadcastReceiver

来源:互联网 发布:虾米音乐如何解绑淘宝 编辑:程序博客网 时间:2024/06/05 19:30

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排列)链表里面,
消息管理在分发的时候就在链表里面寻找所要分发的进程,然后启动它

0 0
原创粉丝点击