Android服務(wù)被設(shè)計用來執(zhí)行很多操作,比如說,可以執(zhí)行運行時間長的耗時操作,比較耗時的網(wǎng)絡(luò)操作,甚至是在一個單獨進程中的永不會結(jié)束的操作。實現(xiàn)這些操作之一是通過Android接口定義語言(AIDL)來完成的。AIDL被設(shè)計用來執(zhí)行進程間通信,另一種實現(xiàn)方式見博文Android進程間的通信之Messenger。本文我們將學(xué)習(xí)如何創(chuàng)建AIDL文件實現(xiàn)Android進程間通信。在正式學(xué)習(xí)之前,我們先澄清一些“事實”。

關(guān)于Android Service

1、Android服務(wù)不是后臺任務(wù),它們默認(rèn)只運行在你的app的主線程中 2、Android服務(wù)可以通過設(shè)置來運行在不同進程中 3、如果Android服務(wù)在不同進程中啟動,你將不能使用通常的IBinder接口與其通信

AIDL:Android Interface Definition Language

為了在Android應(yīng)用中實現(xiàn)進程間通信,我們需要在遠(yuǎn)端進程中定義一系列可被當(dāng)前進程訪問的方法。通過AIDL我們可以定義這樣的一系列方法。AIDL就好像Java中的其它接口一樣可以在其中定義一些抽象方法。我們首先需要創(chuàng)建一個以.aidl為后綴的文件并在里面定義所需的抽象方法。

AIDL的一個主要特征是,通過使用AIDL,我們可以在兩個不同的應(yīng)用中進行通信(其實Messenger也可以實現(xiàn)同樣的操作,兩者區(qū)別請見博文

網(wǎng)友評論