成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度講解Android進程以及進程的安全性

移動開發 Android
以上對于Android進程描述省略很多RPC的機制,詳細內容融請參考Designing a Remote Interface Using AIDL 和 IBinder 類。

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

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

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

這就表示,組件被系統調用的時候不應該長時間運行或者阻塞操作(如網絡操作或者計算大量數據),因為這樣會阻塞進程中的其他組件。可以把這類操作從線程中分離,后面的Threads, 章節會降到。當更加常用的進程無法獲取足夠內存,Android可能會關閉不常用的進程。下次啟動程序的時候會有一次啟動進程。

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

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

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

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

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

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

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

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

以下是如何連接服務和客戶端調用:

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

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

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

【編輯推薦】

  1. Android應用程序組建原理深入剖析
  2. Android SMS短信服務相關概念簡述
  3. PythonAndroid數據庫相關代碼解讀
  4. PythonAndroid安裝卸載程序具體操作方法解析
  5. Android應用程序的四個關鍵點
責任編輯:chenqingxiang 來源: 51CTO.com
相關推薦

2009-10-23 10:50:04

CLR安全性

2010-05-17 16:26:36

IIS安全

2024-02-26 08:33:51

并發編程活躍性安全性

2011-03-31 14:09:12

無線路由器

2011-03-31 14:03:57

無線路由器

2011-03-25 09:46:16

Informix數據庫安全性安全審計

2009-11-30 09:41:38

2017-07-27 19:35:34

2011-03-22 14:35:23

Oracle數據庫安全措施

2010-01-12 18:35:45

C++語言

2012-12-21 15:24:53

Android 上的安全性

2009-12-31 15:52:35

VPN網絡連接

2010-10-08 08:45:11

2017-12-29 15:16:28

2013-01-11 14:00:18

云存儲云計算云安全

2021-10-19 06:05:20

網站安全網絡威脅網絡攻擊

2021-10-31 16:10:50

公有云安全性IT

2010-04-14 17:19:51

Oracle數據庫

2020-01-18 08:49:17

目錄安全.ssh木馬

2019-02-26 11:15:25

進程多線程多進程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜久久久 | 一级片在线观看 | 一区日韩| av香港经典三级级 在线 | 麻豆91av | 色天天综合 | 久久久久成人精品 | 国产精品一区二区无线 | 亚洲精品99| 中文字幕在线视频免费观看 | 精品亚洲视频在线 | 久久伊人一区 | 精品久久久久国产 | 91亚洲国产成人精品一区二三 | 成人自拍视频 | 欧美一区2区三区3区公司 | 国产真实精品久久二三区 | 国产专区在线 | 中文字幕在线播放第一页 | 91视频日本| hitomi一区二区三区精品 | 91在线观看免费 | 久久99视频这里只有精品 | 91在线视频免费观看 | 欧美日韩在线精品 | 夜夜摸夜夜操 | 国产精品视频免费观看 | 久久91精品国产一区二区三区 | 久久综合久 | 一级毛片在线播放 | 久久亚洲欧美日韩精品专区 | 欧美一级在线 | 中文字幕在线免费观看 | 国产一级影片 | 日韩精品在线视频免费观看 | 欧美日韩亚洲视频 | 成人午夜免费网站 | 天天操操 | 国产高清免费视频 | av入口| 日本a在线|