2012-10-29 58 views
26

当然这是一个微不足道的问题。如果我开始一个Service,使用下面的代码会发生什么:启动Android服务已在运行?

startService(new Intent(this,myService.class)); 

,然后我无意中想起上面的代码,而Service是没有运行?

恐怕第二次调用startservice可以创建一个新的Service以便让两个不同的进程同时执行。

+2

只能有一个服务实例,所以你不必担心多个调用。 – jsmith

+0

好的,谢谢。我不确定这一点。 – GVillani82

回答

53

恐怕第二次调用startservice可以创建一个新服务,以便同时执行两个不同的进程。

不,多计数:

  • 不,它不会产生一个新的服务。如果服务已在运行,则将再次调用onStartCommand(),以提供新的Intent,但不会创建第二个副本。

  • 不,它不会“有两个不同的进程在同一时间执行”,因为默认情况下,服务以与其他应用程序相同的进程运行。

+1

我正在使用意向服务从网址下载视频。我通过从网站提取的方式将视频显示在列表中。当用户点击一个列表元素时,下载在intent服务中开始。如果用户点击另一个元素,则在第一个元素完成后自动开始下一个下载。这真让我困惑。 –

+1

@AnkitGarg:这正是'IntentService'应该如何表现的。 – CommonsWare

+1

那么这是否意味着onStartCommand保存(堆栈)新的服务调用并在第一个服务完成时执行它?无论如何,感谢 –

相关问题