2010-08-25 58 views
43

我对Android开发很陌生。Android:何时使用Service vs Singleton?

什么时候创建一个Android服务而不是仅仅使用一个简单的Singleton类是一个好主意?

例如,从互联网上下载数据层下载信息。

对于某些情况使用服务似乎太多了,但有时我可能需要访问Context,所以我对如何设计应用程序有些不确定。

回答

42

如果您的进程在用户离开其活动后立即被杀死(与单身人士一起),那么请使用单身人士。如果在此之后需要它继续运行一段时间,请使用服务。如果您希望在用户离开后继续运行,但可以忍受它,而不是因为用户现在在其他需要更多内存的地方继续运行,请使用单例。

这两个之间的决定只有归结于您的应用程序的生命周期。为此,这就是所有的服务 - 请平台修改您的流程管理。如果您需要单例中的上下文,只需使用Context.getApplicationContext()为您的过程检索全局上下文。

+5

第一段的最后一句话有点混乱。你能稍微改述一下吗? – chakrit 2010-08-25 17:28:05

+0

我认为这意味着:当你希望进程在用户离开之后继续运行时使用单例,但只有当内存不需要更多的地方。 – mparaz 2012-06-09 06:51:44

+1

因此,对于您的信息订阅下载示例,我*猜测*如果这些订阅源在提供它们的Internet服务器上进行了缓冲,那么无论用户什么时候回到您的应用程序,都可以赶上*或*如果您只关心关于处理来自Feed的新项目,而不是关于显示不间断的历史,*然后*您可以使用单例,但如果您需要应用程序在用户做其他事情时继续监视Feed,那么您希望一项服务。只是想让这个更真实一点...有趣的问题。 – Carl 2013-05-16 23:43:39