Android Studio 創建aidl文件,用於進程間通訊

android studio的使用方式和eclipse大不相同,因爲as是基於gradle構建項目的,eclipse是使用ant的方式構建。aidl文件,定義了不同的進程之間進行通訊的接口,那as怎麼創建的呢?

一,AIDL是什麼鬼?

在Android平臺,一個進程通常不能訪問另一個進程的內存空間,所以要想對話,需要將對象分解成操作系統可以理解的基本單元,並且有序的通過進程邊界。由於每個應用程序都運行在自己的進程空間,並且可以從應用程序UI運行另一個服務進程,而且經常會在不同的進程間傳遞對象。Android提供了AIDL工具來處理這項工作。

*

AIDL (Android Interface Definition Language)是一種IDL
語言,用於生成可以在Android設備上兩個進程之間進行進程間通信(IPC)的代碼。如果在一個進程中(例如Activity)要調用另一個進程中(例如Service)對象的操作,就可以使用AIDL生成可序列化的參數。
*

AIDL IPC機制是面向接口的,像COM或Corba一樣,但是更加輕量級。它是使用代理類在客戶端和實現端傳遞數據。

二,as自動構建,很簡單

選中你的項目module,右鍵>New>AIDL>AIDL File>IServiceInterface.aidl,as就會自動創建帶有AndroidManifest.xml中packageName一樣的包名,以及aidl文件。如圖:
IServiceInterface.aidl 文件的創建

三,編寫aidl接口

這裏的接口代碼,不能帶有修飾符,不能加public。

// IServiceInterface.aidl
package com.oair.oair_1;

// Declare any non-default types here with import statements

interface IServiceInterface {

     String getServiceName();//自定義的方法
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */
    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
            double aDouble, String aString);
}

編寫的接口,隨時可以增刪,提高擴展性,提供給遠程調用者。
可以通過as的菜單:build>>Make Project,生成對應的java文件。創建完之後在build/generated/source/aidl/debug下就可以見到自動生成的java文件

四,aidl接口規範總結

1,Java編程語言的主要類型 (int, boolean等) — 不需要 import 語句。

2,不會有返回給調用方的異常。

3,默認IPC調用是同步的。如果已知IPC服務端會花費很多毫秒才能完成,可以試着在獨立的線程中調用。

4,AIDL接口中只支持方法,不能聲明靜態成員。

歡迎交流,Dusan,Q291902259。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章