Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android實現進程間通信的實例

Android實現進程間通信的實例

編輯:Android開發教程

Android Service是分為兩種:

本地服務(Local Service): 同一個apk內被調用

遠程服 務(Remote Service):被另一個apk調用

遠程服務需要借助AIDL來完成。

AIDL 是什麼

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

AIDL IPC機制是面向接口的,像COM或Corba一樣,但是更加輕量級。它是使用代理類在客戶端和實現端傳 遞數據。

AIDL 的作用

由於每個應用程序都運行在自己的進程空間,並且可以從應用程序UI 運行另一個服務進程,而且經常會在不同的進程間傳遞對象。在Android平台,一個進程通常不能訪問另一個 進程的內存空間,所以要想對話,需要將對象分解成操作系統可以理解的基本單元,並且有序的通過進程邊界 。

通過代碼來實現這個數據傳輸過程是冗長乏味的,Android提供了AIDL工具來處理這項工作。

選擇AIDL的使用場合

官方文檔特別提醒我們何時使用AIDL是必要的:只有你允許客戶端從不同的 應用程序為了進程間的通信而去訪問你的service,以及想在你的service處理多線程。

如 果不需要進行不同應用程序間的並發通信(IPC),you should create your interface by implementing a Binder;或者你想進行IPC,但不需要處理多線程的,則implement your interface using a Messenger。無 論如何,在使用AIDL前,必須要理解如何綁定service——bindService。

下面將要講到的這個 例子來自:http://www.cnblogs.com/lonkiss/archive/2012/10/23/2735548.html

下面用一個客戶 端Activity操作服務端Service播放音樂的實例演示AIDL的使用。

服務端代碼結構

客戶端代碼結構

被標記的就是需 要動手的。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved