Android Studio 建立aidl檔案,用於程式間通訊

Dusan_杜小菜發表於2016-05-20

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。

相關文章