• Load


     File:

    BrowserFrame.startLoadingResource()

    ------>FrameLoader.executeLoad()
    ------->FrameLoader.handleLocalFile(String url, LoadListener loadListener, WebSettings settings) 
    --->new DataLoader(url, loadListener).load()
    ---->StreamLoader.load()
    --->StreamLoader.sendHeaders()
     ---->mLoadListener.headers(headers)
    ---->sendMessageInternal(obtainMessage(MSG_CONTENT_HEADERS, headers))
    ---->LoadListener.handleMessage(Message msg)---->LoadListener.handleHeaders(Headers headers)

    Cache:HTTP头的Expires与Cache-controlhttp://www.cnblogs.com/wrmfw/archive/2011/09/09/2172003.html

    BrowserFrame.startLoadingResource()

    ------>FrameLoader.executeLoad()

    -------> if (mListener.isSynchronous()) {

                    return handleHTTPLoad();
                }
                WebViewWorker.getHandler().obtainMessage(
                        WebViewWorker.MSG_ADD_HTTPLOADER, this).sendToTarget();

    ---->FrameLoader.handleCache()  || mNetwork.requestURL(mMethod, mHeaders, mPostData, mListener);

    ----->FrameLoader.startCacheLoad(result); 

    ------> CacheLoader.load();   

    --->buildHeaders(headers);    StreamLoader.sendHeaders() &&sendData()-->mDataStream.read(mData);

     ---->mLoadListener.headers(headers) 

    ----> LoadListener.headers(Headers headers){sendMessageInternal(obtainMessage(MSG_CONTENT_HEADERS, headers));}

    ---->LoadListener.handleMessage ()[MSG_CONTENT_HEADERS]

    ---> handleHeaders((Headers) msg.obj);

    --->WebViewWorker.getHandler().obtainMessage(WebViewWorker.MSG_CREATE_CACHE, data).sendToTarget(); 

    ---> WebViewWorker.handleMessage(Message msg)[MSG_CREATE_CACHE]

    ---> CacheCreateData data = (CacheCreateData) msg.obj;

           CacheManager.CacheResult cache = CacheManager.createCacheFile(data.mUrl, data.mStatusCode, data.mHeaders,
                                                                                                            data.mMimeType, data.mPostId, false);

     --->CacheResult ret = parseHeaders(statusCode, headers, mimeType);

     ---->setupFiles(databaseKey, ret); 

    handleHTTPLoad 

    if (handleCache()) {
                // push the request data down to the LoadListener
                
    // as response from the cache could be a redirect
                
    // and we may need to initiate a network request if the cache
                
    // can't satisfy redirect URL
                mListener.setRequestData(mMethod, mHeaders, mPostData);
                return true;
            }
     private boolean handleCache() {
            switch (mCacheMode) {
    case WebSettings.LOAD_NO_CACHE:
                    break;
    case WebSettings.LOAD_CACHE_ONLY: 
     case WebSettings.LOAD_CACHE_ELSE_NETWORK: 
    default:
                case WebSettings.LOAD_NORMAL:}

    ---->FrameLoader.handleCache() 

    ---->CacheManager.getCacheFile           
  • 相关阅读:
    linux上TCP connection timeout的原因查找
    AC-BM算法原理与代码实现(模式匹配)
    URPF技术白皮书
    漫谈协同过滤推荐算法
    自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用
    推荐系统的常用算法,选择,漫谈,推荐系统开源软件汇总
    MySQL索引原理及慢查询优化
    深入详解SQL中的Null
    《Gulp 入门指南》 : 使用 gulp 压缩 JS
    Process Explorer
  • 原文地址:https://www.cnblogs.com/fangxiang/p/2375812.html
Copyright © 2020-2023  润新知