當然這是一個微不足道的問題。如果我開始一個Service
,使用下面的代碼會發生什麼:啓動Android服務已在運行?
startService(new Intent(this,myService.class));
,然後我無意中想起上面的代碼,而Service
是沒有運行?
恐怕第二次調用startservice
可以創建一個新的Service
以便讓兩個不同的進程同時執行。
當然這是一個微不足道的問題。如果我開始一個Service
,使用下面的代碼會發生什麼:啓動Android服務已在運行?
startService(new Intent(this,myService.class));
,然後我無意中想起上面的代碼,而Service
是沒有運行?
恐怕第二次調用startservice
可以創建一個新的Service
以便讓兩個不同的進程同時執行。
恐怕第二次調用startservice可以創建一個新服務,以便同時執行兩個不同的進程。
不,多計數:
不,它不會產生一個新的服務。如果服務已在運行,則將再次調用onStartCommand()
,以提供新的Intent
,但不會創建第二個副本。
不,它不會「有兩個不同的進程在同一時間執行」,因爲默認情況下,服務以與其他應用程序相同的進程運行。
我正在使用意向服務從網址下載視頻。我通過從網站提取的方式將視頻顯示在列表中。當用戶點擊一個列表元素時,下載在intent服務中開始。如果用戶點擊另一個元素,則在第一個元素完成後自動開始下一個下載。這真讓我困惑。 –
@AnkitGarg:這正是'IntentService'應該如何表現的。 – CommonsWare
那麼這是否意味着onStartCommand保存(堆棧)新的服務調用並在第一個服務完成時執行它?無論如何,感謝 –
只能有一個服務實例,所以你不必擔心多個調用。 – jsmith
好的,謝謝。我不確定這一點。 – GVillani82