例如,我需要一个BroadcastReceiver来获取这些事件:

重新启动或关机

屏幕开或关

电池状态(电压,接通电源,温度)

物理按钮按下(相机,媒体等)

但是我需要监听器来获取以下事件:

用于传感器事件(加速度,磁场,方向,接近度,温度,光照水平等)的EventListener

用于位置事件的LocationListener(网络位置,GPS)

似乎接收方和监听方都存在,以便我可以接收事件。除了明显的语义差异之外,两者之间还有什么区别?我可以在其中一项上做其他事情,而不能在另一项上做,尤其是在屏幕关闭时我可以占用并运行多少CPU方面?为什么出于接收事件的目的有两种完全不同的构造?

最佳答案

两者之间的差异如此之多,它们对某些事物的回应是唯一的相似之处之一。

差异:

BroadcastReceivers接收Intent,而Listener基本上可以做任何事情,因为它没有定义的目的,所以只是一个命名约定。例如,在开发人员网站上搜索"BroadcastReceiver",然后搜索"Listener"

BroadcastReceivers刚收到一个非直接的Intent Broadcast,监听器被显式调用。

BroadcastReceiver是它自己定义的类,因为它具有明确的目的(接收Intent),而监听器可以是任何东西-它们通常是interface,并且提供它们是为了使回调可以从一个类到另一个类进行。

BroadcastReceivers通常用于全局的系统范围的事件,特定事件的监听器(即,位置传感器除非有某些东西(例如要向其发布的监听器),否则不应该每秒发送一次位置更新。 -这很重要,它影响到一切,因此应广播给所有感兴趣的接收者。

事件BroadcastReceiver接收的事件通常是非连续事件(一次触发),而监听器(取决于它们的工作)可以将用于持续更新(连续)。 如果在 list 中声明了

BroadcastReceivers,则系统可以将其实例化。仅动态创建监听器(因此通过代码)。

CPU/功耗的使用取决于两者的实现,尤其是因为如上所述,监听器可以是或。

Are there things I can do in one but not the other, especially in regards to things like how much CPU I can take and running while the screen is off?

BroadcastReceivers仅具有10 seconds of guaranteed execution time。监听器没有特定的用途,因此没有此限制。

您肯定无法从BroadcastReceiver做的事情:

In particular, you may not show a dialog or bind to a service from

within a BroadcastReceiver.

可能还有更多-这就是我想出的。

android监听器作用,android - 监听器和接收器(Android)有什么区别?相关推荐

  1. Android应用程序注冊广播接收器(registerReceiver)的过程分析

    前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/公布机制,因此,使用这样的消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息事实上就是注冊广播接收器, ...

  2. Android JNI作用及其详解

    Android JNI作用及其详解 Java Native Interface (JNI)标准是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 J ...

  3. Android适配器作用

    Android Adapter适配器 Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View. Andr ...

  4. not found for signing config ‘debug‘Android中meta-data的作用xmlns:tools=“http://schemas.android.com/

    目录 not found for signing config 'debug' Android中meta-data的作用 xmlns:tools="http://schemas.androi ...

  5. android intent-filter作用,Android--Intent和IntentFilter详解

    Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同时还是组件之间通信的重要媒介. 使用Intent启动组件的优势 1, Intent为组件的 ...

  6. android时间接收器,android – 在飞机模式关闭/打开后,广播接收器在onReceive()中接收的时间太长...

    我创建了一个简单的广播接收器,它工作得很好,除非我打开/关闭空中飞机模式,使用onReceive方法接收广播消息需要将近2分钟.另一件事是,如果我们启动应用程序然后如果我更改Air plane模式(开 ...

  7. Android开发之路--(2)--Android四大组件

    版权声明:本文为博主原创文章,转载请标明出处. https://blog.csdn.net/lyhhj/article/details/47214197     说实话我对Android的理解还是比较 ...

  8. 【Android开发日记】第一个任务Android Service!Service靴+重力感应器+弹出窗口+保持执行...

    前言: 近期在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Service启动和销毁,Service保持一直执行. 满足了自己的 ...

  9. Android应用开发基础 余永佳,Android应用开发基础(基于Android4.2、任务驱动式)教学课件作者余永佳赵佩华习题课件.doc...

    任务一 Android开发环境的搭建 第一部分 知识回顾与思考 1.Android的四层架构分别包括哪几层?分别起到什么作用? ?答:Linux内核层(Linux Kernel):基于Linux内核, ...

  10. 《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案

    <Android移动应用基础教程>(Android Studio)(第二版)黑马程序员 课后习题答案 目录 第1章 Android基础入门 第2章 Android常见界面布局 第3章 An ...

最新文章

  1. 【NIO】IO多路复用
  2. MFC/Windows API 使用过的函数(持续更新)
  3. hdu 5730 Shell Necklace——多项式求逆+拆系数FFT
  4. 使用XMLConfiguration解析xml,properties等相应信息
  5. 记录日志的测试软件_教程:测试期间的日志记录
  6. 计算机知识小技巧,计算机知识---基本操作小技巧.pptx
  7. 【Elasticsearch】es一个奇怪的问题 is_write_index fasle的时候还在写入 索引滚动无效
  8. RubyGem version error: rack(1.0.0 runtime)
  9. opencv 最大内接矩形_OpenCV之二值图像分析 – 寻找最大内接圆
  10. 管家婆婆分销ERP V3 打印报错
  11. 082-我最爱的周杰伦九张专辑
  12. 漫画 | 阿姨,我不想努力了~
  13. 头像设计,如何用PS制作个性头像
  14. 地震学儒略日转化成常规日期(python函数)
  15. Mongodb备份和还原
  16. 小学是否有计算机专业,小学计算机教学计划
  17. R语言数据读取以及数据保存
  18. LeetCode hot-100 简单and中等难度,41-50.
  19. 国内首部区块链行业纪录片开播
  20. 解决Sublime出现中文乱码的情况

热门文章

  1. springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成
  2. Java 深copy 浅copy 引用copy
  3. zookeeper命令
  4. 删不干净_“我劝你别删前任微信”
  5. css3动画animation,transition
  6. 继承(继承父类,super)
  7. [转]Oh My Zsh,安装,主题配置
  8. Servlet跳转到JSP页面后的路径问题相关解释
  9. win7/8/10安装过程中将动态磁盘转为basic
  10. mysql中char与varchar的区别分析