了解Android服务行为

时间:2014-07-15 16:56:10

标签: android service

我今天注意到Android服务的一种奇特的行为,我之前并不知道,我想知道目的是什么。在完成文档后,我可以确认这是预期的行为,但无法理解这种设计背后的原因。

  

该服务在后台无限期地运行,直到   StopSelf()被调用或者android系统由于低而破坏它   记忆。这意味着服务在完成其OnstartCommand()方法的执行后仍会在Running services页面上显示。

我不明白这种行为的目的是什么?我相信一旦OnStartCommand执行,服务就应该停止。为什么它必须继续在后台运行(如果这是正确的措辞,留在内存中)。是否只是因为可以更快地提供启动服务的新意图,而不是从头开始在内存中创建服务的开销。

2 个答案:

答案 0 :(得分:1)

服务也可以绑定到进程间通信。 IntentService就像你说的Queue一样。它一次为一个意图提供服务,并在服务完成后自动停止服务。 Vogella概述了如何使用服务,以及如何启动服务的差异。

答案 1 :(得分:1)

Android倾向于保留一切。即使在您的应用程序退出并且最后一个活动被销毁之后,Linux进程也会保持活跃状态​​,直到Android需要内存。

The official documentation很好地涵盖了服务。密切关注运行服务的两种方式:绑定与启动。我觉得很奇怪,书籍不能很好地涵盖服务; O' Reilly"编程Android"本书只给他们三分之一的页面!重要的是要知道活动并不是Android中唯一的一流公民;服务同样重要。任何时候你想做"做东西"在逻辑上不包含在单个活动的生命周期中,服务可能是正确的使用方式。