日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

service和thread的区别,何时用service,何时用thread?

發布時間:2025/6/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 service和thread的区别,何时用service,何时用thread? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

按服務性質分local service和remote service

當它運行的時候如果是Local Service,那么對應的?Service是運行在主進程的?main?線程上的。如:onCreate,onStart?這些函數在被系統調用的時候都是在主進程的?main?線程上運行的,如果此時你在Service里編寫了非常耗時的代碼,程序必定會出現ANR的!

當它運行的時候如果是Remote?Service,那么對應的?Service?則是運行在獨立進程的?main?線程上。

按啟動方式分bindService和startedService?

其中bindService更類似于客戶端和服務端,是一種輕量級的ipc通信,這種通信的載體是binder,它是在linux層交換信息。


那么Service和Thread到底什么聯系,為什么很多人都容易混淆二者?

之所以有不少人會把它們聯系起來,主要就是因為Service的后臺概念。Thread我們大家都知道,是用于開啟一個子線程,在這里去執行一些耗時操作就不會阻塞主線程的運行。而Service我們最初理解的時候,總會覺得它是用來處理一些后臺任務的,一些比較耗時的操作也可以放在這里運行,這就會讓人產生混淆了。

其實Service和Thread根本就不是一個級別的東西,Service是系統的四大組件之一,Thread只是一個用來執行后臺任務的工具類,由當前程序托管,而service托管于系統的servicemanager。這樣做的目的是因為Thread獨立于activity,一旦activity結束,該線程也不一定會執行完成,而此時你不再持有該thread的引用,你無法在控制他了。而且我們有的時候也需要多個不同的activity控制一個服務。這些thread都不能實現,所以我們引進service。?



總結:

????? ?Service是系統的四大組件之一,Thread只是一個用來執行后臺任務的工具類

  • Service可以設置獨立的進程;Thread不可以,只能存在于進程中。

  • Service有自己的生命周期。如果是以bind的方式啟動,生命周期跟activity相同。如果是以start方式啟動,不調用stop會一直運行在后臺;Thread運行完了就結束了,啟動后跟activity沒有關系了,哪怕activity結束了,thread也會在后臺運行。

  • 不同的Activity可以調用同一個Service;不同的Activity不能調用同一個Thread。

  • Service如果是運行在后臺的,可以注冊接收系統或自定義廣播;Thread不能接收廣播

  • 不同的應用程序可以共享同一Service,但不能共享同一Thread。

  • service中可以創建thread,避免ANR。

  • Thread在后臺運行(Activty stop)的優先級低于后臺運行的Service,如果執行系統資源緊張,會優先殺死前一種,后臺運行的Service一般情況下不會被殺死,如果被殺死,系統空閑時會重新啟動service.


  • 什么時候用Service,什么時候用多線程?

    從邏輯上你認為需要一個后臺操作,但跟我們現在主線程操作通訊頻繁,邏輯關系緊密,就用多線程(直接用)

    比如你要下載圖片,然后在當前activity上顯示,那就用多線程

    能夠從邏輯上區分開來,又或者耗時較長,就用后臺服務

    比如下載電影就用service,這樣即使來電話了,也不影響下載


    總結

    以上是生活随笔為你收集整理的service和thread的区别,何时用service,何时用thread?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。