关于android的广播接收器(1)—基础篇
2013-01-01 12:36
330 查看
大家上午好,新的一年,祝大家新年快乐,工作顺利,家庭幸福。在新的一年里,我也要求自己常写写博客,把自己从其他地方了解到的知识记下来,方便自己几他人查阅,本人也是android的菜鸟,还请大家多多指教,今天为大家介绍的是android四大组件之一的广播接收器(broadcast receiver)
一、广播接收程序
1.广播的定义
广播接收程序是android四大组件之一,可对客户端发出的广播消息作出响应的组件,消息本身是一个intent,可由多个接收程序接收
2.注册方式
a.动态注册,即通过程序注册(Context.registerReceiver()),程序退出后广播即实效
b.静态注册,即在manifest.xml中通过receiver tag注册,可作为全局广播
注意:对于动态注册,如果不执行Context.unregisterReceiver,也可作为全局广播,通常,在项目中,一般把注册放在Activity.onResume方法中,把取注册放在Activity.onPause中
3.发送广播
广播有两种接收方式
a.普通广播(Context.sendBroadcast)
完全异步的,所有的广播接收者在同一时刻以未定义的顺序运行。
b.顺序广播(Context.sendOrderedBroadcast)
所有的广播接收者按顺序执行,其中一个执行的广播接受者可以将结果传递给下一个广播接受者,也可以退出广播以便于不将结果传递到下一个广播接受者,可以在manifest.xml中使用android:priority属性来确定广播接收者的优先级。同一优先级的接受者将以随机顺序执行
二、广播高级话题
1.安全性
a.确保Intent的Action名称是你自己应用的命名空间,否则你会在不经意间和其他应用冲突
b.当你使用
c.可以使用[b]android:exported="false"来防止其他应用发送广播到你发布的广播接收者中[/b]
d.当你使用
3.进程生命周期
当前进程是指执行该广播接收程序的进程,它是一个前台进程,即使该广播生命周期结束后,也会继续运行,直到系统内存紧张被回收
如果当广播接收程序生命周期结束后,该进程就会变为空进程,有可能会被系统回收,你可以结合service和broadcast receiver使用,这样可以使该进程不被回收
三、demo示例
1.动态注册
该程序中,当点击按钮时会发送一个广播,在该广播中执行在控制台打印广播参数的操作,并且每隔10秒发送一次广播,当退出程序后该广播生命周期结束,不会再在控制台打印
2.静态注册
a.项目结构
b.MainActivity
c.TestReceiver2
d.AndroidManefist.xml
e.运行结果
点击按钮后回在logcat中一直打印消息,无论程序是否退出
好了,这就是今天将要讲的广播接收程序之基础篇,最后祝大家新年快乐!!!
一、广播接收程序
1.广播的定义
广播接收程序是android四大组件之一,可对客户端发出的广播消息作出响应的组件,消息本身是一个intent,可由多个接收程序接收
2.注册方式
a.动态注册,即通过程序注册(Context.registerReceiver()),程序退出后广播即实效
b.静态注册,即在manifest.xml中通过receiver tag注册,可作为全局广播
注意:对于动态注册,如果不执行Context.unregisterReceiver,也可作为全局广播,通常,在项目中,一般把注册放在Activity.onResume方法中,把取注册放在Activity.onPause中
3.发送广播
广播有两种接收方式
a.普通广播(Context.sendBroadcast)
完全异步的,所有的广播接收者在同一时刻以未定义的顺序运行。
b.顺序广播(Context.sendOrderedBroadcast)
所有的广播接收者按顺序执行,其中一个执行的广播接受者可以将结果传递给下一个广播接受者,也可以退出广播以便于不将结果传递到下一个广播接受者,可以在manifest.xml中使用android:priority属性来确定广播接收者的优先级。同一优先级的接受者将以随机顺序执行
二、广播高级话题
1.安全性
a.确保Intent的Action名称是你自己应用的命名空间,否则你会在不经意间和其他应用冲突
b.当你使用
registerReceiver(BroadcastReceiver, IntentFilter)时,其他应用也能够发送相关广播到那个注册的接收者中,这时你应 该使用相关权限来控制谁能够发送广播到那个接收者
c.可以使用[b]android:exported="false"来防止其他应用发送广播到你发布的广播接收者中[/b]
d.当你使用
sendBroadcast(Intent)时,通过一些权限控制来阻止发送广播到其他接收者中,从android4.0开始可以用Intent.setPackage
2.接收者生命周期
一个BroadcastReceiver对象的生命周期仅存在于onReceive方法中,当你的代码从该方法中返回时,系统会认为该接收者对象不再有效
不要在onReceive方法中进行一些异步操作的处理,因为该方法结束后整个接收者的生命周期就已经结束了
不要在onReceive方法中显示一个dialog或者绑定service,对于前者,你可以使用NotificationManager,而对于后者使用Context.startService来发送一个命令到service中
3.进程生命周期
当前进程是指执行该广播接收程序的进程,它是一个前台进程,即使该广播生命周期结束后,也会继续运行,直到系统内存紧张被回收
如果当广播接收程序生命周期结束后,该进程就会变为空进程,有可能会被系统回收,你可以结合service和broadcast receiver使用,这样可以使该进程不被回收
三、demo示例
1.动态注册
该程序中,当点击按钮时会发送一个广播,在该广播中执行在控制台打印广播参数的操作,并且每隔10秒发送一次广播,当退出程序后该广播生命周期结束,不会再在控制台打印
2.静态注册
a.项目结构
b.MainActivity
c.TestReceiver2
d.AndroidManefist.xml
e.运行结果
点击按钮后回在logcat中一直打印消息,无论程序是否退出
好了,这就是今天将要讲的广播接收程序之基础篇,最后祝大家新年快乐!!!
相关文章推荐
- 关于android的广播接收器(2)—高级篇
- android必备基础之广播接收器BroadcastReceiver
- Android BroadcastReceiver(广播接收器)基础
- Android基础知识整合篇——广播接收器知识点
- Android基础-broadcastreceiver(广播接收器)
- Android基础:广播接收器及其生命周期介绍
- Android基础知识巩固:关于PendingIntent和广播
- 关于AndroidManifest里注册广播接收器
- Android基础知识--10.Android广播接收器BroadcastReceiver
- Android基础总结(4)——广播接收器
- android 广播接收器之通知栏页面跳转
- android的开发基础之--------创建广播接收者的两种方式
- Android-基础-Android-studio中关于模拟器的-data目录不能显示的解决办法
- android基础笔记——广播接收者,实现短信监听
- Android 关于系统广播监听
- android基础学习之广播
- Android应用开发基础之七:广播与服务(一)
- Android开发之广播机制android 广播与广播接收器示例
- android关于注册广播接收者和注销的对应
- Android应用程序注冊广播接收器(registerReceiver)的过程分析