1、AIDL創建流程及簡單Demo

如果覺得圖片顯小,請放大網頁,Ctrl + 滾輪

AIDL進程間通訊,創建流程如下:

1、有個服務端 AIDLService,服務端寫好AIDL文件

2、有個客戶端 AIDLClient,客戶端將服務端寫好的AIDL所在的包整體複製粘貼過來

演示的AIDL功能也很簡單,只要客戶端 連接 到服務端,服務端就告訴你一個名字。

一步一步開始

先有服務端,後有客戶端

服務端

1、創建名爲 AIDLService 的項目

2、創建AIDL

3、給AIDL命名

命名雖然可以隨意,但是還是規範,默認名稱是 IMyAidlInterface,我們起個名字叫 IUserAidlInterface

4、執行一下Build  --->  Make Project 快捷鍵 Ctrl + F9

執行這一步都做了什麼,我們看一下

記住這個層級,看一下標記的方法,

這時候如果我們在IUserAidlInterface.aidl內增加一個方法 getName()

這時候

然後我們 ctrl + F9 運行一下 Make Project

5、編寫Service

/**
 * 項目名稱:AIDLService
 * 類名稱  :com.example.yanlong.aidlservice
 * 作者    :高延榮
 * 創建時間:2018/1/14
 * 類描述  :
 */
public class UserService extends Service {

    private final IBinder iBinder = new IUserAidlInterface.Stub() {
        @Override
        public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {

        }

        @Override
        public String getName() throws RemoteException {
            return "您好,我的名字叫服務端";
        }
    };

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return iBinder;
    }
}

iBinder 的寫法是固定的,即使用 Aidl.Stub();

 

6、服務端的 MyService 對外開放

在清單文件中

<service android:name=".UserService">
    <intent-filter>
        <!-- action 的name 可以改成自己內容,比如 xxxxxxx  -->
        <action android:name="com.example.yanlong.aidlservice.userservice" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</service>

 

 

客戶端

1、新建名爲 AIDLClient 的項目

2、將AIDLService 中 的 AIDL所在的包,整體賦值粘貼到  AIDLClient 中

複製完成後Ctrl + F9 一下

3、設置點擊事件,開啓AIDL連接

4、封裝連接成功後傳遞過來的IBinder

5、先運行服務端,再運行客戶端,點擊查看打印信息。

最後,這裏簡單的AIDL就完成了,下一篇總結一下線程問題。

 

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