我已经从事Android开发接近两年,但这个看似简单的问题我仍感困惑。
何时应该实现服务?从我的经验来看,虽然有一些罕见的情况需要使用服务,但我对此持怀疑态度,因为在每台手机上都运行着相当多的服务,我怀疑这并不是由于应用程序设计不佳所致。
这基本上是我的问题的核心,但以下是我对此主题的一些经验和思考,可以更详细地解释我的问题。
在我开发的所有应用程序中,只有一个应用程序确实需要服务。它是一个后台声音录制器,并且我将其作为前台服务与通知一起使用,因为我希望按钮能够控制它(例如音乐播放器所做的那样)。
除此之外,我从未真正看到过需要不断运行服务的要求,因为:
A)Intent 监听器(清单注册的BroadcastReceivers)是非常有用的特性,通常使用它们就足以满足许多用例(例如显示通知)。
B)如果必须进行定期执行,则可以订阅alarm事件。
C)我知道,在Android中,服务与Windows中的服务相比有很大的区别,因为在Android中,服务只是将您的代码组织起来,并让系统管理对象的生命周期。服务使用主线程,但通常在它们中生成新线程。
D)在开发文档中,建议使用服务进行网络通信和后台计算,但我不明白为什么不直接使用AsyncTasks进行这些操作。我非常喜欢它们,并广泛用于许多事情,从互联网下载数据到在时间关键条件下进行FFT计算。
E)我理解前台服务的有用性,但为什么人们使用后台服务这么多(除了系统应用)。
这些是我对“服务”的想法,我希望有更多经验的人能够解释这些优点和缺点(以及我可能错过的其他内容)。