首頁 收藏 QQ群
 網(wǎng)站導航

ZNDS智能電視網(wǎng) 推薦當貝市場

TV應用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 12900|回復: 0
上一主題 下一主題
[教程]

《Android Dev Guide》系列教程5:Android進程和線程

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2013-8-28 16:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
>  這兩個內部類包含了所有你需要管理員遠程調用你用IDL聲明的接口的代碼(太拗口)。兩個內部類都要事先IBinder接口。其中一個在本地使用,你寫代碼時可以不用處理它,另一個是Stub,繼承自Binder類。為了使IPC調用的內部代碼有效,它包含了你用RPC接口所聲明的方法。你可以繼承Stub類來實現(xiàn)哪些方法,像上圖那樣。   
通常情況下,遠程進程會被一個后臺服務所管理,因為服務可以通知系統(tǒng)給進程發(fā)消息,并且能連接到其他進程。他不僅包含了由aidl工具生成的接口文件,并且浩瀚Stub的子類事先RPC的方法。一個服務的客戶端可以可以只有aidl工具生成的借口文件。   
下面是一個服務和他的客戶端是如何建立鏈接:   
@服務的客戶端(在本地端)實現(xiàn)onServiceConnected()和onServiceDisconnected()方法,所以當一個既定的遠程服務鏈接成功時、或者斷開連接時,他們可以被通知到。調用bindService()方法可以建立連接。   
@服務的onBind()方法可以實現(xiàn)接受或者拒絕方法。這取決于接收到的Intent(bindService())。如果連接被接受了,他會返回一個Stub子類的實例。   
@如果服務接受了連接,Android會調用客戶端的onServiceConnected()方法,并且傳遞給一個IBinder對象,IBinder對象是一個被服務管理的Stub子類的代理。通過代理,客戶端可以調用遠程方法。   
上面簡短的介紹省略了一些RPC機制的細節(jié)。更多信息可以查看Designing a Remote Interface Using AIDL或者IBinder類的介紹。   
   
在一個新的contexts里,你實現(xiàn)的方法可能被多于1個的線程調用,因此必須是線程安全的。   
這就是為什么被叫做遠程方法,就像上節(jié)討論的RPC機制一樣。當調用一個實現(xiàn)自IBinder對象的方法時,此方法和IBinder一樣屬于同一個進程,那么方法在調用者的線程里執(zhí)行。然而,如果在其他的進程里調用方法,那么方法在一個從Android維護的和IBinder在同意進程里的線程池里選擇的一個線程里運行(太直譯了),而不在主線程里運行。例如,一個服務的onBind()方法可以被服務所在進程的主線程所調用。onBind()返回的對象所實現(xiàn)的方法(例如一個實現(xiàn)RPC方法的Stub的子類)可以被線程池的方法調用。因為服務可以有多個客戶端,同時可以有多個線程池服務于相同的IBinder方法。IBinder方法必須是方法安全的。   
同樣的,一個content provider內容提供商可以接收來自其他進程的數(shù)據(jù)請求。盡管ContentResolver和ContentProvider隱藏了管理進程間通信的細節(jié),ContentProvider 方法響應這些需求:query方法,insert方法,delete方法,update更新方法,和getType方法,從contentProvider進程的線程池的線程里被調用,而不是主線程里。他們也可能同時被多個線程調用,所以也必須是線程安全的。   
   
   
   
   
   
   
   
   

上一篇:《Android Dev Guide》系列教程6:Android生命周期之a(chǎn)ctivity生命周
下一篇:《Android Dev Guide》系列教程3:應用基礎之組件篇2
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡信息服務信用承諾書 | 增值電信業(yè)務經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-9-20 04:19 , Processed in 0.064507 second(s), 15 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復 返回頂部 返回列表