AndroidBinder學習趣事
看Android原始碼無論如何繞不開Binder,因此我一直對Binder的實現機制有濃厚的興趣。無奈本人功力不夠,所以對此一直沒有清晰的認識。看了網上一些分析Binder的文章,基本都是原始碼分析,我覺得對於Binder這樣一種比較複雜的框架,最好不要一開始就進入到原始碼這麼細節的層面,很容易找不到北。我覺得應該先撇開程式碼,有原理性的介紹,再根據個人需要深入程式碼去分析。因為沒有找到合適的文章,所以我就想自己來探究,自己來寫,我主要想解決以下幾個問題:
- Binder的歷史?
- Binder和Linux原有的IPC有什麼區別,為什麼一定要用Binder?
- Binder整體的設計是怎樣的?
- Binder的跨程式資料傳輸是怎麼實現的?
但是,正當我準備自己動手探究時,卻找到一篇很不錯的文章Android Binder design and implementation design,一下子把我的問題都回答了,開心,又有點失落。這真是一篇高質量的文章,我想我可以把它翻譯成中文,跟大家分享。然而緊接著在裡面一個例子中看到”Zhang San”。心裡驚呼“難道原文是中文?”。還真找到了,原文在CSDN上Android Bander設計與實現 – 設計篇。這下只有為國人感到自豪了。這篇文章清晰地闡述了Binder的設計實現機制,清晰易懂。
整體的設計已經瞭然於胸,就可以自己去看程式碼,親自觸控裡面的實現細節。網上有不少原始碼分析的文章,最有名的要數老羅的。但是我覺得原始碼就像一個豐富的寶庫,原始碼分析應該是帶著問題,有目的地去分析,不然只會被別人牽著鼻子走,或者迷失其中。就像老羅在系統地分析Android原始碼前也是看了很多書(見那兩年煉就的Android內功修養)。
除了閱讀原始碼,瞭解Binder的實現細節,我還想了解Linux原有的IPC機制,例如管道,System V IPC,socket是如何設計的,其設計思想和出發點各有什麼不同?此處先留著問題,後面再探究總結。
相關文章
- C語言學習趣事_這樣的IF子句Condition你傷的起嗎?C語言
- salesforce零基礎學習(一百三十四)State And Country/Territory Picklists啟用後的趣事Salesforce
- salesforce零基礎學習(一百一十)list button實現的一些有趣事情Salesforce
- 關於Linux的趣事Linux
- 一次谷歌面試趣事谷歌面試
- Linux/Unix 桌面趣事:讓桌面下雪Linux
- 關於 Bash 指令碼中 Shebang 的趣事指令碼
- 網際網路歷史10大趣事
- 學習學習再學習
- Linux 27件有趣事實你知道多少?Linux
- sed 原地替換檔案時遇到的趣事
- 深度學習——學習目錄——學習中……深度學習
- PDS Wuhan專案趣事之拖鞋顧問團隊
- Linux/Unix 桌面趣事:ASCII 藝術水族箱LinuxASCII
- 關於Android L的5個有趣事實Android
- 5個關於Android L的有趣事實Android
- Linux/Unix 桌面趣事:終端上的聖誕樹Linux
- 智慧卡模組所用條帶的一些趣事
- 深度學習(一)深度學習學習資料深度學習
- 深度學習學習框架深度學習框架
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- AKM專案趣事之計算心理陰影面積
- 學習產品快報09 | “CSDN學習”:增加學習提醒,提示學習不忘記
- 【強化學習】強化學習/增強學習/再勵學習介紹強化學習
- 學習ThinkPHP,學習OneThinkPHP
- 前端學習之Bootstrap學習前端boot
- 學而習之,成就學習
- 前端週刊第62期:學習學習再學習前端
- 深度學習+深度強化學習+遷移學習【研修】深度學習強化學習遷移學習
- 強化學習-學習筆記2 | 價值學習強化學習筆記
- 前端程式設計師的趣事,一起來看看吧前端程式設計師
- Linux/Unix 桌面趣事:桌面上追逐的貓和老鼠Linux
- Himanshu Mehra:關於手機APP的 15 個有趣事實APP
- Golang 學習——interface 介面學習(一)Golang
- Golang 學習——interface 介面學習(二)Golang
- 深度學習學習7步驟深度學習
- 《JAVA學習指南》學習筆記Java筆記
- Go學習【二】學習資料Go