2

在花了很多时间试图弄清楚使用服务来执行我的后台任务而不是简单的单例类究竟有什么好处之后,我似乎发现的唯一具体答案是,仅仅存在一个已启动的服务就会使系统不太可能杀死我的进程。

如果是这种情况,那么除了启动和停止它来表示我不希望我的进程在某些时候被终止之外,还有什么理由实际使用服务的任何功能?与其处理绑定到服务等的麻烦,为什么不将简单的单例与“setPleaseDontKillMyProcessIfYouCanHelpIt(boolean)”方法结合使用,以适当地启动和停止虚拟服务?同样,我没有使用进程间通信,因此这里不考虑功能。

我知道一个用户在这里问了一个类似的问题,但他没有得到一个直接的答案,只是重申了一个事实,即启动的服务会阻止系统杀死你的应用程序(并建议他“正确使用服务” “而不是使用单例和虚拟服务,但没有说明原因)。

提前感谢您的任何答案。这是我第一次使用 StackOverflow,所以如果我违反了任何礼仪规则,请告诉我。

4

2 回答 2

1

我也试图弄清楚这一点。您可能需要考虑几件事,服务:

  • 允许您使用 Intents 进行松散耦合(您可以将活动和服务之间的整个通信过程限制为仅 Intents)
  • 可以处理广播接收器转发的意图(例如 TIMEZONE_CHANGED)
  • 允许您将操作移出主线程,如果它们变得耗时
  • 允许您了解应用程序生命周期 - 服务在创建或停止时获取回调

将服务视为没有 GUI 的活动。它也是一个生命周期管理的对象,它可以访问你的 Singleton。

于 2012-08-02T16:55:30.927 回答
0

不同的是,在正常情况下,一个 Service 不会被 Android 杀死。如果你有一个服务,你的单例类可能不太可能被杀死,但是当另一个应用程序占用空间时它肯定会被杀死。您不想使用服务的原因是什么?

于 2012-08-02T16:25:06.293 回答