【程序間通訊】Android 程序間通訊的幾種實現方式
阿新 • • 發佈:2019-01-23
一、整體結構
下面將逐一介紹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的目的就是實現通訊介面。