我将加快Android开发的速度,隐含意图和广播接收器之间的区别还不清楚。我希望在区分这两个概念以及何时使用这两个概念方面得到帮助。
两者都接收意图,都对系统消息做出反应,那么为什么需要广播接收器,以及何时使用它,而不是使用隐式意图和意图过滤器来接受隐式意图?
发布于 2014-03-17 09:33:08
广播就是--向任何收听的人广播信息。它们本质上是不安全的,并且无法保证投递到预期的收件人,因为确实没有预期的收件人。例如,CONNECTIVITY_CHANGE
的广播清楚地表明了这一点:当安卓设备的连接发生变化时,许多应用程序可能会感兴趣。ConnectivityManager
不需要通过特定的Intent
通知每个应用程序,而是发送广播。任何对此事件感兴趣的应用程序都将收到通知。任何没有运行或不关心的应用程序...不会的。
当一个应用或Activity
想要启动另一个来做一些非常具体的事情时,就会“发送”一个Intent
。例如,文件管理器可能想要启动图像查看器或视频播放器。你的应用程序可能想要在你的另一个应用程序中启动一个非常特定的Activity
,等等。通过特定意图(例如,包括包名和组件名)进行的通信不容易被截获,因此它在某种程度上更安全。最重要的是,只有一个“接收器”--如果找不到任何接收器,Intent
就会失败。
此外,BroacastReceiver
将在Activity
或Service
中处于活动状态,并且接收到的广播通常只会更改状态和/或进行次要的UI更新...例如,如果internet连接中断,您可能会禁用一些操作。相比之下,特定的意图通常会启动新的Activity
或将现有的an带到前台。
https://stackoverflow.com/questions/22445413
复制相似问题