首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Android webkit image的加载进程解析

2013-10-30 
Android webkit image的加载过程解析#############################################本文为极度寒冰原创,

Android webkit image的加载过程解析

#############################################

本文为极度寒冰原创,转载请注明出处#############################################

webkit有一个预下载的功能,主要是对img,script,link,input的标签的内容进行预下载。
我们知道了预下载的下载过程,但是预下载的内容是怎么被读取的呢?
这部分准备用两天的时间进行研究。
读取一个预下载的内容,准备从img标签开始进行研究。原因是img的内容我们比较直观,相比较于script我们也更加的容易理解.


前面的分析可以得到,img的标签主要对应的是HTMLImage方面的内容,在html的目录下找到了这两个文件。HTMLImageLoader与HTMLImageElement
分析还是从我们熟悉的堆栈开始:
void ImageLoader::updateFromElement(){    ....    //重要:获取 src属性的值    AtomicString attr = client()->sourceElement()->getAttribute(client()->sourceElement()->imageSourceAttributeName());   ...    // Do not load any image if the 'src' attribute is missing or if it is    // an empty string.    CachedResourceHandle<CachedImage> newImage = 0;    if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) {        //重要:根据url(attr的值),创建一个request,通过该request获取图片        CachedResourceRequest request(ResourceRequest(document()->completeURL(sourceURI(attr))));        request.setInitiator(client()->sourceElement());      .....        if (m_loadManually) {            bool autoLoadOtherImages = document()->cachedResourceLoader()->autoLoadImages();           <strong> </strong>document()->cachedResourceLoader()->setAutoLoadImages(false);            newImage = new CachedImage(request.resourceRequest()); //创建image对象            newImage->setLoading(true);            newImage->setOwningCachedResourceLoader(document()->cachedResourceLoader());            document()->cachedResourceLoader()->m_documentResources.set(newImage->url(), newImage.get());            document()->cachedResourceLoader()->setAutoLoadImages(autoLoadOtherImages);        } else            newImage = document()->cachedResourceLoader()->requestImage(request); //直接获取一个cached的image对象       ....}



这篇文章的分析就到此结束,大致讲述了一个img文件的加载过程。


当然,加载之后的处理是非常非常复杂的,接下来会继续进行分析。

热点排行