spi全稱是service provider inte***ce,服務提供方介面,服務通常是指乙個介面或者乙個抽象類,服務提供方是對這個介面或者抽象類的具體實現,由第三方來實現介面提供具體的服務。spi提供了一種動態的對應用程式進行擴充套件的機制,通常用作框架服務的拓展或者可替換的服務元件。
public
inte***ce
messageservice
複製**
public
class
amessageservice
implements
messageservice
}複製**
public
class
bmessageservice
implements
messageservice
}複製**
如下圖所示,注意目錄結構:
可以使用 google 推出的 auto-service,它可以方便的幫我們生成對應的描述檔案,用法很簡單使用 auto-service:
依賴implementation 'com.google.auto.service:auto-service:1.0-rc3'
在 service 實現類使用註解@autoservice
@autoservice(messageservice.class)
public
class
bmessageservice
implements
messageservice
}複製**
使用serviceloader去載入具體服務類,然後遍歷具體的實現類,serviceloader其實就是去meta-info/services
目錄下讀取檔案內容,然後例項化。
serviceloaderserviceserviceloader = serviceloader.load(messageservice.class);
for (messageservice messageservice : serviceserviceloader)
複製**
只提供服務介面,具體服務由其他元件實現,介面和具體實現分離,同時能夠通過系統的serviceloader
拿到這些實現類的集合,統一處理。
在 android 專案中幾乎已經見不到 spi 的使用了,如果想達到元件間通訊同時又減少效能損失,可以使用 apt 在編譯時生產成對應的 service,再通過依賴注入獲取到 service 的例項。不過在 apt 中我們又會使用spi 技術,所以筆者覺得有必要先講一下 spi.
參考 demo
SPI使用介紹
spi協議介紹 硬體連線 spi flash和spi oled。兩種方式 用gpio模擬spi 用s3c2440的spi控制器 我們先介紹下spi協議,硬體框架如下 sck 提供時鐘 do 作為資料輸出 di 作為資料輸入 cs0 cs1 作為片選 同一時刻只能有乙個spi裝置處於工作狀態。假設現在...
SPI協議介紹
spi協議介紹 一 基本資訊 spi synchronous peripheral inte ce 同步外圍裝置介面 是序列介面的一種。該介面協議由motorola公司提出並形成規範。1 資料線 spi介面包含四條線 cs sck mosi miso,含義和作用如下 1 cs 片選訊號,低電平有效,...
SPI協議介紹
spi 序列外圍裝置介面,主要應用在 eeprom flash 實時時鐘 ad轉換器,以及數字訊號處理器和數碼訊號解碼器之間。是一種高速的,全雙工,同步通訊匯流排,只占用四根線,節約了晶元的管腳,為 pcb的布局節省了空間,現在越來越多的晶元整合了這種通訊協議。spi介面一般使用 4條線通訊 mis...