android的cache機制系列一

來源:互聯網
上載者:User

 


      打算寫個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);


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.