Android介面定義語言—AIDL(二)

來源:互聯網
上載者:User

1.建立.aidl檔案

AIDL使用簡單的文法來聲明帶有多個方法的介面,這個些方法能夠帶有參數和傳回值。參數和傳回值可以是任意類型的,甚至是其他AIDL產生的介面。

必須使用Java程式設計語言來構建.aidl檔案。每個.aidl檔案必須定義一個單一的介面,並要求只有介面聲明和方法簽名。

預設情況下,AIDL支援下列資料類型:

1.Java語言中所有的未經處理資料類型(如int,long,char,boolean等);

2.String

3.CharSequence

4.List

   在List中的所有元素都必須是這個列表中所支援的資料類型,或其他AIDL所產生的介面    或是由你聲明的類型。List可以選擇使用範型類(如List<String>)。雖然是使用List介面來產生方法,但實際上接受類始終是ArrayList類。

5.Map

   在Map中的所有元素都必須是這個列表中所支援的資料類型,或者是其他的AIDL所產生的介面,或者是由你聲明的類型。不支援範型Map(如Map<String, Integer>)。雖然使用Map介面來產生方法,但實際上接受類始終是HasMap。

上述列表中沒有列出的其他類型都必須要包含一個import語句,即使是在與介面相同的包中定義的。

在定義Service介面是,要注意:

1.方法能夠帶有0或多個參數,並且能夠返回一個值或void;

2.所有非基本類型的參數都需要方向性的標記,指明資料的走向,既可以是in、out,也可以是inout(詳細請看下面的樣本)。

預設是in,不能是其他的方式。

警告:你應該把資料走向限制到真正需要的方向,因為編組參數是非常浪費資源的。

3.在.aidl檔案中包含的所有代碼注釋都會被包含在產生的IBinder介面中(除了在import和package語句之前的注釋)。

4.僅支援方法,不能暴露AIDL中的靜態欄位。

以下是一個.aidl檔案的樣本:

// IRemoteService.aidl

package com.example.android;

 

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

 

/** Example service interface */

interface IRemoteService {

    /** Request the process ID of this service, to do evil things with it. */

    int getPid();

 

    /** 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);

}

簡單的把.aidl檔案儲存到工程的src/目錄中,在編譯應用程式時,SDK工具會在工程的gen/目錄中產生IBinder介面檔案。產生的檔案名稱與.aidl檔案名稱相匹配,只是使用.java副檔名(例如,IRemoteService.aidl,產生結果是IRemoteService.java)。

如果使用Eclipse,增量編譯幾乎會立即產生綁定器類。如果不使用Eclipse,那麼Ant工具會在你下次編譯應用程式時產生綁定器類---你應該在完成編寫.aidl檔案後立即用ant debug(或ant release)來編譯工程,以便你的代碼能夠連結到產生的類。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.