我一直在经历这个非常short tutorial,我对这项服务的功能感到困惑。我也很困惑广播接收器的功能是什么。
我试着做一些研究,这是我理解的: - 服务在后台运行,但......我不明白为什么我们需要一些东西 在后台运行以使手机在某个时间唤醒。
答案 0 :(得分:1)
我认为services
用于长时间运行的任务,尤其是在main activity
未运行时运行的情况。
对于此功能,我们可以使用threads
这使我们说我们的活动中创建了一个线程,它不能在我们的主要活动之外活动,
这就是为什么我们有services
。
答案 1 :(得分:0)
服务可用于独立于屏幕流程运行长时间运行的任务。例如,考虑您的应用程序需要在整个运行期间通过套接字与服务器通信,您可以启动服务来处理此问题。想象一下,反对启动套接字并在每个活动开始时建立连接,并在活动停止时进行清理。
默认情况下,服务在主线程中运行。但是您可以在服务上下文中启动单独的线程,就像在Activity中一样。如果后台任务可以跨多个活动重叠,那么最好在Service上下文中启动它,因为创建的每个Thread / AsyncTask都会保留它正在运行的上下文。在这种情况下,即使用户导航到另一个活动,您的活动也将被保留,因为从该活动开始的线程已经在运行。如果保留Activity,则可能会阻止其所有视图,图像被垃圾收集。
服务无法直接改变UI组件。为此,它需要与当前运行的Activity上下文进行通信。简而言之,如果您的非UI任务确实与特定活动的生命周期重叠,则最好将该任务转移到服务。
答案 2 :(得分:0)
该服务的功能是什么?
服务是在后台运行而无需与用户直接交互的组件。
由于该服务没有用户界面,因此它不受活动生命周期的约束。
服务用于重复且可能长时间运行的操作,即互联网下载,检查新数据,数据处理,更新内容提供商等。
阅读: Service
广播接收器的功能是什么?
广播接收器是第二种组件。与服务一样,它们仅存在于后台,不直接与您交互。但与服务不同,它们不能保持运行或执行长任务:它们存在以响应事件。与活动和服务不同,可以一次启动多个广播接收器。
每个广播接收器可以直接做出反应,例如通过创建通知,或者它可以启动服务或活动以采取进一步行动。一旦广播接收机处理了该事件,它就会被停止,并且在广播另一个类似事件之前不会再次运行。
我不明白为什么我们需要在后台运行一些东西 让电话在某个时间醒来?
我们不希望应用程序必须在前台唤醒手机。 此外,我们希望在后台发送通知。
我们开始了这项服务。现在,即使我们关闭应用程序,您也可以获得手机唤醒通知。这非常有用。
服务非常适合通过通知与用户进行交互(一种向用户提醒他需要了解的事件的方式,甚至可以采取某些行动来获取该信息)。很多时候,应用程序需要长时间运行进程而无需用户干预或非常罕见的干预。即使将手机用于其他活动/任务,这些后台进程也需要继续运行。
为了满足这样的要求,android引入了"Service"
组件。
它在后台运行,直到它自行停止。这意味着服务可能会使您的手机保持唤醒状态(使用唤醒锁),耗尽电量或使用大量网络数据,而屏幕上不会显示任何内容。
我“认为”广播接收器充当某种接球手的角色, 当在特定时间启动待处理的意图时,它 抓住它然后启动服务......我对真相有多接近?
正确,它们旨在响应意图(通常由服务或系统事件发送的),做某事,并完成。当通过sendBroadcast广播意图时,它将被发送到具有匹配意图过滤器的所有接收器。
答案 3 :(得分:-2)
服务 - 是android的一个组件,它在后台运行,没有任何UI。默认情况下,服务仅在主线程中运行。
线程 - 不是android组件,但仍然可以使用线程来做一些后台任务。不鼓励使用线程代替服务