能否請你幫我瞭解的IntentService
和Service
之間的區別?IntentService和服務有什麼區別?
回答
總之,一個服務是爲開發者設立後臺操作在更大範圍實施,而一個IntentService是有用的「發射後不管」作戰,照顧後臺線程的創建和清理。
從文檔:
服務 A服務是表示任一應用程序的同時不與用戶交互以執行一個較長的運行的操作或用於其他應用程序使用提供的功能的慾望的應用組件。
IntentService 服務是IntentService 服務是處理需求(表示爲意圖)異步請求的基類。客戶通過startService(Intent)
呼叫發送請求;該服務根據需要啓動,使用工作線程輪流處理每個Intent,並在其停止工作時自行停止。
請參閱本文檔 - http://developer.android.com/reference/android/app/IntentService.html
服務:它運行在您的系統上的背景。例如,
- 如果你去一個酒店,你給你的湯以服務器
- 的服務器獲取您的訂單,發送到廚師
- 你不知道的湯怎麼是在廚房裏,什麼工藝製成所需要的做的湯
- 一旦您的訂單已準備就緒,服務器爲您帶來的湯。
後臺進程:廚師制湯
IntentService: - 它是連續的服務。(即)當你在一個時間服務器訂購許多食品項目,但該服務器由一個提供這些項目之一,不一次全部交付。
Service
運行實際上是在你的應用程序的同一個線程;當你擴展Service時,你必須手動產生新線程來運行CPU阻塞操作。
VS
IntentService
是Service
子類,可以產生一個線程從那裏做後臺工作(無需創建一個新的線程做CPU阻塞操作)。
是不是爲了防止CPU阻塞操作,而不是運行它們?林不知道雖然 – committedandroider
多數民衆贊成那是真的,服務neew一個新的線程運行CPU阻止操作 –
Service
是一個基類服務實現的。 Service
在應用程序的主線程中運行,這可能會降低應用程序的性能。因此,IntentService
是Service的一個直接子類,可以讓事情變得更簡單。
IntentService
的用於在後臺執行特定任務。一旦完成,IntentService
的實例將自動終止。它的用法示例是從互聯網下載某個資源。
差異
Service
類使用應用程序的主線程,而IntentService
創建工作線程,並使用該線程來運行服務。IntentService
創建一個隊列,每次傳遞一個意向到onHandleIntent()
。因此,應該通過直接擴展Service
類來實現多線程。Service
班級需要使用stopSelf()
進行手動停止。同時,IntentService
完成執行時自動自動停止。IntentService
implementsonBind()
返回null
。這意味着IntentService
不能被默認綁定。IntentService
執行onStartCommand()
發送意圖排隊和onHandleIntent()
。
簡而言之,使用IntentService
只有兩件事要做。首先,實施構造函數。其次,實施onHandleIntent()
。對於其他回調方法,需要調用super才能正確跟蹤它。
尼斯的解釋。我正在製作音樂應用程序。那麼,哪一個很好呢?服務或IntentService? –
音樂應用程序,我認爲你必須使用服務,因爲默認情況下,IntentService是不可取的,我認爲,你必須綁定你的音樂應用程序與音樂服務開始,停止。如前所述,IntentService更適合「開始並忘記」 – Premier
@Premier IntentService與Service.START_NOT_STICKY類似嗎?根據你的例子,這也是「開始和忘記」。 –
差異
- 服務類使用應用程序的主線程,而IntentService創建工作線程,並使用該線程來運行服務。
- IntentService創建一個隊列,每次將一個意圖傳遞給onHandleIntent()。因此,應該通過直接擴展Service類來實現多線程。
- 服務類需要使用stopSelf()手動停止。同時,IntentService在隊列中沒有意圖時會自動停止。
- IntentService實現了返回null的onBind()。這意味着IntentService不能默認綁定。
- IntentService實現了將Intent發送到隊列和onHandleIntent()的onStartCommand()。
不服務也實現onStartCommand? –
Service
:工作在主線程所以它會在幾秒鐘後引起ANR(安卓無響應)。
IntentService
:Service
與另一個後臺線程單獨工作,以執行某些操作而不與主線程交互。
*服務:在主線程中工作,所以它會在幾秒鐘後導致ANR(Android Not Responding)。* - 我可以有一個服務運行幾個小時,我從來沒有見過一個ANR,所以我懷疑是真的。 –
意圖服務IntentService的服務
孩子:如果你想使用您的應用開始下載一堆圖像。這是一次性的過程,一旦下載完成,就可以自行清理。
服務:將不斷用於在您的應用程序和後端與Web API調用之間進行通信的服務。即使是與目前的任務完成了,你還希望它是圍繞着幾分鐘後,更多的通信
服務
- 任務沒有用戶界面,但不應該長期任務使用。通過
onStartService()
- 從任何線程觸發使用服務內螺紋長期任務
- 調用
- 運行在主線程
- 可能會阻止
main(UI
)螺紋
IntentService
- 長期任務通常不會與主要的溝通如果需要的話通信則其由處理程序進行,或者經由意圖
- 從主線程觸發廣播
- 調用讀取(意圖是在主螺紋和工作線程接收到spawed)
- 運行在獨立的線程
- 我們無法並行運行任務,並且多個意圖在同一個工作線程上排隊。
服務
這是爲大家服務的基類。擴展此類時,重要的是創建一個新線程來執行所有服務的工作,因爲該服務默認使用應用程序的主線程,這可能會降低應用程序運行的任何活動的性能。
IntentService
這是使用工作線程來處理所有的請求開始,一次一個服務的一個子類。如果您不要求您的服務同時處理多個請求,則這是最佳選擇。你所需要做的就是實現onHandleIntent(),它接收每個啓動請求的意圖,這樣你就可以完成後臺工作。
差異
服務類使用應用程序的主線程,而IntentService創建工作線程,並使用該線程來運行服務。 IntentService創建一個隊列,每次將一個意圖傳遞給onHandleIntent()。因此,應該通過直接擴展Service類來實現多線程。 服務類需要使用stopSelf()手動停止。同時,IntentService在隊列中沒有意圖時會自動停止。 IntentService實現了返回null的onBind()。這意味着IntentService不能默認綁定。 IntentService實現了將Intent發送到隊列和onHandleIntent()的onStartCommand()。
- 1. IntentService和HandlerThread有什麼區別?
- 2. Service和IntentService有什麼區別?
- 3. Web服務和RPC有什麼區別?
- 4. 活動和服務有什麼區別
- 5. 網絡服務器和應用服務器有什麼區別
- 6. DDD服務和WCF服務有什麼區別?
- 7. 「Web服務」和「Web服務」有什麼區別?
- 8. COM DLL服務器和COM EXE服務器有什麼區別?
- 9. 代理服務器和普通服務器有什麼區別?
- 10. Web服務和Windows服務之間有什麼區別?
- 11. WCF和RIA服務域服務類有什麼區別?
- 12. 安卓服務和網絡服務有什麼區別
- 13. SVN服務器和HTTP服務器有什麼區別
- 14. Web服務器和遊戲服務器有什麼區別?
- 15. netflix zuul服務器和netflix eureka服務器有什麼區別?
- 16. ado.net數據服務和WCF數據服務有什麼區別?
- 17. 微服務與webservices有什麼區別?
- 18. android:時間任務和服務有什麼區別?
- 19. 微服務。服務註冊表和服務發現有什麼區別
- 20. 應用服務,域名服務和基礎設施服務有什麼區別?
- 21. AntCall和Ant任務有什麼區別?
- 22. Web服務器組件和Web服務器有什麼區別? - 沒有框架
- 23. 有狀態服務和狀態感知服務有什麼區別?
- 24. 有什麼區別`和$(Bash中有什麼區別?
- 25. 代理服務器和匿名者之間有什麼區別?
- 26. 有什麼區別`pushManager.subscribe`和`pushManager.getSubscription`服務工人
- 27. HTTP和HTTP REST服務有什麼區別?
- 28. 苔蘚和Sharepoint服務器2010有什麼區別
- 29. apache Ambari服務器和代理有什麼區別
http://techtej.blogspot.com.es/2011/03/android-thread-constructspart-4.html –
真的比較不錯的位置: http://stackoverflow.com/questions/15524280/service-vs-intent-service – Moemars
請轉到上面的鏈接,他們真的太好了..非常感謝他們...... –