zoukankan      html  css  js  c++  java
  • 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           
  • 相关阅读:
    Django创建模型。
    Kubernetes APIService资源
    应用系统管理风险
    [Golang] go list命令查看依赖的版本
    [Golang] 升级gin框架和jwtgo
    [Git] 解决git错误 OpenSSL SSL_read: Connection was reset, errno 10054
    [Github] 配置ssh免密码登录解决 You've successfully authenticated, but GitHub does not provide shell access.
    go循环遍历小坑
    Go 字符串拼接6种,最快的方式 strings.builder
    uniapp安卓真机调试提示检测不到手机【解决办法】
  • 原文地址:https://www.cnblogs.com/fangxiang/p/2375812.html
Copyright © 2011-2022 走看看