Android -- 跨應用綁定service(AIDL)

來源:互聯網
上載者:User

標籤:android

之前一章記錄了跨應用啟動service,之前學習過startService於bindService的區別及用法。
使用bindService方法,activity需要service返回一個Binder對象,那麼如果是兩個應用怎麼實現呢,這裡就涉及到了一個AIDL的概念。

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

下面我們來看如何使用,
首先我們需要在service1項目中建立一個aidl介面。
我用的是eclipse,建立方法,包名右鍵–NEW–File–.aidl尾碼的名稱**,
aidl檔案中的自己輸入介面代碼。

建立完檔案後,clear工程,會在gen目錄下生產相應的java檔案。

第二步
進入service1項目中的service修改onBinder方法,代碼如下

    @Override    public IBinder onBind(Intent intent) {        // TODO Auto-generated method stub        return new IMyService.Stub() {            @Override            public void basicType() throws RemoteException {                // TODO Auto-generated method stub            }        };    }

至此,一個簡單的aidl建立成功。

我們再回到service2項目中,增加按鈕事件監聽,

        case R.id.button3:            bindService(serviceIntent, this, Context.BIND_AUTO_CREATE);            break;        case R.id.button4:            unbindService(this);            break;

成功完成service2項目綁定service1項目中的service

Android -- 跨應用綁定service(AIDL)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.