導航:首頁 > 操作系統 > androidservice是主線程

androidservice是主線程

發布時間:2025-06-01 15:49:39

1. android守護進程

Android中應該使用Service而不應該使用線程,Android中有提供後台運行的組件,叫Service。

servie是系統的組件,它由系統進程託管(servicemanager);它們之間的通信類似於client和server,是一種輕量級的ipc通信,這種通信的載體是binder,它是在linux層交換信息的一種ipc。而thread是由本應用程序託管。

  1. Thread:Thread是程序執行的最小單元,它是分配CPU的基本單位。可以用Thread來執行一些非同步的操作。

  2. Service:Service是android的一種機制,當它運行的時候如果是Local Service,那麼對應的Service是運行在主進程的main線程上的。如:onCreate,onStart這些函數在被系統調用的時候都是在主進程的main線程上運行的。如果是RemoteService,那麼對應的Service則是運行在獨立進程的main線程上。


關於用戶線程和守護線程:

在Java中有兩類線程:User Thread(用戶線程)、Daemon Thread(守護線程)

Daemon的作用是為其他線程的運行提供便利服務,比如垃圾回收線程就是一個很稱職的守護者。User和Daemon兩者幾乎沒有區別,唯一的不同之處就在於虛擬機的離開:如果 User Thread已經全部退出運行了,只剩下Daemon Thread存在了,虛擬機也就退出了。 因為沒有了被守護者,Daemon也就沒有工作可做了,也就沒有繼續運行程序的必要了。

2. 既然android service是運行在主線程中的,那service還有什麼用

你沒有將android 組件和android C/S架構的概念理解清楚,不僅沒有理解清楚,還把組件的概念,跟線程、進程混淆在一起了。 我將android比喻成一棟辦公大樓,android 中進程就是一個辦公室,線程就是辦公室裡面的員工,辦公室是不能幹活的,而真正幹活的是這個辦公室裡面的員工。一個員工只能在一個辦公室裡面幹活,而一個辦公室可以有很多員工。 Android的老闆希望它的公司能辦理的井井有條,於是針對每一種職能專門設立管理部門,例如WMS,負責窗口管理的,例如MPS,負責多媒體播放的。 一個部門可以有一個或多個辦公室,一個辦公室也可以有多個部門。 而android的管理部門往往是不幹什麼實事的,就像我們的天朝的猿類,你推它一下,它才動一下。所以android需要一些干實事的部門,做對外客戶的,這些部門我們統稱為apk。Android中有好多這種部門,於是為了防止這些部門瞎干,又把部門分成Activity、Service、BrocastReceiver、ContentProvider四種子部門,這些子部門就是用來跟其它部門做溝通的,而所有的子部門運作時都會由大管家AMS來記錄在案。 Activity,做門面的。 Service,做對外支持的。 BrocastReceiver,做門衛收信的。 ContentProvider,做倉庫管理的。 做門面的,可以做對外支持的活,也可以做倉庫管理的活。但是外面可不這么認為,它想找你要數據,只會找ContentProvier,找對外支持只會找Service。 另外AMS大管家有個不好的習慣,它為了節省公司的資源,AMS那裡沒有你這個apk任何部門運行記錄的時候,它有可能把你的電關了(殺進程)。 而LZ你描述的問題呢,就是你的部門想下載東西,是由Activity子部門去干呢,還是Service去干。

3. android 如何讓service不在主線程中運行

調用者與服務綁定在一起就可以讓service不在主線程中運行。安卓是一種基於Linux內核的自由及開放源代碼的操作系統。

主要使用於移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

系統信息

Android一詞的本義指機器人,同時也是Google於2007年11月5日宣布的基於Linux平台的開源手機操作系統的名稱,該平台由操作系統、中間件、用戶界面和應用軟體組成。Android一詞最早出現於法國作家利爾亞當在1886年發表的科幻小說未來夏娃中。

他將外表像人的機器起名為Android。Android的Logo是由Ascender公司設計的,誕生於2010年,其設計靈感源於男女廁所門上的圖形符號,於是布洛克繪制了一個簡單的機器人,它的軀干就像錫罐的形狀,頭上還有兩根天線,Android小機器人便誕生了。

其中的文字使用了Ascender公司專門製作的稱之為Droid的字體。Android是一個全身綠色的機器人,綠色也是Android的標志。

4. Android Service 為什麼要綁定服務 僅僅是因為要獲取服務中的方法嗎

Android中Service是運行在後台的東西,級別與activity一樣。

既然說service是運行在後台的服務,那麼它就是不可見的,沒有界面的東西。

你可以啟動一個服務Service來播放音樂,或者記錄你地理信息位置的改變,或者啟動一個服務來運行並一直監聽某種動作。

Service和其他組件一樣,都是運行在主線程中,因此不能用它來做耗時的請求或者動作。你可以在服務中開一一個線程,在線程中做耗時動作。


服務一般分為兩種:

1:本地服務,Local Service 用於應用程序內部。在Service可以調用Context.startService()啟動,調用Context.stopService()結束。在內部可以調用Service.stopSelf() 或 Service.stopSelfResult()來自己停止。無論調用了多少次startService(),都只需調用一次stopService()來停止。

2:遠程服務, Remote Service 用於android系統內部的應用程序之間。可以定義介面並把介面暴露出來,以便其他應用進行操作。客戶端建立到服務對象的連接,並通過那個連接來調用服務。調用Context.bindService()方法建立連接,並啟動,以調用 Context.unbindService()關閉連接。多個客戶端可以綁定至同一個服務。如果服務此時還沒有載入,bindService()會先載入它。
提供給可被其他應用復用,比如定義一個天氣預報服務,提供與其他應用調用即可。

3.Service的生命周期


context.startService() ->onCreate()- >onStart()->Service running--調用context.stopService() ->onDestroy()

context.bindService()->onCreate()->onBind()->Service running--調用>onUnbind() -> onDestroy()
從上訴可以知道分別對應本地的,,以及遠程的,也對應不同的方式啟動這個服務。


4.如果你Activity不綁定服務,那麼就無法與遠程服務進行通信

例如你要調用其它應用的服務(進程之間的通信)


有關更多的RPC通信建議查看android官網的API

5. Android 如何創建子線程以及區分主線程

在一個Android 程序開始運行的時候,會單獨啟動一個Process。默認的情況下,所有這個程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的兩種,除此之外還有Content Provider和Broadcast Receiver)都會跑在這個Process。
一個Android 程序默認情況下也只有一個Process,但一個Process下卻可以有許多個Thread。在這么多Thread當中,有一個Thread,我們稱之為UI Thread。UI Thread在Android程序運行的時候就被創建,是一個Process當中的主線程Main Thread,主要是負責控制UI界面的顯示、更新和控制項交互。在Android程序創建之初,一個Process呈現的是單線程模型,所有的任務都在一個線程中運行。因此,我們認為,UI Thread所執行的每一個函數,所花費的時間都應該是越短越好。而其他比較費時的工作(訪問網路,下載數據,查詢資料庫等),都應該交由子線程去執行,以免阻塞主線程。
那麼,UI Thread如何和其他Thread一起工作呢?常用方法是:
誕生一個主線程的Handler物件,當做Listener去讓子線程能將訊息Push到主線程的Message Quene里,以便觸發主線程的handlerMessage()函數,讓主線程知道子線程的狀態,並在主線程更新UI。

閱讀全文

與androidservice是主線程相關的資料

熱點內容
主力至尊源碼是什麼 瀏覽:859
macbook如何去除磁碟加密 瀏覽:165
qq音樂伺服器在什麼位置 瀏覽:293
數控加工工藝與編程綜合設計 瀏覽:225
反編譯安裝系統引導 瀏覽:644
ssh運行命令行 瀏覽:585
e3伺服器什麼檔次 瀏覽:74
gccpdf 瀏覽:882
php百分比計算 瀏覽:675
安卓裝好的程序怎麼發給別人 瀏覽:588
重慶程序員接私活價錢 瀏覽:422
單片機掃描鍵盤 瀏覽:933
陽光512控台編程視頻 瀏覽:56
ios程序員簡歷模板 瀏覽:736
給我推薦一些解壓 瀏覽:329
泰山pdf 瀏覽:401
程序員與需求分析員 瀏覽:462
安卓手機cfg用什麼軟體打開 瀏覽:664
51單片機嵌入式系統 瀏覽:819
什麼app可以買正品書 瀏覽:569