原创!转载请注明出自blog.csdn.net/lichwei1983
打算写个android的cache机制系列文章,目前部分主题还出于列提纲阶段,慢慢完善吧。
1 安卓的焦点
当在Node List中找到新焦点时,检查后发现如果与自己是兄弟姐妹,就把它push到stack里面。当所有的兄弟姐妹都被找到,换句话说是父亲的最后一个孩子被找到、并被放到stack里面,pop出此stack.注意:此stack不同于Tracker的stack,Tracker的stack只push带孩子的焦点。
这种方式是诡异的:焦点-子焦点-孙焦点--如果我保存每一代的数字(比如自己是第1代,孩子是第2代,孙子是第3代),我能更快的断定一个节点是否是此焦点的父亲的孙节点。这种方法额外要求能找到孙节点的父亲。
2 CachedNode是什么?是保存Node的类
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);