關於android中線程,進程,組件,app的理解

android系統是一座房子,有一個正常運行的公司進駐這所座子

cpu是這家公司的老闆

進程是公司中的辦公室,辦公室不幹活

線程是辦公室中的員工,幹活的永遠是員工

一間辦公室中可有多個員工,並且辦公室有個活動對外的人員叫主線程


公司肯定會有很多職能部門

activity  service provider brocastrecive 都是職能部門


現在公司有個客戶有個需求,需要幾個部門合作才能完成,於是公司的業務人員APP就跟老闆申請了一間辦公室來完成客戶需求工作

當然,爲了工作更加有效率,有的部門可能需要單獨的辦公室也是可以的


以上就是對android中這幾個概念的理解,總結一下:

android系統是多進程的,但不是越多越好,進程開得太多,系統會卡死

每啓動一個app,系統都會爲它開闢一個新進程,一般的,這個app中的四大組件都是運行在同一進程,且同一線程中

如果在mainifest.xml文件中配置組件的process (:XXX  爲系統全局可共用進程      .XXX  爲當前APP可共用進程),那麼該組件就可以獨立運行在單獨的進程中


所以,就出現了aidl技術,進程之間的通信

aidl是一種接口描述語言,也可理解爲java進程間的接口(interface)

直接編寫一個java接口類,並將後綴後改爲.aidl後編譯,在gen目錄下就會生成一個java類,並且這個類中有一個抽象類,在服務端實現這個抽象類,並通過onBind方法返回給客戶端,就可以在客戶端進程中用這個對象調用服務端進程中的方法,實現通信

 由止可以看出aidl技術其實與綁定服務用法是差不多的,不同就是綁定服務是通過java文件來定義那個接口,而aidl是通過aidl文件來定義這個接口,並且經過測試,同一進程間當然也是可以用aidl,也就是說,綁定服務可以被aidl取代


說下service:

綁定服務,通過bundServcie方法調用,onBundService停用,並且當調用者銷燬,比如一個activity中調用的,當這個aictivity銷燬了,那麼這個service也就銷燬了

全局服務,通過startService方法調用,stopService停用,並且當調用者銷燬,此服務還在運行,只有當退出app時,此服務才銷燬,當然,可以通過守護進程技術將些服務保持運行



以上只是個人理解,如有錯誤之處,還請幫忙指點一二


發佈了49 篇原創文章 · 獲贊 22 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章