日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深度講解Android進程以及進程的安全性

如果調(diào)用者發(fā)起另外一個Android進程,方法在另外一個線程中運行,這個線程在和IBinder對象在一個線程池中,因為一個服務可能有多個客戶端請求,不止一個線程池會在同一時間調(diào)用IBinder的方法。

泰興網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。

這個屬性可以組件運行的進程。這個屬性可以配置組件在一個獨立進程運行,或者多個組件在同一個進程運行。甚至可以多個程序在一個進程中運行-如果這些程序共享一個User ID并給定同樣的權(quán)限。 節(jié)點也包含 process 屬性,用來設置程序中所有組件的默認進程。

所有的組件在此進程的Android進程中示例化,系統(tǒng)對這些組件的調(diào)用從主線程中分離。并非每個對象都會從主線程中分離。一般來說,響應例如View.onKeyDown()用戶操作的方法和通知(后面會在Component Lifecycles談到)的方法也在主線程中運行。

這就表示,組件被系統(tǒng)調(diào)用的時候不應該長時間運行或者阻塞操作(如網(wǎng)絡操作或者計算大量數(shù)據(jù)),因為這樣會阻塞進程中的其他組件??梢园堰@類操作從主線程中分離,后面的Threads, 章節(jié)會降到。當更加常用的進程無法獲取足夠內(nèi)存,Android可能會關(guān)閉不常用的進程。下次啟動程序的時候會有一次啟動進程。

當決定哪個進程需要被關(guān)閉的時候, Android會考慮哪個對用戶更加有用。如,Android會傾向于關(guān)閉一個長期不顯示在界面的進程來支持一個經(jīng)常顯示在界面的進程。是否關(guān)閉一個進程決定于組件在進程中的狀態(tài),參見后面的章節(jié)Component Lifecycles.

即使為組件分配了不同的進程,有時候也需要再分配Android進程。比如用戶界面需要很快對用戶進行響應,因此某些費時的操作,如網(wǎng)絡連接、下載或者非常占用服務器時間的操作應該放到其他線程。

線程通過java的標準對象Thread 創(chuàng)建. Android 提供了很多方便的管理Android進程的方法:— Looper 在線程中運行一個消息循環(huán); Handler 傳遞一個消息; HandlerThread 創(chuàng)建一個帶有消息循環(huán)的線程。

遠程調(diào)用Remote procedure callsAndroid有一個遠程調(diào)用(RPCs) 的輕量級機制— 通過這個機制,方法可以在本地調(diào)用,在遠程執(zhí)行(在其他進程執(zhí)行),還可以返回一個值。要實現(xiàn)這個需求,方法調(diào)用必須分解方法調(diào)用,并且所有要傳遞的數(shù)據(jù)必須是操作系統(tǒng)可以訪問的級別。從本地的進程和內(nèi)存地址傳送到遠程的進程和內(nèi)存地址并在遠程處理和返回。

返回值必須向相反的方向傳遞。Android提供了做以上操作的代碼,所以開發(fā)者可以專注于實現(xiàn)RPC的接口。
一個RPC接口只能有一個方法。所有的方法都是同步執(zhí)行的(直到遠程方法返回,本地方法才結(jié)束阻塞),沒有返回值的時候也是如此。

簡單來說,這個機制是這樣的:使用IDL (interface definition language).定義你想要實現(xiàn)的接口, aidl 工具可以生成用于java的接口定義,本地和遠程都要使用這個定義。它包含2個類,見下圖:

inner類包含了所有的管理遠程程序(符合IDL描述的接口)所需要的代碼。所有的inner類實現(xiàn)了IBinder 接口.其中一個在本地使用。可以不管它的代碼;另外一個叫做Stub繼承了 Binder 類。為了實現(xiàn)遠程調(diào)用Android進程,這個類包含RPC接口。開發(fā)者可以繼承Stub類來實現(xiàn)需要的方法。

一般來說,遠程進程會被一個service管理(因為service可以通知操作系統(tǒng)這個進程的信息并和其他進程通信),它也會包含aidl 工具產(chǎn)生的接口文件,Stub類實現(xiàn)了遠處那個方法。服務的客戶端只需要aidl 工具產(chǎn)生的接口文件。

以下是如何連接服務和客戶端調(diào)用:

◆服務的客戶端(本地)會實現(xiàn)onServiceConnected() 和onServiceDisconnected() 方法,這樣,當客戶端連接或者斷開連接的時候可以獲取到通知。通過 bindService() 獲取到服務的連接。

◆服務的 onBind() 方法中可以接收或者拒絕連接,取決它收到的intent (intent通過 bindService()方法連接到服務). 如果服務接收了連接,會返回一個Stub類的實例.

◆如果服務接受了連接,Android會調(diào)用客戶端的onServiceConnected() 方法,并傳遞一個Ibinder對象(系統(tǒng)管理的Stub類的代理),通過這個代理,客戶端可以連接遠程的服務。

【編輯推薦】

  1. Android應用程序組建原理深入剖析
  2. Android SMS短信服務相關(guān)概念簡述
  3. PythonAndroid數(shù)據(jù)庫相關(guān)代碼解讀
  4. PythonAndroid安裝卸載程序具體操作方法解析
  5. Android應用程序的四個關(guān)鍵點

網(wǎng)站欄目:深度講解Android進程以及進程的安全性
轉(zhuǎn)載來源:http://m.5511xx.com/article/cdccehd.html