Android MediaScanner:(一)MediaScanner總體架構
http://blog.csdn.net/thl789/article/details/7583352
2012-05-19
本文是筆者的分析歸納,並用UML圖(Class Diagram/Sequence Diagram)來呈現。雖然來源於對Android原始碼的分析,但文中不會佔用大量篇幅羅列原始碼,所以讀者在閱讀本文時,手頭最好有Android原始碼,結合原始碼來解讀。本文講述MediaScanner的架構。
MediaScanner是Android系統Media的基礎,系統啟動之初,就掃描出Media檔案供後續使用,有新媒體加入或者刪除掉媒體檔案,也需要更新相應的媒體庫。Android的Music、Gallery等播放或呈現媒體檔案的程式也都基於穩定的MediaScanner掃描媒體檔案的結果,否則,會發現程式操作的Media檔案的URI根本不是實際對應的Media檔案,或者甚至來電鈴聲和鬧鈴等都會有問題。
MediaScanner位於packages/providers/MediaProvider下,包含MediaScannerReceiver、MediaScannerService以及MediaProvider。
下圖是packages/providers/MediaProvider下的AndroidManifest的內容:
- MediaScannerReceiver是一個BroadcastReceiver,接收廣播,進行媒體掃描,這也是MediaScanner提供給外界的介面之一。收到廣播之後啟動MediaScannerService具體執行掃描工作。
- MediaScannerService是一個Service,負責媒體掃描,它還要用到Framework中的MediaScanner來共同完成具體掃描工作,掃描的結果在MediaProvider提供的資料庫中。
- MediaProvider是一個ContentProvider,媒體庫(Images/Audio/Video/Playlist等)的資料提供者。負責運算元據庫,並提供給別的程式insert、query、delete、update等操作。
另外,IMediaScannerService和IMediaScannerListenter這兩個Interface提供給其他程式通過AIDLIPC呼叫掃描單個檔案的能力。定義在framework中,Service中實現介面。
下面針對MediaScanner中的各個部分,分別講解:
Android MediaScanner:(一)MediaScanner總體架構
講述MediaScanner的架構。
Android MediaScanner:(二)MediaScannerReceiver
講述MediaScannerReceiver針對來自Broadcast的不同請求所做的處理。
Android MediaScanner:(三)MediaScannerService
對MediaScannerService的類結構進行靜態分析,對建立時和啟動時的工作進行動態分析,分析過程中來看MediaScannerService如何處理MediaScannerReceiver所接收到的各種掃描請求。
Android MediaScanner:(四)MediaScanner之scanSingleFile
本文從MediaScannerService的scanFile入口開始,詳細分析MediaScanner和MediaScannerClient對單個媒體檔案的掃描處理過程。
Android MediaScanner:(五)MediaScanner之scanDirectories
Android MediaScanner:(六)MediaScanner之Native實現
Android MediaScanner:(七)MediaScanner完整過程總結
Android MediaScanner:(八)IMediaScannerService介面實現
相關文章
- MediaScanner原始碼簡單分析原始碼
- MediaScanner Java, JNI, mediaservice 呼叫關係Java
- [深入理解Android卷一全文-第十章]深入理解MediaScannerAndroid
- Tomcat總體架構(一)Tomcat架構
- IFC總體架構架構
- Python總體架構Python架構
- Android系統架構-----Android的系統體系架構Android架構
- Android 開發軟體架構思考以及經驗總結Android架構
- 基於Maven的SSM總體架構設計(一)MavenSSM架構
- Java 集合(1)之 總體架構Java架構
- 架構知識體系總結架構
- 業務架構、資訊架構、技術架構三位一體架構
- 淺談Android os體系架構Android架構
- Dubbo Mesh 總體技術架構方案架構
- Flutter框架分析(一)--架構總覽Flutter框架架構
- 畫出Android的大體架構圖Android架構
- 原始碼分析三:OkHttp(1)—總體架構原始碼HTTP架構
- Android 官方架構元件(一)——LifecycleAndroid架構元件
- 移動端架構師_Android架構師成長體系課程架構Android
- 從單體到微服務,軟體架構演化總覽微服務架構
- Android5.0 vold-整體架構Android架構
- 軟體架構與架構師架構
- 單體架構到垂直架構架構
- Android架構合集Android架構
- Android MVP 架構AndroidMVP架構
- Android view架構AndroidView架構
- Oracle 架構彙總Oracle架構
- 鳳凰架構總結架構
- 大型網站架構之:MySpace的體系架構一(轉載)網站架構
- 基於大中臺架構的電商業務中臺最佳實踐之一:業務中臺總體架構介紹架構
- 架構之:軟體架構漫談架構
- 一文搞懂MySQL體系架構!!MySql架構
- 一張圖進階 RocketMQ - 整體架構MQ架構
- 每一位Android開發者應該知道的Android體系架構和開發庫Android架構
- Tomcat 第三篇:總體架構設計Tomcat架構
- 單體架構&微服務架構&中臺服務架構架構微服務
- Facebook移動架構:Android Flux架構詳解架構AndroidUX
- Android-MVP架構AndroidMVP架構