Android 安卓:当我';我没有使用IPC?

Android 安卓:当我';我没有使用IPC?,android,service,Android,Service,在花了大量时间试图弄清楚使用服务来执行后台任务而不是简单的单例类究竟有什么好处之后,我似乎找到的唯一具体答案是,仅仅存在一个已启动的服务,系统就不太可能终止我的进程 如果是这样的话,那么除了启动和停止服务以表示我不希望在某些时候终止进程之外,还有什么理由实际使用服务的任何功能呢?与其处理绑定到服务等的麻烦,为什么不将简单的单例与“setPleaseDontKillMyProcessIfYouCanHelpIt(boolean)”方法结合使用,根据需要启动和停止虚拟服务?同样,我没有使用进程间通信

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

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

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


提前感谢您的回答。这是我第一次使用StackOverflow,因此如果我违反了任何礼仪规则,请告知我。

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

我也在想办法。您可以考虑以下几点,即服务:

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

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

我并不坚决反对使用服务,只是想了解我为什么应该这样做。既然这项服务和我的程序的其他部分是同一个过程的一部分,那么单例程序怎么会被杀死而服务却不会呢?安卓就是这样工作的。当它需要空间,并且看到pojo时,它会杀死它们,而不去管服务。你的POJO(单件课程)无论如何都是你活动的一部分。当活动被终止时,您的POJO也被终止,因为没有任何东西可以引用它们。除非服务有对它们的引用,但是,它是保持活动状态的服务,并且它是POJO。