android的cache機制系列一

 

      打算寫個android的cache機制系列文章,目前部分主題還出於列提綱階段,慢慢完善吧。

1   安卓的焦點

      當在Node List中找到新焦點時,檢查後發現如果與自己是兄弟姐妹,就把它push到stack裡面。當所有的兄弟姐妹都被找到,換句話說是父親的最後一個孩子被找到、並被放到stack裡面,pop出此stack.註意:此stack不同於Tracker的stack,Tracker的stack隻push帶孩子的焦點。

      這種方式是詭異的:焦點-子焦點-孫焦點–如果我保存每一代的數字(比如自己是第1代,孩子是第2代,孫子是第3代),我能更快的斷定一個節點是否是此焦點的父親的孫節點。這種方法額外要求能找到孫節點的父親。

 

2 CachedNode是什麼?是保存Node的類

3 CachedFrame是什麼? 是最重要的類,Cache引用的第一個節點總是Document,CachedFrame中保存瞭所有Frame相關的信息:

1 所有的Frame: WTF::Vector<CachedFrame> mCachedFrames,
2 所有節點(DOM::Node): WTF::Vector<CachedNode> mCachedNodes,
3 所有輸入框:WTF::Vector<CachedInput> mCachedTextInputs,
4 所有layer:WTF::Vector<CachedLayer> mCachedLayers;如果使用混合加速的話,
5 所有顏色:WTF::Vector<CachedColor> mCachedColors。

 

 

4 CachedRoot是什麼?是CachedFrame的子類,

5 CachedHistory是什麼?維護一個最近訪問的8個節點(Node)列表,用來代表歷史訪問。

 

WebViewCore::updateFrameCache()->

{

       CachedRoot* m_temp = new CachedRoot();

 

 

}

buildCache(CachedRoot* root)->

BuildFrame

 

 

  獲取Frame的Document:

   Document* doc = frame->document();

   Node* parent = doc;

   把緩存的父節點初始化設置為Frame的document:

   cachedParentNode.init(parent);

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *