Android 模組通訊簡述

2021-10-01 23:39:36 字數 579 閱讀 2813

總所周知,android提供了很多不同的資訊的傳遞方式,比如在四大元件中本地廣播、程序間的aidl、匿名間的記憶體共享、intent bundle傳遞等等,那麼在這麼多傳遞方式,哪種型別是比較適合元件與元件直接的傳遞呢。

匿名的記憶體共享。比如用sharedpreferences,在處於多執行緒場景下,往往會執行緒不安全,這種更多是儲存一一些變化很少的資訊,比如說元件裡的配置資訊等等。

intent bundle傳遞。包括顯性和隱性傳遞,顯性傳遞需要明確包名路徑,元件與元件往往是需要互相依賴,這背離元件化中sop(關注點分離原則),如果走隱性的話,不僅包名路徑不能重複,需要定義一套規則,只有乙個包名路徑出錯,排查起來也稍顯麻煩,這個方式往往在元件間內部傳遞會比較合適,元件外與其他元件打交道則使用場景不多。

模組化主要的難點就是模組間沒有直接引用,如何通訊的問題(以下用module來代替模組,也就是android開發中的nodule),了解到的有主要以下幾種思想:

使用aidl:

基於aidl ipc:

模組化實踐總結:

美團的元件化處理框架:

乾貨整理部落格:android模組化/元件化通訊框架 

谷歌官網例子:

Win32程序間通訊簡述

使用wm copydata訊息及相應的結構體來實現程序間的通訊。特點 只能用sendmessage函式來傳送訊息,不能用postmessage或postthreadmessage來傳送訊息,所以只能是同步,不能非同步通訊 由於使用的sendmessage,所以只能用於視窗間的通訊 傳輸的資料中不能含...

作業系統程序間通訊簡述

無名管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊息佇列 message queue 訊息佇列是由訊息的鍊錶,存放...

串列埠通訊簡介

簡介 串列埠是一種泛稱,uart spi iic usb等介面都屬於串列埠。而嵌入式中所說的串列埠,一般是指uart口,即通用非同步收發器 universal asynchronous receiver transmitter 由於該介面傳輸速率低等原因,在普通的計算機中基本已經被取消,但作為一種簡...