webkit加载

关于webkit加载的文章网上很多,各种类型、各种角度的都有,有的说的很细。我的体会是,光看那些文章收获不大,可能看看就忘了。想要理解或记住些东西还是得亲自跟踪调试一下才行。
可以先通过浏览一些文档来建立一个基本的概念,比一来就跟代码要好。

大概的流程是这样的,请求一个资源一般包括如下步骤:
1 创建一请求,涉及到的类主要有:ResourceRequest, ResourceRequestBase
2 创建一个loader,涉及到的类主要有: CachedResourceLoader
3 调用RequestResource, LoadResource, Load开始加载, 这个过程中会查询资源是否已经在MemoryCache中,还会做一些  安全性检查,或者广告    过滤之类的,不符合规则的,就不进行加载。
4 创建代表该资源的对象,涉及到的类主要有:CachedResource
    实际的加载又交给资源对象,通过调用load()完成
5 接着把加载任务交给调度器,调度器会按优先级进行调度。涉及到的类主要有:ResourceLoadScheduler
6 调度到之后,调度器把加载请求交给ResourceLoad完成
7 ResourceLoad会创建ResourceHandle
8 ResourceHandle会调用平台相关的实现来完成加载任务
9 下面就是发送网络请求了,具体的过程不同的平台差别很大
10 数据到达后,通过各种回调最终通知到发起加载请求的类

如何跟踪加载流程?
首先需要编译debug版,然后通过gdb(ndk-gdb)调试
与Android浏览器调试为例,可能是如下步骤:
1 ndk-gdb --force --start,启动调试
2 设置断点,b ResourceHandle.cpp:132,具体可查阅gdb调试命令
3 断点设置好后,按c继续执行
4 程序遇到断点中断,输入bt打印调用堆栈
转GDB调用堆栈到流程图谈到如何把把文本调用堆栈图形化,很强大,从此再也不用担心看不懂调用堆栈了。
如下所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值