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文件。如圖:
三,編寫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。