2012-10-29 60 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保存(堆棧)新的服務調用並在第一個服務完成時執行它?無論如何,感謝 –

相關問題