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平臺中實現進程間通訊方式一種,屬輕量級通訊機制,有著實現簡單、效率較高等優(yōu)點。

1 AIDL實現原理及過程

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

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

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

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

ADIL實現過程一般按以下步驟:(1)創(chuàng)建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)內部靜態(tài)抽象類Stub,Stub類及其子類在整個AIDL通訊中非常重要,是用于實現AIDL接口的實現類,Stub必須是Android.os.Binder的子類及IService的實現類。2)內部靜態(tài)類Proxy,Proxy類屬于是向遠程服務提供調用接口類。3)是IService中實現的AIDL訪問接口方法。Iservice接口部分代碼如下所示:

public interface IService extends android.os.IInterface

{

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

private static class Proxy implements com.lifeblood.ITestService

/內部靜態(tài)類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平臺中系統原語規(guī)則,為Android系統級開發(fā)過程中,進程間通訊提供了較為便利和簡單訪問模型。

主站蜘蛛池模板: 青青草一区二区免费精品| 91成人免费观看| 日本AⅤ精品一区二区三区日| 免费一级成人毛片| 色综合网址| 中文一区二区视频| 亚洲精品无码在线播放网站| 99热线精品大全在线观看| 一区二区欧美日韩高清免费| 国产精品视频观看裸模| 四虎永久免费在线| 97精品久久久大香线焦| 91毛片网| 一本色道久久88| 日本伊人色综合网| 免费久久一级欧美特大黄| 午夜小视频在线| 久久性妇女精品免费| 自拍欧美亚洲| 亚洲欧洲天堂色AV| 毛片在线播放a| 日韩欧美中文在线| 99视频在线免费看| 国产亚洲精品自在线| 国内毛片视频| a欧美在线| 欧美狠狠干| 国产91久久久久久| 亚洲美女一级毛片| 久久亚洲中文字幕精品一区| 色视频久久| 亚洲福利一区二区三区| av免费在线观看美女叉开腿| 国产乱码精品一区二区三区中文 | 凹凸国产分类在线观看| 黄色污网站在线观看| 99这里只有精品免费视频| 亚洲天堂伊人| 國產尤物AV尤物在線觀看| 亚洲天堂伊人| 六月婷婷精品视频在线观看| 国产人成乱码视频免费观看| 91美女视频在线| 久久国产精品电影| 人妻中文久热无码丝袜| 不卡国产视频第一页| 国产成人高清精品免费软件 | 美女视频黄频a免费高清不卡| 国产午夜精品鲁丝片| 精品夜恋影院亚洲欧洲| 狠狠色丁香婷婷| 91精品免费高清在线| 成人免费一级片| 亚洲成年人片| 国产女主播一区| 伊人久久婷婷五月综合97色| 色偷偷综合网| 日韩麻豆小视频| 最新国产成人剧情在线播放| 东京热一区二区三区无码视频| 午夜国产大片免费观看| 99久久亚洲综合精品TS| 米奇精品一区二区三区| 99视频精品全国免费品| 国产自在线拍| 精品久久777| 久久99国产乱子伦精品免| 国产中文在线亚洲精品官网| 国产成人1024精品| 九九线精品视频在线观看| 国产精品国产主播在线观看| 99热国产这里只有精品9九| 国产精品白浆在线播放| 精品人妻无码区在线视频| 美女视频黄频a免费高清不卡| 中文天堂在线视频| 久草热视频在线| 老司机久久精品视频| 有专无码视频| 久草国产在线观看| 成人在线观看不卡| 新SSS无码手机在线观看|