Android基础: 静态广播接收者、动态广播接收者比对(文末附面试题)

本文介绍了Android中静态广播和动态广播的注册、使用及区别,强调动态注册的生命周期依赖,静态注册的常驻特性。通过一个简单的demo展示了如何发送和接收自定义广播。补充说明了广播接收器不应在onReceive()方法中执行耗时操作,建议通过Service处理。最后列举了一些广播接收器的面试题,包括BroadcastReceiver的工作原理、应用场景、实现方式和安全性问题。
摘要由CSDN通过智能技术生成

静态广播接收者、动态广播接收者对比

 

知识点提取出的demo:

用两种方式实现如下需求(使用动态和静态注册广播):编写一个程序,要求在activity中点击一个button,发送一个广播(该广播的intent中携带一个字符串数据),自定义一个广播接受者,接收到这个广播之后toast显示activity发送过来的内容。

 

 

相关知识点:

      广播接收器可以自由地对自己感兴趣的广播进行注册,这样当有相应的广播发出(demo中button按钮)时,广播接收器就能够收到该广播(demo中的接收广播),并在内部处理相应的逻辑(toast显示activity发送过来的内容).注册广播的方法一般有如下两种:

静态注册:在AndroidManifest.xml中注册广播。AndroidManifest中声明<receiver>,需要在其中配置<intentfilter>指定接收广播的动作(action)。主要用于一般性的广播。

动态注册:在Java代码中注册。一般用于发送频次高的广播,比如接收手机每时每刻的电量、屏幕的开启与关闭。

 

两种注册的区别:代码注册,它不是常驻型广播,也就是说广播跟随程序的生命周期,一旦代码所在进程被杀死,广播接收者就失效。清单文件注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。一旦应用程序被部署到手机,广播接收者就会生效,高版本的模拟器(3.2以上)中的接收者,需要启动过一次才能接收到广播。

 动态注册的广播接收器可以自由地控制注册与注销,在灵活方面有很大的优势,但是也存在一个明显的缺点:必须程序开启后才能接收到广播,因为注册的逻辑实在onCreate方法中写的.比如我们需要让程序接收一条开机的广播,就需要使用静态注册了.

 

demo代码实现(文后有源码链接):

 

(1) 注册动态广播:

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值