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);
补充:移动开发 , Android ,