Android面试题之Broadcast Receiver篇

1.如何注册 BroadcastReceiver


在清单文件中注册广播接收者称为静态注册,在代码中注册称为动态注册。

静态注册的广播接收者只要 app 在系统中运行则一直可以接收到广播消息,

动态注册的广播接收者当注册的 Activity 或者 Service 销毁了那么就接收不到广播了。

静态注册:在清单文件中进行如下配置

动态注册:在代码中进行如下注册

receiver = new BroadcastReceiver();

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction(CALL_ACTION);

context.registerReceiver(receiver, intentFilter);

2.Android 引入广播机制的用意


  • a.从 MVC 的角度考虑(应用程序内) 其实回答这个问题的时候还可以这样问,android 为什么要有那 四大组件,现在的移动开发模型基本上也是照搬的 web 那一套 MVC 架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的 MVC 架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。

  • b.程序间互通消息(例如在自己的应用程序内监听系统来电)

  • c.效率上(参考 UDP 的广播协议在局域网的方便性)

  • d.设计模式上(反转控制的一种应用,类似监听者模式)


3.两种注册各有什么优缺点


静态注册

  • 常驻,当应用程序关闭后如果有信息广播来,程序也会被系统调用,自己运行。

  • 无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器就是打开着的。

动态注册

  • 不常驻,广播会跟随程序的生命周期。

  • 在 Android 的广播机制中,动态注册优先级高于静态注册优先级,因此在必要情况下,是需要动态注册广播接收者的。

  • 当用来注册的 Activity 关掉后,广播也就失效了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值