PieBridge遍略,一個高效、小巧的基于Bundle的Android進程間通信IPC框架

PieBridge

An efficient, light, and easy-to-use framework for Android Inter-Process Communication (IPC).
一套高效辅肾、小巧、易用的基于 Bundle 的 Android 進程間通信IPC框架轮锥。https://github.com/kuangfrank/PieBridge

這幾天學習了愛奇藝的跨進程通信框架——Andromeda矫钓,又研究了基于 JSON PRC 協(xié)議的 Android 跨進程調用解決方案Bifrost,覺得很受啟發(fā)舍杜。

Andromeda 比較適用于 App 多進程架構整體解決方案新娜;而 Bifrost 通訊協(xié)議基于 Json,調用效率及對復雜類型的支持上還有進步空間既绩。

如果有一個框架能借用上述兩種框架的思路杯活,簡化集成過程,并且提升跨進程調用效率熬词,提高對復雜類型的支持度,豈不妙哉吸重。

這就是開發(fā) PieBridge 框架的出發(fā)點互拾。恰逢七夕節(jié),PieBridge(鵲橋) 這個名字應景而生嚎幸,寓意 Android 進程間的通訊暢通無阻颜矿。

PieBridge 框架基于Android原生提供的 Bundle 進行通訊。Bundle 實現(xiàn)了 Parcelable 接口嫉晶,內(nèi)部維護了 Map<String,Object> 數(shù)據(jù)結構骑疆,所以既能實現(xiàn)高效的通訊,又能與各種復雜類型之間進行轉換替废。

PieBridge 的 Source & Demo 請點擊 PieBridge GitHub
PieBridge 框架箍铭,Lib 代碼僅包含4個Java文件,不過300行代碼椎镣,易學易用诈火。

調用方式

Android 的跨進程調用使用 AIDL 方式,通常要寫很多代碼状答,操作繁雜冷守;不同業(yè)務的跨進程調用刀崖,不易復用。
若使用 PieBridge 框架庫拍摇,可降低使用難度亮钦。

只需像本地調用一樣,先定義一個接口和實現(xiàn)類。

public interface IBookApi {
    Bundle insertBookListMethod(Bundle param);
    Bundle deleteBookListMethod(Bundle param);
    ...
  }
public class BookApiImpl implements IBookApi {
    @Override
    public Bundle insertBookListMethod(Bundle param) {
        ArrayList<Book> tmpList = BookApiUtil.fromBundle(param);
        sBookList.addAll(tmpList);

        Bundle result = BookApiUtil.toBundle(sBookList);
        return result;
    }

    @Override
    public Bundle deleteBookListMethod(Bundle param) {
        ...
        return result;
    }
    ...
}

再注冊接口和實現(xiàn)類框产,在 Application 初始化過程中調用柱衔,請參考 Demo 應用。

public class MainApp extends Application {
    ...
    @Override
    public void onCreate() {
        super.onCreate();

        if (isMainProcess(this)) {
            PieBridge.getInstance().init(this);
        } else if (isPieBridgeProcess(this)) {
            PieBridge.getInstance().register(IBookApi.class, BookApiImpl.getInstance());
        }
    }

}

基本原理

定義通用ADIL接口

import android.os.Bundle;
interface IPieBridgeAidl {
    Bundle call(in Bundle args);
}

跨進程通訊時巡语,調用方通過ADIL 代理,將調用接口名作為參數(shù)傳入淮菠,服務方以動態(tài)代理方式調用實際的接口男公,返回數(shù)據(jù)。

小結

優(yōu)點

  • 易學易用合陵,簡化跨進程編碼
  • 調用高效枢赔,支持復雜數(shù)據(jù)傳輸
  • 源碼不依賴任何三方庫,文件數(shù)拥知、代碼量少踏拜,易于集成

缺點

  • Bundle 與原始數(shù)據(jù)類型之間需要進行轉換。即便是簡單的數(shù)據(jù)類型低剔,也需要通過 Bundle 通訊
  • 目前代碼異步調用尚未實現(xiàn)速梗,只支持同步操作

聯(lián)系方式及相關鏈接

本人e-mail: kuangrenjin@qq.com

PieBridge GitHub

Andromeda GitHub

Bifrost GitHub

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市襟齿,隨后出現(xiàn)的幾起案子姻锁,更是在濱河造成了極大的恐慌,老刑警劉巖猜欺,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件位隶,死亡現(xiàn)場離奇詭異,居然都是意外死亡开皿,警方通過查閱死者的電腦和手機涧黄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赋荆,“玉大人笋妥,你說我怎么就攤上這事≌叮” “怎么了挽鞠?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我信认,道長材义,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任嫁赏,我火速辦了婚禮其掂,結果婚禮上,老公的妹妹穿的比我還像新娘潦蝇。我一直安慰自己款熬,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布攘乒。 她就那樣靜靜地躺著贤牛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪则酝。 梳的紋絲不亂的頭發(fā)上殉簸,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音沽讹,去河邊找鬼般卑。 笑死,一個胖子當著我的面吹牛爽雄,可吹牛的內(nèi)容都是我干的蝠检。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼挚瘟,長吁一口氣:“原來是場噩夢啊……” “哼叹谁!你這毒婦竟也來了?” 一聲冷哼從身側響起乘盖,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤本慕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侧漓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡监氢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年布蔗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浪腐。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡纵揍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出议街,到底是詐尸還是另有隱情泽谨,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站吧雹,受9級特大地震影響骨杂,放射性物質發(fā)生泄漏。R本人自食惡果不足惜雄卷,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一搓蚪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丁鹉,春花似錦妒潭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冯凹,卻和暖如春谎亩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谈竿。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工团驱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人空凸。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓嚎花,卻偏偏與公主長得像,于是被迫代替她去往敵國和親呀洲。 傳聞我的和親對象是個殘疾皇子紊选,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_x閱讀 15,968評論 3 119
  • 我知道我累了卖词,累的不想說話,累的腰有點直不起來吏夯,就算彎彎腰也有些酸此蜈,也許屋里該點一盆火,暖的“彎身成直身”噪生。 我知...
    老鼻子了閱讀 295評論 0 2
  • 今天本該上課了 我還在家里待著 明天啟程回學校了 哈哈哈哈 不開心 要離開親愛的家了 離開父母了 離開我媽做的...
    猛擲閱讀 152評論 0 1
  • iOS中Today擴展插件與宿主APP的交互 擴展是iOS8后系統(tǒng)開發(fā)給開發(fā)者的新開發(fā)思路與接口裆赵,每一個擴展都可以...
    Charming_Zhang閱讀 1,543評論 0 2