原创 View的大小是由什麼決定

在android面試中經常被問到view的大小問題,那麼view的大小是如何決定的呢? view的測量,佈局和繪製,從ViewRootImpl中開始,相關代碼如下: private void performTraversals()

原创 android 2d顯示系統

什麼東西可以被顯示出來?理論上講寫進framebuffer的內容,纔可以顯示在屏蔽上。在android應用開發中,View是大家再熟悉不過的,View當然是可以被顯示的,例如,textview,button等。View與skia,

原创 activity的setConntentView函數分析

這個函數雖然調用起來簡單,但是內容卻很多,有必要單獨理清一下。 xml文件 xml是一種結構化的數據,在計算機中有着廣泛的運用。xml常用於配置,例如spring配置javabean,ant中配置編譯文件。在android中除了作

原创 josn解析之token生成

如何解析json json本質上講是一個結構型的文本。可以對其也解析的複雜程度遠不如編譯器。編譯器的一個基礎功能便是詞法分析。而Gson的核心功能之一,也是詞法分析。 詞法分析的任務是要解析出Token流,Token是一個二元組。

原创 JsonElement的生成

JsonElement 先來看下JsonElement繼承關係: JsonElement (com.google.gson) JsonObject (com.google.gson) JsonArray (com.

原创 head.s分析

在boot.s中,內核已經移至0x0000 0000處,並且開始執行,首先執行的就是head.s,這部分代碼執行完後,也會被覆蓋,嚴格意義上來講,不是完全屬於內核代碼。 這部分代碼採用AT&T彙編編寫,下面來詳細分析下其功能: /

原创 main.c源碼分析

前面分析了boot.s和head.s,終於可以調用c語言編寫的代碼,從彙編中解脫出來。 #define __LIBRARY__ #include <unistd.h> #include <time.h> /* * we nee

原创 linux內存初始化過程bootloader部分

OS負責內存分配和回收,但在這之前,一定要知道硬件可用內存的情況。在機器啓動的時候,OS還沒發揮作用之前,BIOS會對硬件資源做一次檢查,並將信息保存在特定的位置(當然也是存儲介質,大部分情況是內存),操作系統內核被加載完成之後,

原创 androd源碼編譯

下載完android-7.0.0_r1後,用du -sh 查看一下,大概111G。 再看看各個目錄的情況 下面開始源碼的編譯: 1.source build/envsetup.sh 編譯環境變量設置,包括一些參數和方法 2.lun

原创 xml解析器獲取過程

在上篇文章我們知道ResourceTypes.h中定義了ResXMLParser類但沒有實現其方法,在頭文件中聲明,在具體的cpp文件中定義,是一種良好的設計思路,抽離公共的,差異化的東西,各自去實現。所以,我們來看下Resour

原创 如何下載Android源碼

我們使用清華的鏡像來下載Android源碼, 將 https://android.googlesource.com/ 全部使用 https://aosp.tuna.tsinghua.edu.cn/ 代替即可。其說明在https:/

原创 android自定view之xml文件解析過程(一)

在上篇文章中,我們看到setContentView之後的一系列調用。有幾個關鍵的地方,其中一個是xml的解析過程。衆所周知,android中使用的是pull解析,這種解析方式與SAX一樣,爲事件驅動,也不需要將整個文檔加載到內存處

原创 Android自定View之setContentView

在android中,xml巧妙的用於界面和代碼的解耦,解析xml文件,而最終通過反射,生成view的實例,而這一切的開始便是setContentView,這篇我們先來看看這些函數的調用過程: public void setCont

原创 nasm生成elf文件

生成elf文件並非只能用gcc。nasm可以生成各個平臺的中間文件和可執行文件。下面我們用nasm來生成hello.o: 先寫一個hello.s源文件 section .data msg: db "hello world!",0

原创 HashMap插入元素過程

hashmap採用數組和鏈表以及紅黑樹的基礎數據結構,數組的查找時間複雜度爲常數,鏈表爲o(n),而紅黑樹是一種平衡樹,穩定在log(n)。可以有很快的查找速度。 先來看看放入元素的過程: public V put(K key,