999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AIDL進程間通信技術研究與分析

2013-12-31 00:00:00胡安明
無線互聯科技 2013年10期

摘 要:進程間通信是操作系統中非常重要基礎功能,實現進程通信有多種技術,比如管道通信流,IPC機制等,本文針對Android平臺中進程通信技術AIDL 進行較為深入的分析探討,并給出實例加以論述。

關鍵詞:Android;AIDL;進程通訊

操作系統中,多個進程間進行通訊、共享資源實現系統功能平臺,是非常基礎和重要的功能應用;同時,進程通訊也是操作系統內核的重要功能部分。Linux操縱系統中,進程通訊一般使用傳統的IPC(Inter-Process Communication,IPC)模式,且IPC模式實現了共享內存、管道、消息隊列和socket等等,雖然IPC模式廣泛使用,但IPC模式中UID/PID數據是由應用程序填入,存在著可靠性差,容易被篡改,難于維護等問題。

AIDL(Android Interface Definition Language)是Android系統自定義的接口描述語言,是Android平臺中實現進程間通訊方式一種,屬輕量級通訊機制,有著實現簡單、效率較高等優點。

1 AIDL實現原理及過程

AIDL語言屬于系統級原語,但語法結構和Java語言非常相似,AIDL中主要用于定義訪問接口,無實現過程。與Java不同的是,AIDL允許定義函數參數傳遞的方向,AIDL中支持三種方向:in,out,inout。

標識為in的參數將從調用者傳遞到遠程服務中;

標識為out的參數將從遠程服務傳遞到調用者中;

標識為inout的參數將先從調用者傳遞到遠程服務中,再從遠程服務返回給調用者。

ADIL實現過程一般按以下步驟:(1)創建AIDL接口描述文件;(2)通過繼承android.os.Iinterface接口實現遠程服務AIDL接口的Java接口;(3)綁定和使用遠程服務;(4)客戶端調用。

AIDL通訊案例中,服務端一般由一個AIDL文件和一個IService實現接口及Service實現類組成,其中IService接口用于實現AIDL所定義的訪問方法,且IService必須是android.os.Iinterface子接口,Service實現類則是AIDL接口具體的實現類。

1)定義如下AIDL文件如下:

interface IService {

int getAccountBalance();

int getCustomerList(in String branch, out String[] customerList);

}

2)Iservice接口的實現

在實現AIDL接口的Service接口其內部結構由三部分組成,1)內部靜態抽象類Stub,Stub類及其子類在整個AIDL通訊中非常重要,是用于實現AIDL接口的實現類,Stub必須是Android.os.Binder的子類及IService的實現類。2)內部靜態類Proxy,Proxy類屬于是向遠程服務提供調用接口類。3)是IService中實現的AIDL訪問接口方法。Iservice接口部分代碼如下所示:

public interface IService extends android.os.IInterface

{

public static abstract class Stub extends android.os.Binder {//Stub 內部靜態抽象類…..

private static class Proxy implements com.lifeblood.ITestService

/內部靜態類Proxy /………..

public int getAccountBalance();

public int getCustomerList(in String branch, out String[] customerList);

//現的AIDL訪問接口方法

3)TestService類的實現

TestService實現類,是Android中普通Service類Android.os.Service子類,是實現AIDL描述接口的重要實現類,但其實現過程有點特殊,是通過定義ItestService.Stub類型成員變量,實現Iservice接口中調用方法,也就是AIDL中定義的描述接口方法。

4)Activity類中啟動Service服務

本案例中Service只是提供遠程服務,無需在本地Activity中進行訪問,所以使用Intent類啟動Service即可,代碼結構如下: Intent service = new Intent(this, TestService.class);

startService(service);

5) AndroidManifest.XML中的配置

AndroidManifest.XML文件的配置非常重要,遠程服務時其他進程訪問定位到服務,就是通過AndroidManifest文件的配置名稱進行定位,其Service段配置如下:

6)客戶端進程調用

客戶進程調用時與JNDI方式相似,通過實現ServiceConnection接口綁定遠程服務,獲取Service對象,從而實現調用,在客戶端實例中也需拷貝AIDL接口文件。

2 測試運行

程序運行步驟如下:首先運行TestService服務端;再運行AIDLClient客戶端;點擊綁定連接AIDL獲取Service服務,并顯示調用信息。效果如圖1所示。

3 結束語

本文對AIDL接口描述語言的語法結構及實現原理方式,以及在遠程調用過程中AIDL的實現過程,及相關的配置方法進行了分析與探討。AIDL是按面向對象的設計思想實現進程通訊,且AIDL語言符合Android平臺中系統原語規則,為Android系統級開發過程中,進程間通訊提供了較為便利和簡單訪問模型。

主站蜘蛛池模板: 91娇喘视频| 精品国产美女福到在线直播| 国产91高清视频| www成人国产在线观看网站| 欧美无专区| 亚洲欧洲日韩国产综合在线二区| 亚洲国产清纯| 久久国产av麻豆| 波多野结衣无码中文字幕在线观看一区二区| 精品日韩亚洲欧美高清a| 亚洲天堂777| 激情成人综合网| 草逼视频国产| 欧美一级在线看| 久久6免费视频| 国产精品成人啪精品视频| 色综合中文| 国产欧美日韩视频怡春院| 美女免费黄网站| 国产在线自乱拍播放| 天堂成人在线| 色视频国产| 被公侵犯人妻少妇一区二区三区| 欧美在线黄| 尤物成AV人片在线观看| 97国产一区二区精品久久呦| 被公侵犯人妻少妇一区二区三区| 亚洲中文字幕无码mv| 国产男人天堂| 色综合综合网| 久久99精品久久久久纯品| 欧美激情福利| 国产尤物jk自慰制服喷水| 高清无码一本到东京热| 久久人搡人人玩人妻精品| 亚洲精品在线影院| 亚洲欧洲美色一区二区三区| 制服丝袜国产精品| 国产福利在线免费| 亚洲福利片无码最新在线播放| 亚洲V日韩V无码一区二区| 在线视频精品一区| 成人福利在线看| 97在线免费| 午夜国产在线观看| 亚洲国产成人无码AV在线影院L| 国产成人午夜福利免费无码r| 中文字幕第4页| 久久香蕉国产线看精品| 一本色道久久88综合日韩精品| 丁香亚洲综合五月天婷婷| 国产成人资源| 精品久久777| 国产电话自拍伊人| 亚洲AV免费一区二区三区| 国产福利不卡视频| 国产福利小视频在线播放观看| 大学生久久香蕉国产线观看| 国产无码在线调教| 青草午夜精品视频在线观看| 免费看久久精品99| 精品夜恋影院亚洲欧洲| 欧美在线免费| 亚洲天堂视频在线观看免费| 国产精品一区二区久久精品无码| 久操线在视频在线观看| 青青青视频免费一区二区| 少妇高潮惨叫久久久久久| 九色综合视频网| 最新亚洲人成网站在线观看| 国产高清自拍视频| www.精品视频| 伊人丁香五月天久久综合 | 中文字幕调教一区二区视频| 国产精品.com| 中文字幕亚洲无线码一区女同| 欧美综合区自拍亚洲综合绿色| 国产美女人喷水在线观看| 思思热在线视频精品| 91精品国产91久无码网站| 成年人福利视频| 国产成人精品一区二区三区|