所有我需要知道的是,當我可以使用獨立線程進行某些操作時,爲什麼我需要Service。 這是什麼,一個服務可以做,但一個線程不能? 我確實去了很多帖子,但找不到滿意的答案。Android中服務和線程的區別?
回答
服務的主要優點是可以訪問具有獨立生命週期的Context對象。這允許通過許多活動重用通用代碼,並且在公共或公開服務的情況下允許許多應用程序。
線程是一種不阻塞其他工作的工作機制。
服務並不暗示線程,線程也不暗示服務。他們是兩個完全不同的東西。我傾向於在需要上下文來完成工作的情況下使用服務,但希望將代碼與我的活動分開以提高可重用性。
Difference between Service and Threaads
請訪問此鏈接,我希望你會發現在這個環節的答案。
簡而言之,Service和Thread之間的主要區別在於,Service在它自己的線程上在Main(UI)線程和Thread符號上運行。如果我們使用Service來處理長時間任務,那麼它可能會導致阻止主UI線程。
請訪問給出的鏈接瞭解更多詳情。
服務:是一個在後臺執行長時間運行操作的Android組件,主要是用戶界面。
線程:是一個O.S級別的功能,允許您在後臺執行一些操作。
雖然在概念上兩者看起來相似,但有一些關鍵的區別。
1.服務 - 如果它在執行工作時被破壞,由於內存不足的情況在Android中間。然後,如果您從onStartCommand()返回了START_STICKY或START_REDELIVER_INTENT,則android將確保它將重新啓動您的服務。
2.線程 - 如果它由於內存不足而被android在中間銷燬,那麼android不會保證再次重新啓動它。這意味着用戶失去了他的一半工作。
3.服務 - 是android的一個組件,所以它具有優先級,因爲內存不足導致應用程序被銷燬。
4.線程 - 不是android的組件,所以android不會考慮線程優先級,同時由於內存不足而導致應用程序死機。
我會盡力解釋這第三點。
讓我們說你需要從你的活動連接到互聯網。您可以通過使用服務(使用線程)或直接在活動中創建線程來完成。考慮你在線程中連接到互聯網的第二種情況。然後
i。如果用戶在後臺運行時關閉了活動,將會發生什麼情況。該線程是否會繼續在背後運行?答案是你不能真正預測。
ii。假設在上述情況下,即使在殺死活動後,您的線程仍繼續執行其預期的操作。然後在手機中出現內存不足的情況。然後,這個應用程序將是第一個易受攻擊的應用程序被殺,因爲這個應用程序沒有優先權。
因此,底線是:如果你想做一些沉重的後臺功能,那麼最好是有線程服務。如果您覺得只要您的活動處於活動狀態,該後臺功能就會處於活動狀態,那麼請使用具有異步任務的線程或活動進行活動。
希望它有幫助。
- 1. Android中進程,活動,線程和任務之間的區別
- 2. 的Android服務和線程
- 3. Web服務和企業服務總線之間的區別
- 4. Android服務,線程和UI
- 5. Android服務和線程ID
- 6. Android多線程和服務
- 7. 綁定服務和線程之間的區別
- 8. Android後臺線程:從活動啓動和服務啓動之間的區別
- 9. Android應用程序產卵線程與服務之間的區別?
- 10. Cocoa中操作和線程的區別
- 11. 的Android服務和UI線程
- 12. 什麼是Asynctask和android中的線程之間的區別?
- 13. 服務和在android中使用鬧鐘管理器的區別
- 14. WCF服務,WCF RIA服務和WCF數據服務的區別
- 15. WCF服務與Web服務和REST服務的區別
- 16. Dropwizard中的應用程序和服務之間的區別
- 17. Android服務多線程和startForeground()
- 18. wcf和azure appfabric服務總線之間的區別?
- 19. osrm路線和匹配服務的區別
- 20. 臨界區中的服務,多線程服務
- 21. 任務計劃程序和服務之間的區別
- 22. android:時間任務和服務有什麼區別?
- 23. Android中的OpenCV服務與線程
- 24. 後臺線程中的Android服務
- 25. 服務與Android中的線程
- 26. JMS和Web服務之間的區別
- 27. BO和服務之間的區別?
- 28. 活套和服務之間的區別
- 29. 服務器和客戶端的區別
- 30. Web服務和JMS之間的區別
好的。如果萬一我在工作線程中傳遞上下文,那麼它會起到這個作用嗎? – SAMD 2012-02-06 06:22:11
你還沒有解釋案件或目的,所以它很難告訴你。 – 2012-02-06 15:46:46
其實我正在尋找一些特殊的情況下,服務是必要的使用。我被問及這個問題,無法回答,所以我試圖尋求幫助使用堆棧溢出。 – SAMD 2012-02-07 06:55:46