的Android广播接收机VS服务[重复](Android Broadcast Receiver v

2019-07-18 18:46发布

这个问题已经在这里有一个答案:

  • 广播接收器VS服务 2个回答

我想澄清的广播接收器,服务于机器人之间的差异。

据我所知,一个活动可以通过调用启动服务startService与意图。

一种广播接收机,可以在代码或清单被登记,并且可以与被称为sendBroadcast

你什么时候会使用一个VS其他?

据我所知,多个广播接收机可以监听目的相同,这是不是与服务的情况。

Answer 1:

服务都是为了一段时间,以在后台执行的动作,无论什么样的用户在前台做(用户可以活动之间进行切换)。 一个很好的例子将是一个音乐播放器服务 - 用户开始通过音乐播放器应用程序播放音乐,但是当他们退出该应用程序的音乐继续播放。

服务也提供/管理跨多个应用程序的资源的公共访问有用。 这通常用于系统资源,如传感器。

广播接收机是为了一个目的响应(通常是一个由服务或系统事件发送),做一些事情,并完成。 这里有一个例子可能是用户触摸具有NFC功能的手机标签,系统为它创建了一个意向,并注册接收器处理它更改一些设置(改变音量,开启蓝牙,等等)。

当一个意图通过sendBroadcast播出,它会被发送到具有匹配意图过滤所有接收器。 然而,需要注意的是,在API26 +在清单登记的大多数接收机是在这种情况下不再被调用,看看它是重要的谷歌文档的更多信息 。


例1:假设你想公开一个功能(可从任何想要使用它的任何应用程序),要求网站从凯文·贝肯计算分离度。

注意,这个例子是“做一些事情,回报”,而不是进行长时间运行的后台操作。

你可以通过多种方式实现这一点:

创建一个库项目,所有用户编译到他们的应用程序。

  • 现在有你的代码的多个副本,它们都可能是不同的版本。
  • 你可以不批或缓存请求为每个请求都被单独处理。

创建一个广播接收器来处理每个请求。

  • 您的应用程序注册广播接收器接受的意向,要求培根问题
  • 每个应用程序发送一个Intent要问的问题。
  • 的广播接收机接受的意图和任一
    • 将请求传递到服务做的处理中,它发送一个Intent给请求者,结果
    • 发送到将使用谷歌云消息当它这样做响应服务器的请求
  • 因为所有的请求都通过一个应用程序,你可以批量/缓存结果
  • 这始终是异步
  • API是“意图” - 不要暴露你的功能友好的方式

创建一个服务来处理每个请求

  • 你的应用程序创建一个服务来处理请求,并通过粘结剂或使用AIDL公开的API
  • 该API可以是同步的(直接调用和返回)或异步(允许听者注册和呼叫听者当结果是准备好)。 如果处理预期是非常快的,你应该只选择同步; 服务器调用应该多进行异步处理
  • API是“方法调用” - 揭露功能的更友好的方式

例2:你需要执行一些数据分析,以查找数据的一些模式

后台线程如果所有的处理应该发生,而用户在同一个应用程序,并在同一个活动,一个后台线程(或管理后台线程的的AsyncTask)将是一个很好的方法

服务如果你希望允许用户退出时正在执行的处理的应用程序(后来通知他们的结果),或允许他们通过在同一个应用程序的多个活动的进展情况,同时进行的处理,服务会是更好的方法



Answer 2:

广播接收器

报价在Android开发者博客戴安娜Hackborn :

当处理一个广播时,应用程序被赋予一组固定的时间(当前10秒),在其中完成其工作。 如果没有在该时间内完成,该应用程序被认为是行为不端,其过程会立即扔进背景状态,如果需要被杀害的记忆。

广播接收机由时间最大数量的限制(10秒通常),它们具有完成。

服务

如果你的动作需要一定的时间较长(连接到互联网,可以采取一些)preferrably更多的后台运行。 你一定要打电话从接收机或活动为这个目的服务。 他们最后通过Android操作系统被杀死。

结论:

  1. 一般来说所有这些重要的是你的应用程序应该被移动到工作(获取,解析,缓存,更新数据库) Service ,因为他们长期生活在Android上。 正如你几乎认为所有的社交网站都存在STICKY_SERVICES它做所有麻烦的工作。

  2. BroadcastReceiver大多用于启动该服务。 这通常取决于应用。 大多数应用程序的使用ConnectivityManager广播时网络是上涨或下跌。 有了这些的帮助Service被启动BroadcastReceiver



Answer 3:

首先,读取两个文件广播接收器和服务 。

你可以找到有用的教程在这里和这里 。

最后,为了使长话短说:

服务开始根据您的要求(startService(意向))。 你能想到的广播接收器作为意向听众的。



文章来源: Android Broadcast Receiver vs Service [duplicate]