2016-11-29 24 views
2

我有多個IntentService的子類。任何人都可以告訴我有多少這種意圖服務可以並行運行。由於android有多少intent服務可以並行運行

+0

儘可能多的線程可以並行運行 –

+0

可以給這個鏈接號碼 – Shaan

+0

http://stackoverflow.com/questions/24505981/how-many-asynctasks-i-can-run-in-an-單進程應用程序我得到的數字是128,這是你指的數字,否則你可以請提供數字 – Shaan

回答

0

你就可以開始任何沒有從IntentService的不同的子類的實例在平行的,但在現實中只有ň服務將在一個時刻,ň沒有核心的設備中運行,如果我們運行一個以上N服務並行,然後他們的線程將有上下文切換所有正在運行的服務將共享時鐘時間。如果您啓動IntentService的相同子類的多個實例,則它們將連續運行,在這種情況下,您需要使用Service類而不是IntentService來實現並行執行。

0

IntentService如果來自同一個類,則不會並行運行。他們將按順序運行。換句話說,如果你有一個名爲IntentServiceDownloadService從下載指定網址的文件時,那麼像這樣運行:

List<String> downloadUrls = getDownloadUrls(); 
Context ctx = getContext(); 
Intent baseIntent = new Intent(ctx, DownloadService.class); 
for(String url : downloadUrls) { 
    Intent downloadService = new Intent(baseIntent); 
    downloadService.putString("downloadUrl", url); 
    ctx.startService(downloadService); 
} 

會出現什麼情況是DownloadService將開始一次。然後,第一個URL將被傳遞給它,並且它將開始下載。然後,完成之後,DownloadService將使用第二個網址。然後第三個等等。它全部按順序運行。

現在,您可以有第二個IntentService,名爲UploadService,它同樣會將文件上傳到給定的URL。如果您使用不同的參數多次啓動它,它也會按順序運行到每個呼叫。 但是,它將平行於DownloadService運行,因爲它們是兩個單獨的Service

編輯:至於限制數量。我確信有一個,但在你達到它之前你可能會耗盡內存(或者認爲有一百種不同的服務不是做事的最佳方式)。