1. 程式人生 > >【程序間通訊】Android 程序間通訊的幾種實現方式

【程序間通訊】Android 程序間通訊的幾種實現方式

一、整體結構

這裡寫圖片描述

下面將逐一介紹4種通訊方式

二、4種通訊方式

1、Activity

Android內建了許多可供其他程式跨程序訪問的Activity,比如跳至打電話頁面(指定Action,uri跨程序訪問)

    Intent callIntent = new  Intent(Intent.ACTION_CALL, Uri.parse("tel:12345678" );  
    startActivity(callIntent);

與程序內訪問不同,跨程序並不需要指定Context物件和Activity的Class物件,而需要指定要訪問的Activity的Action(一個字串),有些Activity還需要指定一個Uri(通過Intent構造方法的第二個引數指定)

2、Content Provider

列子:Android本身提供了很多,如:音訊,視屏,聯絡人資訊等等,我們可通過這些Content Provider獲取相關資訊的列表,這些列表資料將以Cursor物件返回,因此Content Provider返回的資料是二維表形式。

3、Broadcast

廣播是一種被動跨程序通訊的方式。當某個程式向系統傳送廣播時,其他的應用程式只能被動地接收廣播資料。這就象電臺進行廣播一樣,聽眾只能被動地收聽,而不能主動與電臺進行溝通。
在應用程式中傳送廣播比較簡單。只需要呼叫sendBroadcast方法即可。該方法需要一個Intent物件。通過Intent物件可以傳送需要廣播的資料。

4、AIDL Service

廣播有一個缺點,在手機中廣播較多時會有明顯的延時,甚至有廣播發送不成功的情況出現。利用AIDL Servic實現跨程序通訊應運而生,
注意普通的Service並不能實現跨程序操作,實際上普通的Service和它所在 的應用處於同一個程序中,而它也不會專門開一條新的執行緒,因此如果在普通的Service中實現耗時的任務,需要新開執行緒

要實現跨程序通訊,需要藉助AIDL(Android Interface Definition Language)。Android中的跨程序服務其實是採用C/S的架構,因而AIDL的目的就是實現通訊介面。